2015-12-09 3 views
0

Я пытаюсь получить два свойства из двух отдельных команд и добавить их к переменной, чтобы иметь возможность дальнейшей оценки. мне сказали, пользовательский объект будет работать ...Пытается создать собственный список объектов? хэш? - Unsure

Clear-Host 
Add-PSSnapin citrix* -ErrorAction SilentlyContinue 

$DRSrvs = Get-XAServer drptsw00* | select -ExpandProperty servername 
$hash = $null 
$hash = @{} 

foreach ($DR in $DRSrvs) { 
    $hash = New-Object PsObject -Property @{ 
     servername = $DR 
     Logins = (Get-XALoadEvaluator -ServerName $DR).LoadEvaluatorName 
    } 
} 

ответ

4

Хеш для отображения (уникальных) ключей к значениям. Если вам нужно сопоставить разные имена серверов для имен входа, используйте хеш-таблицу, иначе используйте пользовательские объекты. В любом случае вам необходимо правильно обрабатывать структуры данных.

Hashtable:

$hash = @{} 

foreach ($DR in $DRSrvs) { 
    $hash[$DR] = (Get-XALoadEvaluator -ServerName $DR).LoadEvaluatorName 
} 

Пользовательский список объектов:

$list = foreach ($DR in $DRSrvs) { 
    New-Object PsObject -Property @{ 
     servername = $DR 
     Logins = (Get-XALoadEvaluator -ServerName $DR).LoadEvaluatorName 
    } 
} 

Назначение что-то переменной в цикле заменяет предыдущее значение этой переменной с каждой итерации, оставляя вам только последнее значение после завершения цикла.

0

Я использовал этот метод и получил очень чистый выход. Citrix SDK для Powershell, если он очень забавный и имеет много ошибок.

Clear-Host 
Add-PSSnapin citrix* -ErrorAction SilentlyContinue  

$OutputData = $null 
$OutputData = @() 
$Srvs = Get-XAServer Srv123* | Select-Object -ExpandProperty ServerName 
$object = New-Object PSObject 
Add-Member -InputObject $object -MemberType NoteProperty -Name Servername -Value "" 
Add-Member -InputObject $object -MemberType NoteProperty -Name LoadEval -Value "" 

foreach ($Srv in $Srvs) { 
    $servername= $Srv 
    $LoadEval = ((Get-XALoadEvaluator -ServerName $Srv).LoadEvaluatorName) 
    $appObject = New-Object System.Object 
    $appObject | 
     Add-Member -MemberType NoteProperty -Name "ServerName" -Value $servername -PassThru | 
     Add-Member -MemberType NoteProperty -Name "LoadEval" -Value $LoadEval 
    $outputData += $appObject 
} 
Смежные вопросы