Invoke-Command 脚本块不生成输出
Invoke-Command script block not generating output
我正在尝试在远程 Powershell 会话中使用脚本块。此命令正在运行,我得到有关机器状态的输出:
$SecurePassword = $ParamPassword | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential `
-ArgumentList $UserName, $SecurePassword
$ParamDomain = 'mydomain'
$ParamHostname = "myhostname"
$fullhost = "$ParamDomain"+"\"+"$ParamHostname"
#Get-BrokerMachine No1
if ($ParamCommand -eq 'Get-BrokerMachine'){
$s = New-PSSession -computerName $desktopbroker -credential $cred
Invoke-Command -Session $s -ScriptBlock { param( $fullhost ) ;asnp citrix.* ; Get-BrokerMachine -machinename $fullhost } -Args $fullhost
}
我的第二次迭代(也使用脚本块)失败了。命令Get-BrokerMachine
没有执行,没有输出。
#Get-BrokerMachine No2
if ($ParamCommand -eq 'Get-BrokerMachine'){
$ScriptBlock = {
asnp citrix.* ; Get-BrokerMachine -machinename $fullhost
};
$s = New-PSSession -computerName $desktopbroker -credential $cred
Invoke-Command -Session $s -ScriptBlock $ScriptBlock
}
有人可以解释第二个脚本有什么问题吗?
第二个脚本中缺少的一件重要事情是您没有将 $fullhost
作为参数传递。当脚本块在远程系统上被调用时 $fullhost
将是 $null
.
粗略的猜测是你需要做这样的事情:
#Get-BrokerMachine No2
if ($ParamCommand -eq 'Get-BrokerMachine'){
$ScriptBlock = {
param($host)
asnp citrix.* ; Get-BrokerMachine -machinename $host
};
$s = New-PSSession -computerName $desktopbroker -credential $cred
Invoke-Command -Session $s -ScriptBlock $ScriptBlock -ArgumentList $fullhost
}
我将脚本块内的变量名称更改为 $host
以消除范围的潜在感知歧义。
我正在尝试在远程 Powershell 会话中使用脚本块。此命令正在运行,我得到有关机器状态的输出:
$SecurePassword = $ParamPassword | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential `
-ArgumentList $UserName, $SecurePassword
$ParamDomain = 'mydomain'
$ParamHostname = "myhostname"
$fullhost = "$ParamDomain"+"\"+"$ParamHostname"
#Get-BrokerMachine No1
if ($ParamCommand -eq 'Get-BrokerMachine'){
$s = New-PSSession -computerName $desktopbroker -credential $cred
Invoke-Command -Session $s -ScriptBlock { param( $fullhost ) ;asnp citrix.* ; Get-BrokerMachine -machinename $fullhost } -Args $fullhost
}
我的第二次迭代(也使用脚本块)失败了。命令Get-BrokerMachine
没有执行,没有输出。
#Get-BrokerMachine No2
if ($ParamCommand -eq 'Get-BrokerMachine'){
$ScriptBlock = {
asnp citrix.* ; Get-BrokerMachine -machinename $fullhost
};
$s = New-PSSession -computerName $desktopbroker -credential $cred
Invoke-Command -Session $s -ScriptBlock $ScriptBlock
}
有人可以解释第二个脚本有什么问题吗?
第二个脚本中缺少的一件重要事情是您没有将 $fullhost
作为参数传递。当脚本块在远程系统上被调用时 $fullhost
将是 $null
.
粗略的猜测是你需要做这样的事情:
#Get-BrokerMachine No2
if ($ParamCommand -eq 'Get-BrokerMachine'){
$ScriptBlock = {
param($host)
asnp citrix.* ; Get-BrokerMachine -machinename $host
};
$s = New-PSSession -computerName $desktopbroker -credential $cred
Invoke-Command -Session $s -ScriptBlock $ScriptBlock -ArgumentList $fullhost
}
我将脚本块内的变量名称更改为 $host
以消除范围的潜在感知歧义。