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