如何使用相对路径运行PsExec执行远程计算机脚本?
PsExec相对路径调用解决方案
可以通过相对路径运行PsExec,执行失败的核心原因是PowerShell调用外部可执行文件的语法错误,而非相对路径本身不支持。你之前尝试的两种写法均存在语法问题:
- Push-Location是单独的切换目录命令,不能直接在同一行后跟PsExec执行命令,PowerShell会将其识别为Push-Location的参数报错
- 直接拼接路径字符串不加调用符
&的写法,PowerShell会将整行识别为普通字符串输出,不会触发执行
两种正确实现方式
方式1:切换工作目录后调用
# 切换到PsTools所在的目标目录($PSToolsPath为你已获取到的相对路径) Push-Location $PSToolsPath # 调用当前目录下的PsExec,必须加.\前缀(PowerShell默认不从当前目录加载可执行文件) .\PsExec.exe $IPAddress -i -s -u $Login -p $LoginPassword Powershell $PathToFile # 执行完成后切回原工作目录(非必须,按需添加) Pop-Location
方式2:直接调用拼接后的相对路径
无需切换工作目录,使用PowerShell的调用运算符&执行拼接好的路径即可:
# 拼接得到PsExec的完整相对路径 $PsExecRelativePath = Join-Path $PSToolsPath "PsExec.exe" # 用&调用符执行可执行文件,后跟常规参数即可 & $PsExecRelativePath $IPAddress -i -s -u $Login -p $LoginPassword Powershell $PathToFile
注意事项
- 若PsExec路径或参数包含空格,需用引号包裹对应内容,避免参数解析错误
- 首次在当前环境运行PsExec时,可添加
/accepteula参数静默同意用户协议,避免弹窗卡住执行
内容的提问来源于stack exchange,提问作者Subscaper
相关产品推荐
相关产品推荐

