如何使用PowerShell在命令提示符中远程启动批处理文件

时间:2016-08-04 15:34:39

标签: powershell

我尝试使用PowerShell在远程计算机上的cmd窗口中启动批处理文件。

这是我的ps1脚本。

function Run-BatchFile
{
     param($computer = "mycomputer")
     $batfilename = "mybatch.bat"
     Invoke-Command -ComputerName $computer -ScriptBlock {param($batfilename) "cmd.exe /c C:\Batchfiles\$batfilename" } -ArgumentList $batfilename -AsJob
}

Run-BatchFile

当我从myhost机器运行它时,我得到了这个输出..

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
5      Job5            RemoteJob       Running       True            mycomputer           param($batfilename) "c...

但是远程计算机上没有启动命令提示符和批处理文件。

关于我做错了什么或如何调试它的任何线索,因为看起来它可以正常工作。

谢谢,

约翰。

2 个答案:

答案 0 :(得分:1)

您也可以使用PowerShell启动批处理文件。

function Run-BatchFile
{
 param($computer = "mycomputer")
 $batfilename = "mybatch.bat"
 Invoke-Command -ComputerName $computer -ScriptBlock {param($batfilename) "powershell.exe -NoLogo -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File C:\Batchfiles\$batfilename" } -ArgumentList $batfilename -AsJob
}

Run-BatchFile

请记住,我没有测试过这个确切的代码,但总体思路应该有用。

答案 1 :(得分:0)

尝试使用&符运算符启动脚本:

this.listView.setOnGroupClickListener(new   ExpandableListView.OnGroupClickListener() {
        @Override
        public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
            Timber.i("GroupPosition "+groupPosition);
            return false;
        }
    });

基本上,因为你在引号中得到了命令,Powershell会将它视为字符串,而不是执行命令。 &符号迫使Powershell将其视为命令。有关详细信息,请参阅here