我在主机上并尝试在受信任域中的远程计算机上执行批处理文件。我尝试了以下代码:
try {
Invoke-Command -Session $newsession -Scriptblock {
Invoke-Expression "C:\EES_Installer\db\Database\mdm.dal\data\dataloader.bat"
#Invoke-Expression "cmd.exe /c C:\EES_Installer\db\Database\mdm.dal\data\dataloader.bat"
& cmd.exe /c "C:\EES_Installer\db\Database\mdm.dal\data\dataloader.bat"
} -ErrorAction Stop
} catch [Exception] {
echo "Error while running the remote command", $_.Exception.GetType().FullName, $_.Exception.Message
Remove-PSSession $newsession
exit 1
}
Remove-PSSession $newsession
此代码的问题在于它打印批处理文件的内容而不是执行它。我不知道这个脚本有什么问题。在我用双向显示的代码中,我尝试过:使用'Invoke-Expression'和'&'运算符
答案 0 :(得分:0)
在这种情况下,Invoke-Expression或&应该是需要的。指定批处理文件的完整路径应该调用它。
try
{
Invoke-Command -Session $newSession -ScriptBlock {
C:\EES_Installer\db\Database\mdm.dal\data\dataloader.bat
} -ErrorAction Stop
}
...
答案 1 :(得分:0)
try {
Invoke-Command -Session $newsession -Scriptblock {
cd C:\BES_Installer\db\Database\mdm.dal\data
Invoke-Expression "cmd.exe /c dataloader.bat"
} -ErrorAction Stop
} ......
点击目标目录然后使用cmd启动应用程序是解决此问题的方法。