PowerShell的调用命令远程使用份额(PowerShell Invoke-Command re

2019-10-18 20:37发布

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

Answer 1:

你有没有真正启用CredSSP的两台电脑上? 请参阅启用-WSManCredSSP命令。

在客户端计算机,或者你在运行该脚本的计算机,您需要将其设置为委派凭据到目标计算机:

Enable-WSManCredSSP -role Client -DelegateComputer "TargetComputer01"

>计算机配置 - - >系统 - >凭据委派您应该确认这是通过进入GPEDIT.MSC设置正确。 “委派新鲜资格证书”应已启用,并且当你打开的细节吧,TargetComputer01应该出现类似“WSMAN / TargetComputer01”

而现在的接收计算机上:

Enable-WSManCredSSP -role Server

另外,还要确保你运行启用,PSRemoting上TargetComputer01。

让我知道这对你的作品!



文章来源: PowerShell Invoke-Command remotely using a share