Powershell 当密码为“时,PSEXEC不执行命令”;指定

Powershell 当密码为“时,PSEXEC不执行命令”;指定,powershell,psexec,Powershell,Psexec,问题: 当指定-p以及包含“的密码时,从PS脚本执行的PSEXEC未运行作为参数传递的命令 代码: 结果: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. 期望: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. XX:XX <-- THE ACTUAL TIME,

问题: 当指定-p以及包含
的密码时,从PS脚本执行的PSEXEC未运行作为参数传递的命令

代码:

结果:

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
期望:

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

XX:XX <-- THE ACTUAL TIME, then EXIT as I've invoked /C in CMD
Microsoft Windows XP[版本5.1.2600]
(C) 版权所有1985-2001微软公司。

XX:XX更新

问题似乎出在
psexec
本身,它的命令行解析可能会被包含嵌入式
实例的密码打断-请参阅-听起来好像从未得到修复

您的-次优-选项包括:

  • 将密码更改为不包含双引号(一般来说,这可能不是一个坏主意,因为其他实用程序也可能在使用此类密码时遇到问题)

  • 使用建议的解决方法:由于问题似乎与传递其他参数有关,请将命令行放入批处理文件-如果参数不同,您可以动态创建此批处理文件,并使用
    psexec
    -c
    选项将其复制到远程计算机以执行


下面是原始答案,演示了各种摆脱双引号的方法。

该问题最初包含一种多语句转义方法,后来用其中一种方法进行了更新


如果
psexec
希望嵌入的双引号表示为
,请执行以下操作:

$x = read-host -prompt 'Enter something:'
PSEXEC -u storeadmin -p $($x -replace '"', '""') \\srXXX01 cmd /c TIME /T 
PSEXEC -u storeadmin -p  ('"' + ($x -replace '"', '""') + '"') \\srXXX01 cmd /c TIME /T 
输入
g=76“&;Jl
psexec
将实际传递
g=76“&;Jl

如果
psexec
最终“吃掉”了嵌入的
,请尝试以下操作:

$x = read-host -prompt 'Enter something:'
PSEXEC -u storeadmin -p $($x -replace '"', '""') \\srXXX01 cmd /c TIME /T 
PSEXEC -u storeadmin -p  ('"' + ($x -replace '"', '""') + '"') \\srXXX01 cmd /c TIME /T 
如果
psexec
要求将
转义为
\”
(这对于MS程序来说是不寻常的,它通常至少也支持
),请尝试:


是的,我知道powershell会的。但是PSEXEC仍然无法处理它。我已经尝试并测试了示例密码。g=76“&,;Jl PSEXEC在“@LuigiMackenzieC.Brito:请查看我的更新;3个变体之一-
“无外引号,
“有外引号,
\”
有外引号-希望有效。@LuigiMackenzieC.Brito:我再次更新了我的答案。以后,请不要用现有答案中的片段来修饰你的问题(或者至少不要在没有评论的情况下这样做),因为这会使这些答案变得毫无意义。@mk在我自己深入研究之后。我必须同意你的观点,认为这是这个问题唯一可能的答案。但到“”问题时,我已连接到远程计算机。问题是它只运行命令,而不是出于某种原因传递给命令的参数。让我稍后在办公室试试这个