我尝试远程另一台计算机上安装使用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不能在Windows Server 2008 R2的工作,但上面的代码工作这两个操作系统上! :)