Respuestas:
Aquí hay una forma de hacerlo, con la ayuda de un icono adicional en su escritorio. Supongo que podría mover el script a otra persona si solo quisiera tener un solo icono en su escritorio.
Ahora puede ejecutar la secuencia de comandos elevada haciendo doble clic en el nuevo acceso directo en su escritorio.
script.ps1
obras, al igual que un acceso directo a powershell.exe -f script.ps1
, pero este último se puede configurar para que se ejecute como administrador (consulte powershell.exe /?
la explicación del interruptor -f
o -File
)
En los sistemas habilitados para UAC, para asegurarse de que un script se esté ejecutando con todos los privilegios de administrador, agregue este código al comienzo del 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'
cuando ejecute su script con el modificador elevado, intentará elevar los privilegios antes de ejecutarlo.
param(...)
parte superior y reenvíelos justo antes -elevated
, deberá ser inteligente sobre cómo crear el ArgumentList
, probablemente querrá usar el String[]
formulario.
Si estás en el mismo PowerShell, puedes hacer esto:
Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
C:\Windows\System32
. Una alternativa que conserva el directorio actual: stackoverflow.com/a/57033941/2441655
Dado que está sentado en su escritorio, diría que la forma más fácil de hacer esto es arrastrarlo al gadget de elevación .
De lo contrario, podría hacer un script por separado utilizando el elevate
comando en su script ps1.
O bien, puede aplicar elevate
solo al bit de inicio del servicio.
PowerShell ISE vive en% windir% \ system32 \ WindowsPowerShell \ v1.0 \ PowerShell_ISE.exe. Puede hacer clic derecho en eso y seleccionar "Ejecutar como administrador" y ejecutar el script desde allí.
También puede encontrarlo bajo el logotipo de Windows> Todos los programas> Accesorios> Windows PowerShell y hacer lo mismo con esos accesos directos.
Si desea una opción para iniciar un script de Powershell como administrador, directamente desde el menú contextual del Explorador, consulte la sección 2 de mi respuesta aquí: https://stackoverflow.com/a/57033941/2441655
Agregue esto al comienzo del 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
delante de la ruta del script, con el fin de "completo" el comando ...