我正在尝试从机器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。
保
答案 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是局部变量。