ฉันใช้ Powershell ใน Windows 7 วิธีกำหนดค่า Powershell เพื่อให้แสดงเฉพาะชื่อโฟลเดอร์ปัจจุบัน (แทนที่จะเป็นพา ธ เต็ม) ในเชลล์พรอมต์?
ตัวอย่างเช่นแทนที่จะฉันต้องการC:\folder\directory\name>
name>
ฉันใช้ Powershell ใน Windows 7 วิธีกำหนดค่า Powershell เพื่อให้แสดงเฉพาะชื่อโฟลเดอร์ปัจจุบัน (แทนที่จะเป็นพา ธ เต็ม) ในเชลล์พรอมต์?
ตัวอย่างเช่นแทนที่จะฉันต้องการC:\folder\directory\name>
name>
คำตอบ:
คุณต้องกำหนดฟังก์ชั่นพรอมต์ในโปรไฟล์ PowerShell ของคุณ ( %userprofile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
); อาจว่างเปล่าหรือไม่มีอยู่หากคุณไม่เคยแก้ไขมาก่อน
เปิดโปรไฟล์ของคุณ (เช่นเปิดไฟล์ดังกล่าวหรือขณะที่อยู่ใน PowerShell Notepad $profile
)
เพิ่มสิ่งต่อไปนี้ในโปรไฟล์ของคุณ:
function prompt {
$p = Split-Path -leaf -path (Get-Location)
"$p> "
}
บันทึกโปรไฟล์
เริ่ม PowerShell ใหม่
ไม่จำเป็น หากคุณได้รับข้อความที่ระบุว่าคุณไม่ได้รับอนุญาตให้เรียกใช้สคริปต์คุณต้องคัดลอก / วางบรรทัดนี้ใน PowerShell:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
และรีสตาร์ท
นโยบายการดำเนินการ Windows PowerShell ช่วยให้คุณกำหนดเงื่อนไขภายใต้ Windows PowerShell ที่โหลดไฟล์การกำหนดค่าและเรียกใช้สคริปต์
คุณสามารถตั้งค่านโยบายการดำเนินการสำหรับคอมพิวเตอร์เฉพาะที่สำหรับผู้ใช้ปัจจุบันหรือสำหรับเซสชันเฉพาะ คุณยังสามารถใช้การตั้งค่านโยบายกลุ่มเพื่อกำหนดนโยบายการดำเนินการสำหรับคอมพิวเตอร์และผู้ใช้
ที่มา: เอกสาร Microsoft
GetCurrentDirectory
แต่ผมจะใช้รับตำแหน่งแทน โปรดจำไว้ว่า PowerShell ไม่ได้หมายถึงระบบไฟล์เสมอไป ใช้สแนปอินรีจิสทรีฉันสามารถใช้cd hkcu:
และตอนนี้พรอมต์จะถูกปิดโดยสิ้นเชิง
$PWD
แทนการโทรGet-Location
ได้ เช่นfunction prompt { (Split-Path -Leaf $pwd) + '> ' }
prompt
ในไฟล์โปรไฟล์ของคุณ มันจะต้องอยู่ในขอบเขตเซสชันทั่วโลก เริ่มต้นดูเหมือนว่าเทียบเท่ากับfunction prompt {"PS " + (Get-Location) + ">"}
ในขณะที่ช่วยให้เช่นเดียวกับfunction prompt {""}
function prompt {"PS>"}
ใช้function prompt {" `b"}
เพื่อรับพรอมต์ที่ว่างเปล่า (อย่างน้อยก็ด้วยสายตา ... )
ในฐานะโน้ตเพิ่มเติมฉันไม่สามารถทำคำสั่งของ @ Synetech จนกว่าฉันจะสร้างโปรไฟล์ $ ครั้งแรก
พิมพ์$profile
และกด Enter สิ่งนี้จะแสดงเส้นทางโปรไฟล์ PowerShell ที่ต้องใช้แม้ว่าจะไม่มีอยู่ (ไม่ใช่สำหรับฉัน) เส้นทางของฉันแตกต่างจากที่ @Synetech โพสต์ไว้ด้านบน
>$profile
C:\Users\[username]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
ฉันต้องสร้างทั้งโฟลเดอร์ WindowsPowerShell และไฟล์ Microsoft.PowerShell_profile.ps1
บันทึก:
หากคุณใช้ posh-git (ซึ่งติดตั้งเมื่อใช้เดสก์ท็อป GitHub) สคริปต์ของ @ Synetech จะแทนที่พรอมต์ posh-git สคริปต์พรอมต์เพิ่มเติมสำหรับหรู-คอมไพล์ที่นี่
%userprofile%
ขยายไปที่C:\Users\[username]
$Env:userprofile
เทียบเท่ากับecho %userprofile%
เปลี่ยนพรอมต์เพื่อแสดงโฟลเดอร์ปัจจุบันที่ไม่มีเส้นทางแบบเต็มและใหญ่กว่าสัญลักษณ์ที่ส่วนท้าย:
วิธีหนึ่งอาจเป็น:
Function Prompt { "$( ( get-item $pwd ).Name )>" }
หรือ:
Function Prompt { "$( Split-Path -leaf -path (Get-Location) )>" }
หรือ:
Function Prompt { "$( ( Get-Location | Get-Item ).Name )>" }
\\myserver\my\path
แยกเส้นทางจะไม่ทำงานอย่างถูกต้องบนเส้นทางเช่น
ผมพบว่าเรื่องนี้เป็นเรื่องง่ายสวย - รวม @ คำตอบ Synetech และข้อมูลที่พบในโปรไฟล์ PowerShell เพราะฉันเป็นมือใหม่สำหรับ PS ขั้นตอนของฉัน (สำหรับ vscode):
วางใน
function prompt {
$p = Split-Path -leaf -path (Get-Location)
"$p> "
}
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser (ที่พรอมต์ PS ของคุณจากคำตอบ SuperUse)
โหลด vscode อีกครั้ง
ดังนั้นคำตอบของ @ Synetech ส่วนใหญ่ (upvoted) ที่มีการเริ่มต้นง่าย ๆ โดยเฉพาะขั้นตอนที่ 2 ทำให้ง่ายมาก
บรรทัดเดียวด้านล่างใช้งานได้ดีสำหรับฉัน
(รับที่ตั้ง | รับรายการ). ชื่อ
[System.IO.Directory]::GetCurrentDirectory()
ไม่ได้แสดงตำแหน่งปัจจุบันของ powershell แต่เป็นไดเรกทอรีการทำงานของกระบวนการซึ่งไม่เหมือนกันเสมอไป แทนที่ด้วยGet-Location