Respostas:
Aqui está uma maneira de fazer isso, com a ajuda de um ícone adicional na área de trabalho. Eu acho que você poderia mover o script para outra pessoa, se quisesse ter apenas um ícone na área de trabalho.
Agora você pode executar o script elevado clicando duas vezes no novo atalho na área de trabalho.
script.ps1
obras, assim como um atalho para powershell.exe -f script.ps1
, mas o último pode ser configurado para executar como administrador (ver powershell.exe /?
pela explicação do -f
ou -File
switch)
Nos sistemas habilitados para UAC, para garantir que um script esteja sendo executado com privilégios totais de administrador, adicione este código no início do seu 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'
ao executar seu script com a opção -elevated, ele tentará elevar privilégios antes de executar.
param(...)
na parte superior e encaminhe-os imediatamente antes -elevated
, você precisará ser inteligente sobre como criar o ArgumentList
, provavelmente desejará usar o String[]
formulário.
se você estiver no mesmo PowerShell, poderá fazer o seguinte:
Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
C:\Windows\System32
. Uma alternativa que preserva o diretório atual: stackoverflow.com/a/57033941/2441655
Como está na área de trabalho, eu diria que a maneira mais fácil de fazer isso é arrastá-la para o gadget de elevação .
Caso contrário, você poderá criar um script separado usando o elevate
comando no seu script ps1.
Ou, você pode aplicar elevate
apenas ao bit de inicialização do serviço.
O PowerShell ISE vive em% windir% \ system32 \ WindowsPowerShell \ v1.0 \ PowerShell_ISE.exe. Você pode clicar com o botão direito do mouse e selecionar "Executar como administrador" e executar o script a partir daí.
Você também pode encontrá-lo no logotipo do Windows> Todos os programas> Acessórios> Windows PowerShell e fazer o mesmo com esses atalhos.
Se você deseja uma opção para iniciar um script do Powershell como administrador, diretamente no menu de contexto do Explorer, consulte a seção 2 da minha resposta aqui: https://stackoverflow.com/a/57033941/2441655
Adicione isso ao início do 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
em frente ao caminho do script, de modo a "completa" o comando ...