A questa mancanza è possibile sopperire aggiungendo allo script il seguente codice pubblicato sullo Script Center di Microsoft:
function Use-RunAs
{
# Check if script is running as Adminstrator and if not use RunAs
# Use Check Switch to check if admin
param([Switch]$Check)
$IsAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()`
).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
if ($Check) { return $IsAdmin }
if ($MyInvocation.ScriptName -ne "")
{
if (-not $IsAdmin)
{
try
{
$arg = "-file `"$($MyInvocation.ScriptName)`""
Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList $arg -ErrorAction 'stop'
}
catch
{
Write-Warning "Error - Failed to restart script with runas"
break
}
exit # Quit this session of powershell
}
}
else
{
Write-Warning "Error - Script must be saved as a .ps1 file first"
break
}
}
La function, che va richiamata prima di eseguire altre operazioni, non fa altro che verificare se lo script è stato eseguito in una console con i permessi di amministratore e, in caso contrario, provvede autonomamente a rilanciarlo con i permessi elevati.
Se non è stato fatto il login con un utenza amministrativa verranno richieste le credenziali.
![]() |
| FIG 1 - PowerShell, Esecuzione script con privilegi elevati |
Dal seguente link è possibile scaricare lo script di esempio
DOWNLOAD




![Offline NT Password & Registry Editor, Password reset [sam] Offline NT Password & Registry Editor, Password reset [sam]](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVgAVpT8FIm8b-7KRODCmYqnG0aGO_2TAqCxF-3nJQzcrkYjTJuIFuKVulRmlqNM2Uk1ULIPXAYkNN1RoptP1Q1LePb0iY1U4T0ySi_Xp6M7AZJL9wwR2hAsxnX9MsiYV-EiyEWe3DLg/s1600/Offline+NT+Password+%2526+Registry+Editor-password+reset.png)







