【发布时间】:2014-11-29 11:37:39
【问题描述】:
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 }
我收到此错误消息:
由于以下错误无法运行此命令:访问被拒绝。
+ 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 中所述,当“杀戮”开始时,它会丢失。
最后一点,我确实通过 Enable-PSRemoting 命令授予了 PowerShell 远程运行的访问权限,并且我还从这个简单的测试中得到了预期的结果:
Invoke-Command -ComputerName <ServerToBeUpdated> -ScriptBlock { Hostname }
【问题讨论】:
-
您可能遇到了双跳身份验证问题。您可以使用 CredSSP 来解决它。这个链接应该可以帮助blogs.technet.com/b/heyscriptingguy/archive/2012/11/14/…
-
谢谢,这解决了我的问题。一个问题,一个盒子可以同时设置为服务器和客户端角色,还是必须是其中之一?
-
我稍后会添加它作为答案。关于一台计算机上的两个角色:我不知道,猜你必须尝试一下:)
标签: powershell installation psexec invoke-command