Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 是否尝试创建自定义对象列表?散列?-不确定_Powershell_Hashtable_Citrix_Custom Object_Pscustomobject - Fatal编程技术网

Powershell 是否尝试创建自定义对象列表?散列?-不确定

Powershell 是否尝试创建自定义对象列表?散列?-不确定,powershell,hashtable,citrix,custom-object,pscustomobject,Powershell,Hashtable,Citrix,Custom Object,Pscustomobject,我试图从两个单独的命令中获取两个属性,并将它们添加到一个变量中,以便进一步计算。 我被告知自定义对象可以工作 Clear-Host Add-PSSnapin citrix* -ErrorAction SilentlyContinue $DRSrvs = Get-XAServer drptsw00* | select -ExpandProperty servername $hash = $null $hash = @{} foreach ($DR in $DRSrvs) { $hash

我试图从两个单独的命令中获取两个属性,并将它们添加到一个变量中,以便进一步计算。 我被告知自定义对象可以工作

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
    }
}

哈希表用于将(唯一)键映射到值。如果需要将不同的服务器名映射到登录名,请使用哈希表,否则请使用自定义对象。无论哪种方式,都需要正确处理数据结构

哈希表:

$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
    }
}

为循环中的变量赋值将在每次迭代中替换该变量中的前一个值,在循环完成后只剩下最后一个值。

哈希表用于将(唯一)键映射到值。如果需要将不同的服务器名映射到登录名,请使用哈希表,否则请使用自定义对象。无论哪种方式,都需要正确处理数据结构

哈希表:

$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
    }
}

为循环中的某个变量赋值会在每次迭代中替换该变量中以前的值,在循环结束后只剩下最后一个值。

我使用了这种方法,得到了非常清晰的输出。适用于Powershell的Citrix SDK非常有趣,并且有很多陷阱

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
}

我使用了这个方法,得到了一个非常干净的输出。适用于Powershell的Citrix SDK非常有趣,并且有很多陷阱

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
}