我需要能够从文件驻留在该计算机上的目录中启动远程计算机上的.cmd文件。
我已经尝试过:invoke-command -ComputerName test123 -ScriptBlock { cmd /c c:/myfile.cmd }
在PowerShell中启动了.cmd,但后来失败了,因为它找不到这个启动的相应的.cmd(都存在于同一个.cmd中)目录)。
有没有办法启动这个.cmd文件,让它的执行持续存在?即使在powershell窗口关闭后,.cmd仍将继续在远程计算机上运行。
答案 0 :(得分:4)
您需要更改scriptblock中的工作目录。在调用批处理脚本之前添加Set-Location
:
Invoke-Command -ComputerName test123 -ScriptBlock {
Set-Location 'C:\'
& cmd /c ".\myfile.cmd"
}
如果您需要创建一个分离的进程,您可以通过WMI执行此操作:
$hostname = 'test123'
$command = 'C:\path\to\script.cmd'
$workdir = 'C:\working\directory'
$p = [wmiclass]"\\$hostname\root\cimv2:Win32_Process"
$p.Create($command, $workdir)
请注意,您需要远程主机的管理员权限。