繁体   English   中英

批处理脚本运行正常,但通过PowerShell Remoting执行时失败

[英]Batch script runs fine, but fails when executed through PowerShell Remoting

我在Windows 2008 R2服务器上具有以下批处理脚本:

@echo off
djoin.exe /provision /domain my.domain.com /machine test /savefile savefile.txt
echo %ERRORLEVEL%

如果我通过命令提示符或PowerShell在服务器本身上运行脚本,则该脚本可以正常工作并返回“ 0”。

问题是我需要从远程计算机执行它,因此我执行以下操作(仅用于测试的示例):

Invoke-Command -ComputerName remotehost -ScriptBlock {.\script.cmd}

输出为“ -1073740940”,可能是错误代码C0000374,这可能与堆损坏有关。

djoin命令本身似乎是一个问题。 我可以使用相同的Invoke-Command注释掉djoin并运行其他二进制文件(例如ping),而不会出现任何问题。

请记住,当从目标计算机上的PowerShell执行脚本时,脚本可以很好地工作,远程操作会带来哪些问题?

在这两种情况下,都使用Domain Admins成员我的帐户以相同的特权执行脚本。 我怀疑这是一个权限问题,并且不知道其他地方。

[编辑]

放弃整个事情。 这要么是djoin中的错误,要么是djoin与PS远程处理之间交互中的一些晦涩问题。

我设法使用“ runas / netonly ...”直接在客户端上运行djoin来提供域凭据。 这是一个非常混乱的解决方案(并且我还没有弄清楚如何让运行方式启动的进程的退出状态),但是可以完成工作。

这几乎可以肯定是经典的“双跳”身份验证问题。 请记住,当您使用PowerShell Remoting时,您将消耗其中一跳。 如果需要身份验证,则在访问第三台远程计算机的该远程计算机上执行的任何操作均不太可能起作用。

为了解决这个问题,您可以使用身份验证方法,该方法允许您委派凭据,例如CredSSP。 这不仅涉及更改身份验证类型,还涉及更多事务,因为您必须在事务的客户端服务器端进行更改。 请参阅有关MSDN, PowerShell Remoting和“ Double-Hop”问题的博客文章,以及“嗨,脚本专家!”。 帖子, 使用CredSSP启用PowerShell“第二跳”功能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM