SCCM Powershell - 检索 "lazy" 属性
SCCM Powershell - Retrieving a "lazy" property
假设我 运行:
获取 CMDeployment -CollectionName "gar25*" | select CollectionName、ApplicationName、PackageID、DeploymentTime、EnforcementDeadline |外网格视图
这为我提供了与用户关联的多个部署所需的所有信息,但值 "EnforcementDeadline" 为空,我猜这是一个惰性 属性。
我将如何取回它?我找到了这篇文章:
但我真的很难调整代码。
非常感谢您的宝贵时间。
EnforcementDeadline
是应用程序部署的 属性。您正在尝试从不存在的包部署中读取它,因为它们可以有多个分配的计划,这些计划可以是一次性的,也可以是重复的(例如每天)。如果您使用 Get-CMApplicationDeployment
和 Get-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 包和部署的所有时间!
假设我 运行:
获取 CMDeployment -CollectionName "gar25*" | select CollectionName、ApplicationName、PackageID、DeploymentTime、EnforcementDeadline |外网格视图
这为我提供了与用户关联的多个部署所需的所有信息,但值 "EnforcementDeadline" 为空,我猜这是一个惰性 属性。 我将如何取回它?我找到了这篇文章:
但我真的很难调整代码。
非常感谢您的宝贵时间。
EnforcementDeadline
是应用程序部署的 属性。您正在尝试从不存在的包部署中读取它,因为它们可以有多个分配的计划,这些计划可以是一次性的,也可以是重复的(例如每天)。如果您使用 Get-CMApplicationDeployment
和 Get-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 包和部署的所有时间!