回答:
デスクトップの追加アイコンを使用して、これを行う1つの方法を示します。デスクトップにアイコンを1つだけにしたい場合は、スクリプトを他の人に移動できると思います。
これで、デスクトップ上の新しいショートカットをダブルクリックするだけで、昇格したスクリプトを実行できます。
script.ps1
同様に機能しますpowershell.exe -f script.ps1
が、後者は管理者として実行するように設定できます(or スイッチのpowershell.exe /?
説明を参照)-f
-File
UAC対応システムでは、スクリプトが完全な管理者権限で実行されていることを確認するには、スクリプトの先頭に次のコードを追加します。
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'
-elevatedスイッチを使用してスクリプトを実行すると、実行前に特権の昇格が試行されます。
param(...)
一番上に追加し、直前-elevated
に転送します。ArgumentList
おそらく、String[]
フォームの使用方法を構築する方法について賢くする必要があります。
同じPowershellを使用している場合、これを行うことができます:
Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
C:\Windows\System32
です。現在のディレクトリを保持する代替手段:stackoverflow.com/a/57033941/2441655
デスクトップに座っているので、これを行う最も簡単な方法は、エレベーションガジェットにドラッグすることです。
それ以外の場合は、ps1スクリプトでコマンドを使用してelevate
別のスクリプトを作成できます。
または、elevate
サービス開始ビットにのみ適用できます。
Explorerのコンテキストメニューから直接、管理者としてPowershellスクリプトを起動するオプションが必要な場合は、https://stackoverflow.com/a/57033941/2441655の回答のセクション2を参照してください。
これをスクリプトの先頭に追加します。
$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