2

別のコンピューターにリモートで PowerShell を使用してソフトウェア (.exe) をインストールしようとしています。私が今持っています:

Invoke-Command -Authentication Credssp -Credential $cred -ComputerName "TargetComputer01" -ScriptBlock {Start-Process -FilePath $args[0] -ArgumentList ('/log "{0}" /quiet /norestart' -f $args[1]) -Wait -PassThru -Verb RunAs} -ArgumentList @($Installer, $LogPath)

これは機能せず、エラーもログ ファイルもインストールされたソフトウェアもありません。そのため、なぜ機能しないのかわかりません。インストーラーが共有にあるため、Credssp を使用します。インストーラーを TargetComputer01 のどこかに配置すると、セッションで動作します。以下を参照してください。

Invoke-Command -Session $session -ScriptBlock {Start-Process -FilePath $args[0] -ArgumentList ('/log "{0}" /quiet /norestart' -f $args[1]) -Wait -PassThru -Verb RunAs} -ArgumentList @($Installer, $LogPath)

Credsspを使用した最初のコマンドが機能しない理由は何ですか??


はい、これらのコマンドで Credssp も有効にしました。私のスクリプトは TargetComputer01 (Windows Server 2012) では正常に実行されましたが、TargetComputer02 (Windows Server 2008 R2) では正常に実行されなかったようです。PowerShell のバージョンは同じで、他のすべての構成も同じです (ファイアウォールの設定など)。

ただし、PSSession で動作させる方法を見つけました。次のコードを参照してください。

$cred = Get-Credential -UserName "domain\username" -Message "Enter your credentials"
$session = New-PSSession -ComputerName "TargetComputer02" -Credential $cred -Authentication Credssp

Invoke-Command -Session $session -ScriptBlock {
    param
    (
        $Installer, $LogPath
    )
    Start-Process -FilePath $Installer -ArgumentList ('/log "{0}" /quiet /norestart' -f $LogPath) -Wait -PassThru -Verb RunAs
} -ArgumentList @($Installer, $LogPath)

セッションなしで Credssp を使用する他の Invoke-Command が Windows Server 2008 R2 で機能しない理由はわかりませんが、上記のコードは両方のオペレーティング システムで機能します。:)

4

1 に答える 1

2

2 台のコンピューターで実際に CredSSP を有効にしましたか? Enable-WSManCredSSPコマンドを参照してください。

クライアント コンピューター、またはスクリプトを実行しているコンピューターで、資格情報をターゲット コンピューターに委任するように設定する必要があります。

Enable-WSManCredSSP -role Client -DelegateComputer "TargetComputer01"

gpedit.msc -> [コンピューターの構成] -> [システム] -> [資格情報の委任] に移動して、これが正しく設定されていることを確認する必要があります。「Delegating fresh credentials」が有効になり、その詳細を開くと、TargetComputer01 が「WSMAN/TargetComputer01」のように表示されるはずです。</p>

そして今、受信側のコンピューターで:

Enable-WSManCredSSP -role Server

また、TargetComputer01 でEnable-PSRemotingを実行していることを確認してください。

これがうまくいくかどうか教えてください!

于 2013-10-29T15:56:09.560 に答える