Odpowiedzi:
Oto jeden ze sposobów na zrobienie tego za pomocą dodatkowej ikony na pulpicie. Sądzę, że możesz przenieść skrypt komuś innemu, jeśli chcesz mieć tylko jedną ikonę na pulpicie.
Teraz możesz uruchomić skrypt z podwyższonym poziomem uprawnień, klikając dwukrotnie nowy skrót na pulpicie.
script.ps1
działa, podobnie jak skrót do powershell.exe -f script.ps1
, ale ten ostatni można ustawić tak, aby działał jako administrator (zobacz powershell.exe /?
wyjaśnienie dotyczące przełącznika -f
lub -File
przełącznika)
W systemach obsługujących UAC, aby upewnić się, że skrypt działa z pełnymi uprawnieniami administratora, dodaj ten kod na początku skryptu:
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'
podczas uruchamiania skryptu z przełącznikiem -elevated, spróbuje on podnieść uprawnienia przed uruchomieniem.
param(...)
góry i prześlij dalej -elevated
, musisz być sprytny, jak zbudować ArgumentList
, prawdopodobnie będziesz chciał użyć String[]
formularza.
jeśli jesteś w tej samej PowerShell, możesz to zrobić:
Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
C:\Windows\System32
. Alternatywa, która zachowuje bieżący katalog: stackoverflow.com/a/57033941/2441655
Ponieważ siedzi na pulpicie, powiedziałbym, że najłatwiejszym sposobem na zrobienie tego jest przeciągnięcie go na gadżet elewacji .
W przeciwnym razie możesz utworzyć osobny skrypt za pomocą elevate
polecenia skryptu ps1.
Lub możesz zastosować elevate
tylko do bitu początkowego usługi.
PowerShell ISE mieszka w% windir% \ system32 \ WindowsPowerShell \ v1.0 \ PowerShell_ISE.exe. Możesz kliknąć to prawym przyciskiem myszy, wybrać „Uruchom jako administrator” i uruchomić skrypt.
Można go również znaleźć pod logo Windows> Wszystkie programy> Akcesoria> Windows PowerShell i zrobić to samo z tymi skrótami.
Jeśli chcesz uruchomić skrypt Powershell jako administrator, bezpośrednio z menu kontekstowego Eksploratora, zobacz sekcję 2 mojej odpowiedzi tutaj: https://stackoverflow.com/a/57033941/2441655
Dodaj to na początku skryptu:
$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
przed ścieżką skryptu, aby „ukończyć” polecenie…