我正在努力为SCCM创建WQL查询,因为我确实很新,并且很少以复杂的方式使用它。
我的目标是列出3件事:计算机名称-显示名称(“ Google Chrome”)-显示版本(该Google Chrome条目的版本)
我从这里开始:
equals1<-function(x){
if(is.null(x)){
return(FALSE)
}else if(is.na(x)){
return(FALSE)
}else{return(x==1)}
}
c(equals1(1),equals1(Inf),equals1(NA),equals1(NULL),equals1(NaN))
# [1] TRUE FALSE FALSE FALSE FALSE
输出对我来说有点奇怪:
$SiteCode = "XXX"
$SiteServer = "XXX"
$query = @"
select SMS_R_System.Name, SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName, SMS_G_System_ADD_REMOVE_PROGRAMS.Version
from SMS_R_System
inner join SMS_G_System_ADD_REMOVE_PROGRAMS
on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId
where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName = "Google Chrome"
"@
Get-WmiObject -namespace root\sms\site_$SiteCode -computer $SiteServer -query $query
我在这里想念什么?同样,我真的很陌生,因此我必须缺少逻辑的关键部分。
如果我删除:
__GENUS : 2
__CLASS : __GENERIC
__SUPERCLASS :
__DYNASTY : __GENERIC
__RELPATH :
__PROPERTY_COUNT : 2
__DERIVATION : {}
__SERVER : XXX
__NAMESPACE : root\sms\site_PR1
__PATH :
SMS_G_System_ADD_REMOVE_PROGRAMS : System.Management.ManagementBaseObject
SMS_R_System : System.Management.ManagementBaseObject
PSComputerName : XXX
查询有效,并向我显示所有安装了Chrome的计算机:
, SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName, SMS_G_System_ADD_REMOVE_PROGRAMS.Version
但是我也想要这2个属性,而不仅仅是计算机名,这样我就可以确认版本号。
非常感谢。
答案 0 :(得分:1)
答案是像@TheIncorrigible所指出的那样简单地“扩展”字典。
所以这就是我最终使用Select-Object中的Name / Expression方法完成此操作的方法:
std::unordered_set
答案 1 :(得分:1)
以替代方式扩展我的评论以解决当前的问题:
$wmiParams = @{
Namespace = 'root/sms/site_XXX'
ComputerName = 'XXX'
Query = @'
SELECT SMS_R_System.Name, SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName, SMS_G_System_ADD_REMOVE_PROGRAMS.Version
FROM SMS_R_System
INNER JOIN SMS_G_System_ADD_REMOVE_PROGRAMS
ON SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId
WHERE SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName = "Google Chrome"
'@
}
$smsResults = Get-WmiObject @wmiParams
foreach ($object in $smsResults) {
[pscustomobject]@{
ComputerName = $object['SMS_R_System']['Name']
DisplayName = $object['SMS_G_System_ADD_REMOVE_PROGRAMS']['DisplayName']
Version = $object['SMS_G_System_ADD_REMOVE_PROGRAMS']['Version']
}
}