Я пытаюсь выполнить запрос SMS WMI (теперь 2012, ранее 2007 с VBS), и иногда это занимает до 20 минут (за границей) и 5-10 минут (система вниз) при использовании команды Get-WMIObject. Я знаю, как сделать быстрый вызов в VBS:Более быстрый способ получить удаленный запрос WMI WMS в PowerShell
lLocator = CreateObject("WbemScripting.SWbemLocator")
gService = lLocator.ConnectServer(Form1.strSQLServer, "root/sms/site_" & Form1.strSiteCode)
'Query for Distribution Points and populate drop down list
colItems = gService.ExecQuery("select PackageID, SourceNALPath from SMS_PackageStatusDistPointsSummarizer where PackageID='" & listBootImage.SelectedItem.ID & "'")
For Each objItems In colItems
ListDistPoint.Items.Add(UCase(Mid(objItems.SourceNALPath, InStr(objItems.SourceNALPath, "\"))))
If InStr(objItems.SourceNALPath, Mid(Form1.strSQLServer, 1, (InStr(Form1.strSQLServer, ".") - 1))) Then
ListDistPoint.SelectedIndex = ListDistPoint.Items.Count - 1
End If
Next
И в PS это вызов Делаю:
invoke-command {Get-WmiObject -namespace root\sms\site_<sitecode> -class SMS_PackageStatusDistPointsSummarizer -computername '<compname>' -property "PackageID","SourceNALPath" | where {$_.PackageID -eq '<pkgname>'} |Select PackageID, SourceNALPath}
или это:
Get-WmiObject -namespace root\sms\site_<sitecode> -class SMS_PackageStatusDistPointsSummarizer -computername '<compname>' -property "PackageID","SourceNALPath" | where {$_.PackageID -eq '<pkgname>'} |Select PackageID, SourceNALPath
и оба те же скорость. Есть ли лучший, идеальный способ сделать то же самое, что и в сценарии VB (удаленное подключение, получение информации, а затем вернуться)? Сценарий VB заметно быстрее. Аппаратное обеспечение сервера SCCM 2012 лучше, поэтому я не считаю, что скорость связана с производительностью сервера. Также обе базы данных содержат одни и те же сайты, системы и т. Д.
Благодарим за помощь.