LoginSignup
1
1

More than 1 year has passed since last update.

カレントディレクトリで管理者権限でPowerShellを開く1行

Last updated at Posted at 2022-02-23

はじめに

管理者権限でPowerShellを開くと、意図しないフォルダがカレントディレクトリになってしまい不便でした。「カレントディレクトリで管理者権限でPowerShellを開く」という動作が、初心者でも覚えられるレベルで、1行で実現できたので、メモを残します。

前提

  • コマンドラインで作業していて管理者権限が必要だとわかった時点で使う
  • 環境を引き継いで管理者権限での作業を行いたい
  • 新たなウィンドウが開いても良い
  • 特別な設定が必要ない
    • このページからの1行コピペで実現できる

コード

PowerShellから

$cd=(pwd).path; Start-Process powershell -ArgumentList "-NoExit cd $cd" -Verb RunAs

省略形:

$cd=(pwd).path; start powershell -a "-noe cd $cd" -v runas

コマンドシェル(cmd)から

@powershell -NoProfile -ExecutionPolicy Unrestricted Start-Process powershell -ArgumentList '-NoExit cd %CD%' -Verb RunAs

省略形:

pssu.bat
@powershell -nop -ex un start powershell -a '-noe cd %CD%' -v runas

補足

  • 例えばpssu.batという名前でバッチファイルを作ってパスの通っているところに置いておくと
    • PowerShellからはcmd /c pssuで呼び出して使えます。
    • エクスプローラーのアドレスバーでpssu[Enter]とタイプすると、そのフォルダで管理者権限のPowerShellが開けます。
  • -ExecutionPolicy Unrestrictedは環境により省略可能です。

追記(2022/8/11)

OneDriveなどでマウントされている、記号や空白が含まれているパスからでは、PowerShellでのパス指定が失敗することがありました。その場合は、コマンドシェルで管理者権限に昇格してから、PowerShellに切り替えると大丈夫です。
1行ではないですが...

su.bat
@powershell -nop start cmd -a '/k cd %CD%'-v runas
ps.bat
@powershell -nol

ウィンドウが引き継がれるので、背景色による区別はできませんが、プロンプトで判別できます。

C:\bin>ps
PS C:\bin>

動作環境

  • Windows10 Home 21H2
  • PowerShell 5.1
OS 名:                  Microsoft Windows 10 Home
OS バージョン:          10.0.19044 N/A ビルド 19044
PSVersion:              5.1.19041.1320

説明

(カレントディレクトリの値を覚えておき、)新たなプロセスで(Start-Process)PowerShellを管理者権限で(-Verb RunAs)起動する。
その際に、「(記憶しておいた)カレントディレクトリに移動して、ウィンドウを閉じない指定(-NoExit)をする」、というパラメータを付ける。

参考

以下の記事を参考に、PowerShell用にアレンジしてみました。

  • cmd /kpowershell -NoExitに置き換えられる
  • cmdの自動変数である%CD%をそのまま使うか、
  • PowerShellでは自前で準備しておいて展開して使う

ドキュメント

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1