在远程计算机上传递数据并执行远程PowerShell脚本(可能是telnet?)

时间:2012-10-30 15:32:56

标签: powershell

我在Machine A上有一个脚本,用于检查Machine B上的端口是否已打开。我要做的是以某种方式传递给Machine B哪个端口Machine A将要测试。我已经研究了诸如invoke-command和telnet之类的东西,但我很好奇你们认为这两个服务器之间通信的最佳方式。相同的网络,不同的域名。我在两个方框上都有管理员权限

1 个答案:

答案 0 :(得分:2)

如果你只是想"传入"一个带有值($ testport)的变量到远程会话,然后你就可以这样做:

invoke-command -session $session -scriptblock {param($testport)
  #create variable and assign it a value
  set-variable -name:"testport" -value:$testport -force  -erroraction silentlycontinue;
}

要一次发送多个变量(例如,使用父会话中的所有全局变量初始化远程会话),将它们收集到$ hash中并使用如下内容:

invoke-command -session $session -scriptblock {param($hash, $setAsGlobal)
#create global variable and assign value for each hash table entry
if ($setAsGlobal -eq $true) {
  foreach ($key in $hash.keys) {
      set-variable -name:$key -value:$hash.$key -scope:'global' -force  -erroraction silentlycontinue;
  }
} else {
  foreach ($key in $hash.keys) {
    set-variable -name:$key -value:$hash.$key -force  -erroraction silentlycontinue;
  }
}

从远程会话中获取变量并分配给$ result:

 $varname = "testport";
 $result = invoke-command -session $session -scriptblock {param($varname)
    get-variable -name $varname -valueonly
 } -argumentlist $varname