0

いくつかの引数を取って実行する PowerShell スクリプト/関数があります。

Invoke-Expression ".\ScriptFile.ps1 $($Node.Name).xml C:\TempFolder\ $($Node.Name) local"

今、私はそれを別のユーザーとして実行したいと考えています。

Invoke-Expressioncredentialこれを容易にする固有のパラメーターはありません。一方、別のユーザーとしての実行を容易Invoke-CommandにするCredential( ) パラメーターがあります。運が悪いのでGet-Credential交換Invoke-Expressionしてみました。Invoke-Command

上記の式を別のユーザーとして実行するためにこれに取り組むにはどうすればよいですか?

スクリプト リソースの構造。

Script Deploy
        {       
            SetScript =     
@"             
                Set-Location D:\Deploy
                Invoke-Expression ".\ScriptFile.ps1 $($Node.Name).xml C:\TempFolder\ $($Node.Name) local"                                               
"@

            TestScript = 
            {
                return $false            
            }
            GetScript = {
                return @{   
                        GetScript = $GetScript
                        SetScript = $SetScript
                        TestScript = $TestScript
                    }
            }
            DependsOn = "[File]CopyMe"
        }

ScriptPS: これはすべて、Desired State Configurationの User の SetScript 内で発生します。

4

2 に答える 2

1

私はあなたができるとは思わない。別のセキュリティ コンテキストでコマンドを実行するには、それらの資格情報で実行されているセッションで実行する必要があります。

Invoke-Command のパラメーター セットを見ると、Credential パラメーターは、別のコンピューターまたは URI を指定するパラメーター セットでのみ使用できます (これにより、新しいセッションが作成されます)。FilePathRunspace および InSession パラメーター セットにより、コマンドがローカル セッションで呼び出され、Credential パラメーターはありません。

同様に、Invoke-Command はローカル セッションでコマンドを実行しますが、Credential パラメーターはありません。これは、セッションでセキュリティ コンテキストが確立されると変更できないためです。

于 2014-10-09T10:35:58.873 に答える