gpt4 book ai didi

powershell - 通过Powershell中的Invoke-Command从网络共享运行Setup.exe

转载 作者:行者123 更新时间:2023-12-02 23:28:12 25 4
gpt4 key购买 nike

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

在PSEXEC开始搞乱之前,此批处理命令曾为我工作:
psexec -accepteula \\<ServerToBeUpdated> -u <User> -p <Password> cmd /c "\\<ServerWithInstallationFile>\SystemEnv\Bin\Setup.exe /silent /Update"

我正在尝试使用Powershell中的Invoke-Command来执行此操作,但是到目前为止还没有运气。

我尝试了许多组合,并且用了很多Google搜索,总的来说,PowerShell不喜欢我要从中安装的UNC路径。

这是我所拥有的:
Invoke-Command -ComputerName <ServerToBeUpdated> -ScriptBlock { Start-Process -FilePath "\\<ServerWithInstallationFile>\SystemEnv\Bin\Setup.exe" -ArgumentList "/update /silent" -wait }
我收到此错误消息:

This command cannot be run due to the error: Access is denied.
+ CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
+ PSComputerName : DE5441



有人说setup.exe已在远程服务器上本地复制。但这对我来说似乎不是一个选择,主要有两个原因。
  • 我的setup.exe识别出它不在正确的路径中,然后杀死了本地的setup.exe进程,并自动从UNC路径启动了一个新的setup.exe。
  • 我还需要我的setup.exe中的ExitCode,当原因1中提到的“杀人”开始时,它会丢失。

  • 最后一点,我确实使用PowerShell-PSRemoting命令授予了PowerShell远程运行的访问权限,并且从此简单测试中也得到了预期的结果:
    Invoke-Command -ComputerName <ServerToBeUpdated> -ScriptBlock { Hostname } 

    最佳答案

    您正在遇到一个所谓的双跳身份验证问题。如果使用普通身份验证,您将无法从正在调用该命令的计算机上对另一台计算机进行身份验证。

    为了解决这个问题,您可以使用CredSSP。

    要在被调用的计算机上启用CredSSP:

    Enable-WSManCredSSP -Role Server -force

    要在客户端上启用CredSSP:
    Enable-WSManCredSSP -Role Client -DelegateComputer server.domain.com -force
    -delegateComputer参数需要FQDN,但也需要通配符。

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

    关于powershell - 通过Powershell中的Invoke-Command从网络共享运行Setup.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27151302/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com