私のWindows Vistaマシンには1つのアカウントしかなく、そのユーザーには管理者特権があります。しかし、PowerShell内でコマンドを実行して特定のプロセスを強制終了しようとすると、「アクセスが拒否されました」というメッセージが表示されます。管理者になるにはどうすればよいですか?
これを行う最も簡単な方法は、管理トークンを使用してPowershellを起動することです。これを行うには、Powershell(またはそのショートカット)を右クリックして、[管理者として実行]をクリックします。または、 elevate.cmd を使用できます。
Powershell v2の方法 Microsoftによる は、ショートカットを右クリックして管理者として実行を選択することです。
そして、Powershellウィンドウ内で昇格するには:
start-process powershell –verb runAs
Cmd.exeバッチファイル、ショートカット、または実行行から、次のようになります(繰り返し)。
powershell "start-process powershell -verb runas"
これにより、新しい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インスタンスに存在するので、そこでハッキングできます。
always管理者権限でPowerShellを実行する場合は、PowerShellショートカットを右クリックして、[ショートカット]タブの[詳細...]ボタンをクリックし、[管理者として実行]を選択します。 」.
簡単な方法...
これは、PowerShellセッションからいつでも管理者権限を取得するための簡単なコマンドを設定する方法です!
ステップ1:PowerShellプロファイルを開きます。 (ファイルがない場合は、メモ帳でファイルを作成できるようにします。)
notepad "$profile"
手順2:次のコードをそのファイルの任意の場所に貼り付けます。 (実行するPowerShellのバージョンに基づいて選択します。プロファイルはバージョン固有であるため、PowerShellのバージョンを並行して実行すると、PowerShellのバージョンごとにこれを実行できます)。
# PowerShell 5
function GoAdmin { Start-Process PowerShell –Verb RunAs }
# PowerShell Core
function GoAdmin { Start-Process pwsh –Verb RunAs }
手順3:PowerShellを再起動します。コマンドが永続的に使用できるようになりました。
ステップ4:管理者になりたいときはいつでも、GoAdmin
と入力するだけです(大文字と小文字を正しく入力する必要はありません。PS関数は実際には大文字と小文字を区別しません)。もちろん、Elevate
などの関数に名前を付けることもできますが、競合のリスクを避けたいので、PowerShellの機能と競合しないように、ハイフンなしの2語のフレーズに名前を付けました。
管理者ウィンドウが別のシェルで開くことに注意してください。元のシェルを閉じるか、開いたままにすることができます。管理作業が環境変数の追加/変更などの「大きな」作業を行う場合、ユーザーシェル(非管理者)は単にrefreshenv
と入力してその環境を再読み込みし、変更を取得できます。 (編集:refreshenv
がすばらしい Chocolatey パッケージマネージャーによって提供されていることがわかりました。タイプUpdate-SessionEnvironment
チョコレートがない場合は、代わりに使用してください。)
したがって、基本的には、GoAdmin
だけで、パッケージのインストールなどの管理作業を行い( https://chocolatey.org/ はもちろん!)、管理ウィンドウを閉じて、ユーザーシェルでrefreshenv
を実行します!出来上がり。