Câu trả lời:
Đây là một cách để làm điều đó, với sự trợ giúp của một biểu tượng bổ sung trên máy tính để bàn của bạn. Tôi đoán bạn có thể di chuyển tập lệnh của người khác nếu bạn chỉ muốn có một biểu tượng duy nhất trên máy tính để bàn của mình.
Bây giờ bạn có thể chạy tập lệnh nâng cao bằng cách nhấp đúp vào phím tắt mới trên màn hình của bạn.
script.ps1
hoạt động, cũng như một phím tắt powershell.exe -f script.ps1
, nhưng cái sau có thể được thiết lập để chạy với tư cách quản trị viên (xem powershell.exe /?
phần giải thích về -f
hoặc -File
chuyển đổi)
Trên các hệ thống hỗ trợ UAC, để đảm bảo tập lệnh đang chạy với đầy đủ quyền quản trị viên, hãy thêm mã này vào đầu tập lệnh của bạn:
param([switch]$Elevated)
function Test-Admin {
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
if ((Test-Admin) -eq $false) {
if ($elevated)
{
# tried to elevate, did not work, aborting
}
else {
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
}
exit
}
'running with full privileges'
khi chạy tập lệnh của bạn với khóa chuyển đổi, nó sẽ cố gắng nâng cao các đặc quyền trước khi chạy.
param(...)
đầu và chuyển tiếp chúng ngay trước đó -elevated
, bạn sẽ cần khéo léo về cách bạn xây dựng ArgumentList
, có thể sẽ muốn sử dụng String[]
biểu mẫu.
nếu bạn ở cùng quyền hạn, bạn có thể làm điều này:
Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
C:\Windows\System32
. Một thay thế bảo tồn thư mục hiện tại: stackoverflow.com/a/57033941/2441655
Vì nó đang ngồi trên máy tính để bàn của bạn, tôi muốn nói rằng cách dễ dàng nhất để thực hiện điều này là kéo nó vào tiện ích độ cao .
Nếu không, bạn có thể làm cho một kịch bản riêng biệt sử dụng các elevate
lệnh trên kịch bản ps1 của bạn.
Hoặc, bạn có thể elevate
chỉ áp dụng cho bit bắt đầu dịch vụ.
PowerShell ISE sống ở% Windir% \ system32 \ WindowsPowerShell \ v1.0 \ PowerShell_ISE.exe. Bạn có thể nhấp chuột phải vào đó và chọn "Chạy với tư cách quản trị viên" và chạy tập lệnh từ đó.
Bạn cũng có thể tìm thấy nó trong Logo Windows> Tất cả chương trình> Phụ kiện> Windows PowerShell và làm điều tương tự với các phím tắt đó.
Nếu bạn muốn có tùy chọn để khởi chạy tập lệnh Powershell với tư cách quản trị viên, trực tiếp từ menu ngữ cảnh Explorer, hãy xem phần 2 trong câu trả lời của tôi tại đây: https://stackoverflow.com/a/57033941/2441655
Thêm phần này vào phần đầu của tập lệnh:
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$testadmin = $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
if ($testadmin -eq $false) {
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
exit $LASTEXITCODE
}
powershell -f
vào trước đường dẫn kịch bản, để "hoàn thành" lệnh Lệnh