Sử dụng Windows PowerShell, làm cách nào để thay đổi dấu nhắc lệnh?
Ví dụ: lời nhắc mặc định cho biết
PS C:\Documents and Settings\govendes\My Documents>
Tôi muốn tùy chỉnh chuỗi đó.
Câu trả lời:
Chỉ cần đặt hàm prompt
trong hồ sơ PowerShell của bạn ( notepad $PROFILE
), ví dụ:
function prompt {"PS: $(get-date)>"}
hoặc màu:
function prompt
{
Write-Host ("PS " + $(get-date) +">") -nonewline -foregroundcolor White
return " "
}
new-item -itemtype file -path $profile -force
Set-ExecutionPolicy RemoteSigned
.
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
nếu bạn chỉ muốn thay đổi cho người dùng hiện tại hoặc không thể chạy với tư cách quản trị viên.
Liên quan đến nhận xét cho câu trả lời của Ocaso Protal , phần sau là cần thiết cho Windows Server 2012 cũng như Windows 7 (trong cửa sổ PowerShell):
new-item -itemtype file -path $profile -force
notepad $PROFILE
Tôi sẽ đề xuất những điều sau như một lời nhắc nếu bạn chạy với nhiều tên người dùng (ví dụ: chính bạn + đăng nhập sản xuất):
function Global:prompt {"PS [$Env:username]$PWD`n>"}
(Tín dụng thuộc về David I. McIntosh cho cái này.)
Set-ExecutionPolicy RemoteSigned
.
Tại dấu nhắc, tôi thích một dấu thời gian hiện tại và các ký tự ổ đĩa đã được giải quyết cho các ổ đĩa mạng. Để làm cho nó dễ đọc hơn, tôi đặt nó thành hai dòng và chơi một chút với màu sắc.
Với CMD, tôi đã kết thúc với
PROMPT=$E[33m$D$T$H$H$H$S$E[37m$M$_$E[1m$P$G
Đối với PowerShell, tôi nhận được kết quả tương tự với:
function prompt {
$dateTime = get-date -Format "dd.MM.yyyy HH:mm:ss"
$currentDirectory = $(Get-Location)
$UncRoot = $currentDirectory.Drive.DisplayRoot
write-host "$dateTime" -NoNewline -ForegroundColor White
write-host " $UncRoot" -ForegroundColor Gray
# Convert-Path needed for pure UNC-locations
write-host "PS $(Convert-Path $currentDirectory)>" -NoNewline -ForegroundColor Yellow
return " "
}
Cái nào dễ đọc hơn một chút :-)
BTW:
powershell_ise.exe $PROFILE
thay vì (câm) Notepad .Nếu bạn muốn tự mình làm điều đó, thì câu trả lời của Ocaso Protal là con đường để đi. Nhưng nếu bạn lười biếng như tôi và chỉ muốn một cái gì đó làm cho bạn, thì tôi thực sự khuyên bạn nên dùng gói Pshazz của Luke Sampson .
Để cho bạn thấy bạn có thể lười đến mức nào, tôi sẽ cung cấp một hướng dẫn nhanh.
scoop install pshazz
)pshazz use msys
)Pshazz cũng cho phép bạn tạo các chủ đề của riêng mình, đơn giản như định cấu hình tệp JSON. Kiểm tra của tôi để xem nó dễ dàng như thế nào!
Để chỉ hiển thị ký tự ổ đĩa tôi sử dụng:
function prompt {(get-location).drive.name+"\...>"}
Sau đó, để hoàn nguyên về đường dẫn tôi sử dụng:
function prompt {"$pwd>"}
Phiên bản câu trả lời này của Warren Stevens tránh "Microsoft.PowerShell.Core \ FileSystem" ồn ào trong đường dẫn nếu bạn Set-Location
chia sẻ mạng.
function prompt {"PS [$Env:username@$Env:computername]$($PWD.ProviderPath)`n> "}
notepad $PROFILE
không hoạt động trong Windows 7 từ lời nhắc quyền hạn của quản trị viên