Risposte:
Ecco un modo per farlo, con l'aiuto di un'icona aggiuntiva sul desktop. Immagino che potresti spostare lo script qualcun altro se volessi avere solo una singola icona sul desktop.
Ora puoi eseguire lo script elevato semplicemente facendo doppio clic sul nuovo collegamento sul desktop.
script.ps1
funzionare, così come una scorciatoia per powershell.exe -f script.ps1
, ma quest'ultima può essere impostata per essere eseguita come amministratore (vedere powershell.exe /?
per la spiegazione -f
-File
Sui sistemi abilitati UAC, per assicurarsi che uno script sia in esecuzione con privilegi di amministratore completi, aggiungere questo codice all'inizio dello script:
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'
quando si esegue lo script con l'opzione -elevated, tenterà di elevare i privilegi prima di eseguirlo.
param(...)
alto e inoltralo prima -elevated
, dovrai essere intelligente su come costruisci il ArgumentList
, probabilmente vorrai usare il String[]
modulo.
se ti trovi nella stessa powerhell puoi farlo:
Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
C:\Windows\System32
. Un'alternativa che conserva la directory corrente: stackoverflow.com/a/57033941/2441655
Dal momento che è seduto sul desktop, direi che il modo più semplice per farlo è trascinarlo sul gadget di elevazione .
Altrimenti potresti creare uno script separato usando il elevate
comando sul tuo script ps1.
In alternativa, è possibile applicare elevate
solo al bit di avvio del servizio.
PowerShell ISE è attivo su% windir% \ system32 \ WindowsPowerShell \ v1.0 \ PowerShell_ISE.exe. Puoi fare clic con il tasto destro del mouse e selezionare "Esegui come amministratore" ed eseguire lo script da lì.
Puoi anche trovarlo sotto il Logo di Windows> Tutti i programmi> Accessori> Windows PowerShell e fare la stessa cosa con quelle scorciatoie.
Se si desidera un'opzione per avviare uno script Powershell come amministratore, direttamente dal menu di scelta rapida di Explorer, vedere la sezione 2 della mia risposta qui: https://stackoverflow.com/a/57033941/2441655
Aggiungi questo all'inizio dello script:
$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
davanti al percorso dello script, in modo da "completare" il comando ...