2012年10月3日水曜日

◆別の資格情報で管理者として実行する

別のユーザーとしてアプリケーションを実行するには、そのアプリケーションを「Shift + 右クリック」で表示される「別のユーザーとして実行」を選択すればよい。
image

頻繁に使用する場合は面倒なのでスクリプトにしておきたいところだ。

まずは、パスワードを保存しておく。

ConvertFrom-SecureString (Get-Credential).Password | Set-Content myPass

これを読み込んで資格情報を作る。

$password = ConvertTo-SecureString (gc myPass)
$cred =
  New-Object System.Management.Automation.PsCredential "usr",$password

あとは「Start-Process」コマンドレットでこの資格情報を使ってアプリケーションを起動してあげれば良い。

Start-Process -FilePath notepad -Credential $cred

 

ちなみに、アプリケーションを「管理者として実行」するにはこんな感じ。

Start-Process -FilePath dsac -Verb runas

しかし、別の資格情報でなおかつ「管理者として実行」しようとすると、うまくいってくれない。

Start-Process -FilePath dsac -Verb runas -Credential $cred

image

同時には指定できないという事なのだろうか・・・。

仕方がないのでとりあえずこんな形にしてみた。

Start-Process -FilePath powershell.exe -Credential $cred `
  -ArgumentList "dsac.exe -Verb runAs"

もう少し、スマートな方法が有りそうにも思う・・・。

あれー、このアプリケーション、直接実行する時(自ユーザー)は「管理者として実行」が必要ない。

でも、メモ帳はOKなのだが、

Start-Process -FilePath "notepad.exe" -Credential $cred

これはダメ。

Start-Process -FilePath "dsac.exe" -Credential $cred

image

 

試してみたら、これはOK。

Start-Process -FilePath powershell.exe -Credential $cred `
  -ArgumentList "dsac.exe"

ん~・・・。

--

PowerShell: ◆別の資格情報で管理者として実行する2

1 件のコメント:

  1. MSのEXEってそれぞれにマニフェストでElevateの許認可が設定されていると中の人のブログかなんかで読みました
    その事も関係あるんじゃないですか

    返信削除