Невозможно передать переменную для получения запроса объекта 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 не нужно.

Другие вопросы по тегам