在远程计算机上执行批处理文件的Powershell脚本不执行命令,而是打印它们

时间:2016-02-17 00:52:32

标签: windows powershell batch-file

我在主机上并尝试在受信任域中的远程计算机上执行批处理文件。我尝试了以下代码:

在远程计算机上运行批处理文件

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''&'运算符

2 个答案:

答案 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启动应用程序是解决此问题的方法。