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

Have you actually enabled CredSSP on the two computers? See the Enable-WSManCredSSP command.

On the client computer, or the computer you're running the script on, you need to set it to delegate credentials to the target computer:

Enable-WSManCredSSP -role Client -DelegateComputer "TargetComputer01"

You should verify this was set up properly by going into gpedit.msc -> Computer Configuration -> System -> Credentials Delegation. “Delegating fresh credentials” should now be enabled, and when you open up the details for it, TargetComputer01 should show up like “WSMAN/TargetComputer01”</p>

And now on the receiving computer:

Enable-WSManCredSSP -role Server

Also make sure you run Enable-PSRemoting on TargetComputer01.

Let me know if this works for you!

于 2013-10-29T15:56:09.560 回答