通过Powershell中的Invoke命令从网络共享运行Setup.exe

通过Powershell中的Invoke命令从网络共享运行Setup.exe,powershell,installation,psexec,invoke-command,Powershell,Installation,Psexec,Invoke Command,PSEXEC开始给我带来一些麻烦,我决定在PowerShell中重新编码 在PSEXEC开始搞砸之前,这个批处理命令曾经对我有用: psexec-accepteula\\-u-p cmd/c“\\\SystemEnv\Bin\Setup.exe/silent/Update” 我正试图在Powershell中使用Invoke命令来实现这一点,但到目前为止运气不佳 我尝试了很多组合,谷歌搜索了很多,总的来说,PowerShell似乎不喜欢我尝试安装的UNC路径 以下是我得到的: Invoke命令-

PSEXEC开始给我带来一些麻烦,我决定在PowerShell中重新编码

在PSEXEC开始搞砸之前,这个批处理命令曾经对我有用:

psexec-accepteula\\-u-p cmd/c“\\\SystemEnv\Bin\Setup.exe/silent/Update”

我正试图在Powershell中使用Invoke命令来实现这一点,但到目前为止运气不佳

我尝试了很多组合,谷歌搜索了很多,总的来说,PowerShell似乎不喜欢我尝试安装的UNC路径

以下是我得到的:

Invoke命令-ComputerName-ScriptBlock{Start Process-FilePath“\\\SystemEnv\Bin\Setup.exe”-ArgumentList”/update/silent”-wait}

我收到以下错误消息:

由于以下错误,无法运行此命令:访问被拒绝。
+类别信息:InvalidOperation:(:)[启动流程],InvalidOperationException
+FullyQualifiedErrorId:InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
+电脑名称:DE5441

有人说setup.exe已在远程服务器上本地复制。但这似乎不是我的选择,主要有两个原因

  • My setup.exe标识它不在正确的路径中,然后它将终止setup.exe进程的本地进程,并自动从UNC路径启动新的setup.exe
  • 我还需要setup.exe中的ExitCode,当“杀戮”开始时,它会丢失,原因1中提到过 最后,我使用Enable PSRemoting命令授予PowerShell远程运行的访问权限,并且我还从这个简单的测试中获得了预期的结果:

    Invoke-Command -ComputerName <ServerToBeUpdated> -ScriptBlock { Hostname } 
    
    Invoke命令-ComputerName-ScriptBlock{Hostname}
    
    您遇到了所谓的双跳身份验证问题。如果使用普通身份验证,您将无法从正在调用命令的计算机向第二台计算机进行身份验证

    要解决这个问题,可以使用CredSSP

    要在被调用的计算机上启用CredSSP,请执行以下操作:

    Enable-WSManCredSSP -Role Server -force
    
    要在客户端上启用CredSSP,请执行以下操作:

    Enable-WSManCredSSP -Role Client -DelegateComputer server.domain.com -force
    
    -delegateComputer
    参数需要FQDN,但也需要通配符


    启用CredSSP后,您可以使用它调用带有参数
    -authentication CredSSP

    的命令,这样您可能会遇到双跳身份验证问题。你可以用CredSSP来解决这个问题。这个链接应该有帮助,谢谢,这解决了我的问题。一个问题是,一个框可以同时设置为服务器和客户端角色,还是必须是其中一个?我稍后会添加它作为答案。关于一台计算机上的两个角色:我不知道,我想你必须尝试一下:)