2017-02-02 4 views
0

次のコードを使用してCitrix XenApp 6.5サーバーの状態を取得しようとすると、ゾーンデータコレクタでPowerShellをローカルで実行すると結果セットが返されます。ScriptBlockを使用したInvoke-Commandはローカルサーバー上で動作 - リモートResultsetは空です

$serverName = "SOMECITRIXSERVER" 
$Invoke-Command -ScriptBlock {Add-PSSnapin Citrix.XenApp.Commands} 
$serverStatus = Get-XAServer | select ServerName,@{n="InMaintenanceMode";e={ if($_.LogOnMode -like "Prohibit*"){$true}elseif($_.LogOnMode -eq "AllowLogons"){$false} }} | where {$_.ServerName -eq $serverName} | Select InMaintenanceMode} 
Write-Output "Status: $serverStatus.InMaintenanceMode" 
Status: false 

同じスクリプトブロックが、PowerShellで実行され、computernameがZDCに設定され、資格情報が提供されます。いかなる例外がスローされませんし、結果セットが空であるされています。WinRMのトラフィックペイロードが暗号化されているので、Wiresharkのネットワークパケットキャプチャを実行

$zoneDataCollector = "SOMEZDCHOST" 
$serverName = "SOMECITRIXSERVER" 
$key = (somekeyvaluehere) 
$passwordZDC = cat CredentialFile.txt | convertto-securestring -key $key 
$credZDC = new-object -typename System.Management.Automation.PSCredential -argumentlist $usernameZDC, $passwordZDC 
$ZDCSession = New-PSSession -ComputerName $zoneDataCollector -Credential $credZDC 
$Invoke-Command -Session $ZDCSession -ScriptBlock {Add-PSSnapin Citrix.XenApp.Commands} 
$serverStatus = Invoke-Command -Session $ZDCSession -ScriptBlock {Get-XAServer | select ServerName,@{n="InMaintenanceMode";e={ if($_.LogOnMode -like "Prohibit*"){$true}elseif($_.LogOnMode -eq "AllowLogons"){$false} }} | where {$_.ServerName -eq $serverName} | Select InMaintenanceMode} 
Write-Output "Status: $serverStatus.InMaintenanceMode" 
Status: 

は非常に有用ではありません。

スクリプトブロック内のコマンドがローカルで動作するのはなぜですか?例外をスローせずに空の結果セットを返す理由はありますか?

ありがとうございます! DS

リモートサーバー上で、Invoke-Commandコマンドを使用して、あなたは、あなたがスクリプトブロックにのparamsを追加し、argumentslistする必要があり、ローカルマシンから変数を呼び出す必要が

答えて

0

だからあなたのコードが見えるはずですlike

$serverStatus = Invoke-Command -Session $ZDCSession -ScriptBlock {param($serverName) Get-XAServer | select ServerName,@{n="InMaintenanceMode";e={ if($_.LogOnMode -like "Prohibit*"){$true}elseif($_.LogOnMode -eq "AllowLogons"){$false} }} | where {$_.ServerName -eq $serverName} | Select InMaintenanceMode} –argumentlist $serverName 
関連する問題