Невозможно передать переменную для получения запроса объекта wmi
Надеюсь, вы могли бы помочь мне с моей проблемой. Я попытался импортировать список пакетов в переменную $list и список серверов DP в переменную с именем $DP. Я использовал foreach и write-host и подтвердил, что все элементы в переменной отображаются нормально, но когда я использую переменную в объекте get-wmi в качестве параметра для фильтрации $i.packageid, он пуст /null. Посоветуйте, пожалуйста, как решить эту проблему.
образец кода
$list=import-csv -Path 'C:\Users\Administrator\desktop\SCCM\packagelist.csv'
$DP="SCCMDP1","SCCMDP2"
foreach ($i in $list)
{
write-host "Item is $($i)" # showing ok
write-host "package is $($i.package)" # showing ok
write-host "packageid is $($i.packageid)" # showing ok
get-wmiobject -namespace root\sms\site_v01 -class sms_distributiondpstatus -Filter {packageid like "$i.packageid"}|select name
1 ответ
Вы называете переменные в параметрах иначе, чем в Write-Host
звонки. Вы не можете получить доступ к свойствам объекта без подвыражения в строке $()
,
$list = import-csv -Path 'C:\Users\Administrator\desktop\SCCM\packagelist.csv'
$DP = 'SCCMDP1','SCCMDP2'
foreach ($i in $list)
{
write-host "Item is $i" # showing ok
write-host "package is $($i.package)" # showing ok
write-host "packageid is $($i.packageid)" # showing ok
Params = @{
Namespace = 'root\sms\site_v01'
Class = 'sms_DistributionDPStatus'
Filter = "PackageId LIKE '%$($i.PackageId)%'"
}
Get-WmiObject @Params | Select-Object -Property Name
}
Если вы не собираетесь использовать групповые символы, используйте LIKE
Сравнение WQL не нужно.