4

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

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

$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。

保罗

4

1 回答 1

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 是局部变量。

于 2012-06-28T09:01:46.463 回答