在PowerShell中检索远程SMS WMI查询的更快方法

在PowerShell中检索远程SMS WMI查询的更快方法,sms,remote-access,wmi-query,sccm,Sms,Remote Access,Wmi Query,Sccm,我正在尝试执行一个SMS WMI查询(现在是2012年,以前是2007年,使用VBS),当使用Get-WMIObject命令时,有时需要20分钟(海外)和5-10分钟(系统在楼下)。我知道如何在VBS中进行更快的调用: lLocator = CreateObject("WbemScripting.SWbemLocator") gService = lLocator.ConnectServer(Form1.strSQLServer, "root/sms/site_

我正在尝试执行一个SMS WMI查询(现在是2012年,以前是2007年,使用VBS),当使用Get-WMIObject命令时,有时需要20分钟(海外)和5-10分钟(系统在楼下)。我知道如何在VBS中进行更快的调用:

        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}
invoke命令{Get WmiObject-namespace root\sms\site\u类sms\u packagestatusdistpoints聚合器-computername'''-属性“PackageID”,“SourceNALPath”|其中{$\ PackageID-eq'}|选择PackageID,SourceNALPath}
或者这个:

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\u类sms\u packagestatusdistpoints聚合器-computername''-属性“PackageID”,“SourceNALPath”|其中{$\ PackageID-eq'}|选择PackageID,SourceNALPath
这两个都是相同的速度。有没有更好、理想的方法来完成与VB脚本相同的事情(远程连接、检索信息,然后返回)?VB脚本的速度明显更快。运行SCCM2012服务器的硬件更好,所以我认为速度与服务器性能无关。两个数据库也包含相同的站点、系统等

谢谢你的帮助

试试这个:

Get-WmiObject -namespace root\sms\site_$sitecode `
              -computername "$compname" `
              -query "select PackageID, SourceNALPath from SMS_PackageStatusDistPointsSummarizer where PackageID='$pkgname'"
使用其他powershell语句,您可以查询所有内容,然后在本地进行筛选。对于在VBS中运行的WMI查询,查询在服务器端完成。要处理的数据更少,处理效率也更高