0

別のユーザー資格情報を使用して、スクリプトから新しい PowerShell インスタンスを作成したいと考えています。私の考えは、このスクリプト部分で、異なる資格情報を持ついくつかの管理者を行うことです。本編は一般ユーザー権限で実行したい。

アイデアですが、機能していません:

$script= {$InScript = Get-Process}

$pp= get-credential

[System.Diagnostics.Process]::Start( "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe", "-command $script", $pp.UserName.Split('\')[1] , $pp.Password , $pp.UserName.Split('\')[0] )

[System.Diagnostics.Process]::Start( "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe", "-command $script", $pp.UserName.Split('\')[1] , $pp.Password , $pp.UserName.Split('\')[0] )


$InScript

開始コマンドの両方の行で例外:

"5" 個の引数を指定して "Start" を呼び出し中に例外が発生しました: "ディレクトリ名が無効です"

管理者権限でスクリプトを実行すると、完全に機能します。

4

1 に答える 1

1

.net を使用できます。

$pp= get-credential # as domain\username and password

[System.Diagnostics.Process]::Start( "powershell.exe", "-command $script", $pp.UserName.Split('\')[1] , $pp.Password , $pp.UserName.Split('\')[0] )

これは::Startメソッドのコンストラクタです:

::Start(string fileName, string arguments, string userName, System.Security.SecureString password, string domain)

コメントの後に編集:

exeへのフルパスを入れてみてください:

[System.Diagnostics.Process]::Start( "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe", "-command $script", $pp.UserName.Split('\')[1] , $pp.Password , $pp.UserName.Split('\')[0] )

または開始プロセスを使用します。

start-process -FilePath "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -Credential $pp -ArgumentList $script
于 2012-04-11T09:03:08.373 に答える