发布
社区首页 >问答首页 >从远程计算机到多台计算机的位置只传递一次

从远程计算机到多台计算机的位置只传递一次
EN

Stack Overflow用户
提问于 2016-09-12 08:55:37
回答 1查看 43关注 0票数 0
  1. 我在多台机器上有一个脚本C:\code.ps1,比如说A,B,C。 code.ps1如下所示 $path =Read“提供路径名”$AbsolutePath = "$path\somefile“
  2. 当您运行code.ps1时,它在进一步执行之前要求用户输入某个位置。
  3. 由于我需要在多台机器并行上运行code.ps1,所以我决定在一台远程机器上运行它,比如D,如下所示: $comp = @('A','B','C')调用-命令-ComputerName $comp -ScriptBlock {C:\code.ps1}
  4. 它对A、B、C运行很好,但问题是我需要3次提供用户输入(这里是3台机器A、B、C),因为当我们运行code.ps1时,它要求用户输入一个位置。

我们如何解决这个问题,以便在机器D上运行这个脚本只需要用户输入一次,而不管没有。code.ps1在那里的机械设备。

EN

回答 1

Stack Overflow用户

发布于 2016-09-12 09:13:17

如果在所有远程主机上的位置相同,您应该能够通过using:范围分类器在scriptblock中获取路径。

代码语言:javascript
代码运行次数:0
复制
$Location = Read-Host -Prompt "Input location for the installer"
$Machine  = @('A','B')
Invoke-Command -Computer $Machine -ScriptBlock {& "$using:Location\install.msi"}

您还可以将路径作为参数传递到scriptblock:

代码语言:javascript
代码运行次数:0
复制
$Location = Read-Host -Prompt "Input location for the installer"
$Machine  = @('A','B')
Invoke-Command -Computer $Machine -ScriptBlock {
    Param($Installer)
    & "$Installer"
} -ArgumentList "$Location\install.msi"

无论哪种方式,都要将路径放在双引号中,以处理其中的空格,并使用call运算符执行命令字符串。

如果路径因机器而异,则需要将命令作为每台机器的单独作业调用。远程机器上的提示无法工作,因为被调用的命令没有在交互式会话中运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39446584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档