将变量传递给PoSh远程文件以执行

时间:2012-06-28 07:01:24

标签: powershell powershell-remoting

我正在尝试从机器A运行PS远程会话以访问机器B.两者都在同一个域上,并且Kerberos身份验证正在运行,我可以建立PS远程会话。

我正在尝试在机器A上运行脚本,在MAchine B上将参数传递给该脚本,如下所示:

$build_script_dir = Resolve-Path .
$file_to_execute = "$build_script_dir\file_to_execute.ps1"

invoke-command -ComputerName MachineB -FilePath $file_to_execute -argumentlist $Arg1,$Arg2,$Arg3,$Arg4

这似乎没有调用脚本。我甚至试图将脚本带到远程机器上,然后按如下方式执行:

$remote_file = "c:\path-to-file\remote_file.ps1"

invoke-command -ComputerName MachineB -ScriptBlock {$remote_file} -argumentlist $Arg1,$Arg2,$Arg3,$Arg4

我错过了什么阻止脚本运行?我有大约10个参数传递给脚本,脚本将操作IIS。

1 个答案:

答案 0 :(得分:1)

如果脚本仅存在于远程计算机上:

Invoke-Command -ComputerName Server01 -scriptBlock { C:\scripts\Test.PS1 "Arguments here"}

-FilePath在本地计算机上查找脚本。

-ScriptBlock中指定文件路径时,可以调用驻留在远程系统上的脚本。

此外,如果需要将任何变量从本地计算机传递到远程脚本,请使用-Argumentlist。但是,-ScriptBlock需要一个param()。例如,

Invoke-Command -ComputerName Server01 -scriptBlock { param($name, $age) C:\scripts\Test.PS1 -Name $name -Age $age} -ArgumentList $name,$age

在上面的命令中,$ name和$ age是局部变量。