別のユーザーとしてアプリケーションを実行するには、そのアプリケーションを「Shift + 右クリック」で表示される「別のユーザーとして実行」を選択すればよい。
頻繁に使用する場合は面倒なのでスクリプトにしておきたいところだ。
まずは、パスワードを保存しておく。
ConvertFrom-SecureString (Get-Credential).Password | Set-Content myPass |
これを読み込んで資格情報を作る。
$password = ConvertTo-SecureString (gc myPass) |
あとは「Start-Process」コマンドレットでこの資格情報を使ってアプリケーションを起動してあげれば良い。
Start-Process -FilePath notepad -Credential $cred |
ちなみに、アプリケーションを「管理者として実行」するにはこんな感じ。
Start-Process -FilePath dsac -Verb runas |
しかし、別の資格情報でなおかつ「管理者として実行」しようとすると、うまくいってくれない。
Start-Process -FilePath dsac -Verb runas -Credential $cred |
同時には指定できないという事なのだろうか・・・。
仕方がないのでとりあえずこんな形にしてみた。
Start-Process -FilePath powershell.exe -Credential $cred ` |
もう少し、スマートな方法が有りそうにも思う・・・。
あれー、このアプリケーション、直接実行する時(自ユーザー)は「管理者として実行」が必要ない。
でも、メモ帳はOKなのだが、
Start-Process -FilePath "notepad.exe" -Credential $cred |
これはダメ。
Start-Process -FilePath "dsac.exe" -Credential $cred |
試してみたら、これはOK。
Start-Process -FilePath powershell.exe -Credential $cred ` |
ん~・・・。
--
MSのEXEってそれぞれにマニフェストでElevateの許認可が設定されていると中の人のブログかなんかで読みました
返信削除その事も関係あるんじゃないですか