1. ホーム
  2. windows

[解決済み] Windowsのpowershellでsudoする方法

2022-03-02 02:17:37

質問

powershell スクリプトを実行する必要があるときはいつも、セキュリティの問題を訴えます。 powershell.exe -nologo -executionpolicy bypass -File .\install.ps1 それでもunauthorizedAccessExceptionが発生し、パーミッションが拒否されます。このインストールスクリプトを実行したいだけなのですが、Windowsのpowershellに入力するsudoに相当するものは何ですか?

解決方法は?

<上 注意事項 : を追加したい場合 汎用 , プリパッケージ sudo -のような機能をPowerShellに追加することを検討します。
Enter-AdminPSSession ( psa ) 関数から このGist の一番下のセクションで説明した この回答 .

を実行している場合 既にPowerShellから を使用します。 Start-Process -Verb RunAs を以下のように設定します。

Start-Process -Verb RunAs powershell.exe -Args "-executionpolicy bypass -command Set-Location \`"$PWD\`"; .\install.ps1"

  • スクリプトは必ず 新しいウィンドウ .
  • 新しいウィンドウの作業ディレクトリは常に $env:windir\System32 , a Set-Location の呼び出しで、呼び出し元の作業ディレクトリに切り替わります( $PWD が前置されます。
    • なお、PowerShell(Core)7+では、( pwsh.exe ) これはもはや必要ありません。なぜなら、呼び出し元の現在地が継承されるからです。
  • 実行する Set-Location を使用する必要があります。 -Command の代わりに -File .
    • プラス面では、これによって -nologo .
    • 一般的な注意点としては -Command は、スクリプトに渡された引数の解釈方法を変更することができます (この例では何もありません)。 -File は、それらをリテラルとして扱います。

からの発信の場合 PowerShell の外部で で、通常は cmd.exe / バッチファイル が必要です。 で囲みます。 を外部に呼び出す。 powershell.exe ということで、残念ながら引用という点ではややこしいことになります。

powershell.exe -command "Start-Process -Verb RunAs powershell.exe -Args '-executionpolicy bypass -command', \"Set-Location `\"$PWD`\"; .\install.ps1\""


インタラクティブ は、もちろん可能です。

  • PowerShell のショートカット(タスクバー、スタートメニュー、またはデスクトップ)を右クリックし、次のコマンドを選択します。 Run as Administrator を実行して、管理者権限で実行するPowerShellウィンドウを開き、次のように実行します。 .\install.ps1 をクリックします。

  • または、既存のPowerShellウィンドウから、ランアスアドミンウィンドウを開いて Start-Process -Verb RunAs powershell.exe のように AdminOfThingsの回答 .