SCCM Powershell - 检索 "lazy" 属性

SCCM Powershell - Retrieving a "lazy" property

假设我 运行:

获取 CMDeployment -CollectionName "gar25*" | select CollectionName、ApplicationName、PackageID、DeploymentTime、EnforcementDeadline |外网格视图

这为我提供了与用户关联的多个部署所需的所有信息,但值 "EnforcementDeadline" 为空,我猜这是一个惰性 属性。 我将如何取回它?我找到了这篇文章:

https://trevorsullivan.net/2010/09/28/powershell-configmgr-wmi-provider-feat-lazy-properties/#comment-3628074206

但我真的很难调整代码。

非常感谢您的宝贵时间。

EnforcementDeadline 是应用程序部署的 属性。您正在尝试从不存在的包部署中读取它,因为它们可以有多个分配的计划,这些计划可以是一次性的,也可以是重复的(例如每天)。如果您使用 Get-CMApplicationDeploymentGet-CMPackageDeployment,您将获得正确类型的对象,以便您可以访问这些值。

我提供了一个示例,该示例将检测部署是否针对包并检索其计划的 StartTime 值(我假设它们是非重复的)。

$DeadlineColumn = @{
    Name="EnforcementDeadline"
    Expression={
        if($_.FeatureType -eq 2 -or $_.FeatureType -eq 7) {
            #Package or task sequence
            #Get assignment-starttime (ignoring daily/hourly etc.)
            (Get-CMPackageDeployment -DeploymentId $_.DeploymentID).AssignedSchedule | Select-Object -ExpandProperty StartTime
        } else {
            #Application
            $_.EnforcementDeadline
        }
    }
}

Get-CMDeployment -CollectionName "abc" | select CollectionName, ApplicationName, PackageID, DeploymentTime, $DeadlineColumn | out-gridview

@Frode F。我对你感激不尽,这太完美了,也节省了时间。这是我的最终解决方案:

$DeadlineColumn = @{
    Name="EnforcementDeadline"
    Expression={
        if($_.FeatureType -eq "2" -or $_.FeatureType -eq "TaskSequence") {

            (Get-CMPackageDeployment -DeploymentId $_.DeploymentID).AssignedSchedule | Select-Object -ExpandProperty StartTime
        } else {
            (Get-CMTaskSequenceDeployment -DeploymentId $_.DeploymentID).AssignedSchedule | Select-Object -ExpandProperty StartTime
        }
    }
}


$ExpirationColumn = @{
    Name="ExpirationTime"
    Expression={
        if($_.FeatureType -eq "2" -or $_.FeatureType -eq "TaskSequence") {

            (Get-CMPackageDeployment -DeploymentId $_.DeploymentID).ExpirationTime 
        } else {
             (Get-CMTaskSequenceDeployment -DeploymentId $_.DeploymentID).ExpirationTime 
        }
    }
}

Get-CMDeployment -CollectionName "gar25*" | select CollectionName, ApplicationName, PackageID, DeploymentTime, $DeadlineColumn, $ExpirationColumn | out-gridview

returns 包和部署的所有时间!