web-dev-qa-db-ja.com

管理者としてPowerShellスクリプトを実行する方法

私のWindows 7デスクトップには、管理者権限が必要なscript.ps1があります(サービスを開始します)。このスクリプトをクリックして、管理者権限で実行します。

これを達成するための最も簡単な方法は何ですか?

54
Sajee

これを実行する1つの方法は、デスクトップ上の追加のアイコンを使用することです。デスクトップにアイコンを1つだけ表示したい場合は、スクリプトを他の人に移動させることができます。

  1. デスクトップにPowershellスクリプトへのショートカットを作成します。
  2. ショートカットを右クリックして、プロパティをクリックします。
  3. ショートカットタブをクリック
  4. クリック詳細設定
  5. 管理者として実行を選択

デスクトップ上の新しいショートカットをダブルクリックするだけでスクリプトを昇格させることができます。

45
Kez

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スイッチを付けて実行すると、実行前に特権の昇格を試みます。

16
MDMoore313

同じPowerShellを使用している場合は、次のようにします。

Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
13
mjsr

デスクトップにあるので、これを実現するための最も簡単な方法は、 標高ガジェット にドラッグすることです。

そうでなければ、あなたのps1スクリプトで elevateコマンド を使って別のスクリプトを作ることができます。

あるいは、サービス開始ビットだけにelevateを適用することもできます。

4
badp

PowerShell ISEは%windir%\ system32\WindowsPowerShell\v1.0\PowerShell_ISE.exeにあります。それを右クリックして「管理者として実行」を選択し、そこからスクリプトを実行できます。

Windowsロゴ>すべてのプログラム>アクセサリ> Windows PowerShellの下にそれを見つけることができ、それらのショートカットで同じことをすることができます。

1
vapcguy

Explorerのコンテキストメニューから直接、管理者としてPowershellスクリプトを起動するオプションが必要な場合は、こちらの回答のセクション2を参照してください: https://stackoverflow.com/a/57033941/2441655

0
Venryx