无法获得 Get-CMDeploymentType 的第一个值 Objcet/Array

Can't optain first value of an Get-CMDeploymentType Objcet/Array

我有一个大型脚本,用于在 SCCM 中创建应用程序。该脚本的一部分是添加应用程序的取代

由于搜索可能的 Supercedence 需要很长时间,我 运行 这是在后台作业中

Script-Block for Background Job $Super_func1

#$SSeed has a Part of an App Name String that is optained from the Start-job Argument

$appoldname = Get-CMApplication | where-object {$_.LocalizedDisplayName -like "*$SSeed*" } | select-object-first 1 -Property LocalizedDisplayName
Get-CMDeploymentType -ApplicationName $appoldname.LocalizedDisplayName

我按照下面的方式开始这个


$job = @()
$job += Start-Job -ArgumentList @($AppSupersedence) -ScriptBlock $Super_func1

等待作业完成后,我收到了作业并想访问 AppModelName 的第一个条目 有了这些信息,我想 运行 一个 Get-CMApplication -ModelName $Modelname 应用程序可能有多个结果(两个部署类型),因此 AppModelName 有多个值。

Wait-Job -job $job  | Out-Null

$deployment23 = receive-job -job $job -keep

但我只能使用 foreach 循环访问第一个值。 这对我来说似乎很奇怪......所以我想我做错了一些愚蠢的事情

#this does not work
 $result23 = Get-CMApplication -ModelName $deployment23.AppModelName(0) --> Error
#This does not work
 $arrayresultme = $deployment23.AppModelName(0) --> Error
#This does work
 foreach ($Modelname in $deployment23.AppModelName){
    $result23 = ""
    $result23 = Get-CMApplication -ModelName $Modelname
    break
 }

我得到的错误是:

方法调用失败,因为 [Deserialized.IResultObject#SMS_DeploymentType] 不包含名为“AppModelName”的方法。

任何关于我为什么必须使用 foreach 的提示都将不胜感激

在 PowerShell 中,使用标准括号通常会尝试调用 method/function。

要从数组中检索值,您需要使用方括号,如下所示:

Get-CMApplication -ModelName $deployment23.AppModelName[0]