回答:
これを行う最も簡単な方法は、管理トークンを使用してPowershellを起動することです。これを行うには、Powershell(またはそのショートカット)を右クリックし、「管理者として実行」をクリックします。または、elevate.cmdを使用できます。
これにより、新しいPowerShellインスタンスが開きます。
function Run-Elevated ($scriptblock)
{
# TODO: make -NoExit a parameter
# TODO: just open PS (no -Command parameter) if $scriptblock -eq ''
$sh = new-object -com 'Shell.Application'
$sh.ShellExecute('powershell', "-NoExit -Command $scriptblock", '', 'runas')
}
これには問題があると思います-特に、呼び出し元のスクリプトでスクリプトブロックの出力を取得することはできません。一方で、新しいPSインスタンスにあるので、そこでハッキングできます。
あなたがしたい場合は、必ず管理者privelegesでPowerShellを実行して、あなたはその後、その後、「ショートカット」タブの「詳細設定」ボタンをクリックして「管理者として実行」を選択し、PowerShellのショートカットを右クリックすることができます。
簡単な方法...
これは簡単なコマンドを設定する方法です、PowerShellセッションからいつでも管理者権限を取得です。
ステップ1:PowerShellプロファイルを開きます。(ファイルがない場合は、メモ帳でファイルを作成できます。)
notepad "$profile"
手順2:次のコードをそのファイルの任意の場所に貼り付けます。
function GoAdmin { start-process powershell –verb runAs }
ステップ3:PowerShellを再起動します。これで、コマンドは永続的に使用可能になりました。
ステップ4:管理者になりたいときはいつでもGoAdmin
入力するだけです(正しい大文字小文字の入力を心配しないでください。PS関数は実際には大文字小文字を区別しません)。もちろん、関数に別の名前を付けることもできますが、Elevate
競合のリスクは避けたいので、PowerShellの機能と競合しないように、ハイフンのない2単語フレーズに名前を付けました。
管理者ウィンドウが別のシェルで開くことに注意してください。元のシェルを閉じるか、開いたままにすることができます。管理者の作業が環境変数の追加/変更などの「大きな」ことを行う場合、ユーザーシェル(非管理者)は単純に入力refreshenv
して環境をリロードし、変更を取得できます。
したがって、基本的には、GoAdmin
パッケージのインストールなどの管理作業を行います(もちろんhttps://chocolatey.org/を使用)、管理ウィンドウを閉じrefreshenv
てユーザーシェルで実行します。出来上がり。