windows - 使用 Powershell 的 Invoke-Command 调用带参数的批处理文件

标签 windows powershell batch-file powershell-cmdlet invoke-command

我想使用 Powershell 在远程机器上调用批处理文件。这个批处理文件有参数。这是我到目前为止所拥有的:

$script = "\\fileshare\script.cmd"
$server = $args[0]
$args [string]::join(',',$args[1 .. ($args.count-1)])

Invoke-Command -computername $server {$script + ' ' + $args}

经过一些搜索,我发现 Invoke-Command 函数在一个全新的进程中运行其脚本 block ,因此您不能将变量放入其中(它们不会展开)。这就是 -ArgumentList 标签的用途。所以我尝试了这个......

Invoke-Command -computername $server {\\fileshare\script.cmd} -ArgumentList "FirstArgument"

那也不管用...我的批处理脚本告诉我它没有传递任何参数。我找不到任何明确说明的内容,但看起来 -ArgumentList 参数仅适用于 Powershell 脚本(它不会将它们提供给批处理脚本)。

关于如何使用 Invoke-Command 调用带参数的批处理文件有什么想法吗?

最佳答案

当您将参数列表传递给脚本 block 时,尝试使用 PARAM 指令“接收它们”。像这样:

Invoke-Command -computername $server {PARAM($myArg) \\fileshare\script.cmd $myArg} -ArgumentList "FirstArgument"

或者你可以只使用 $args 自动变量:

Invoke-Command -computername $server {\\fileshare\script.cmd $args} -ArgumentList "FirstArgument"

关于windows - 使用 Powershell 的 Invoke-Command 调用带参数的批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8541809/

相关文章:

windows - 监视 COM 对象

python - 如何直接从 python 脚本修改 Windows 10 路径变量

java - Perl 或 Java 端口上运行的应用程序的名称

c++ - Windows 上的 std::map::operator[] 违规访问内存

batch-file - 打开带有隐藏cmd.exe的应用程序

powershell - 如何在批处理文件 FOR 命令中使用 PowerShell?

azure - 使用 Powershell 7 在 Visual Studio 中验证/部署 ARM 模板

xml - 如何在 powershell 中打印 xml 元素的实际内容?

batch-file - 在ubuntu终端中执行一系列命令

linux - 从 Windows 到 Linux 服务器的 FTP 上传时附加的 CRLF 标签