SMS WMI クエリ (現在は 2012 年、以前は VBS を使用した 2007 年) を実行しようとしていますが、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}
またはこれ:
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 サーバーを実行するハードウェアの方が優れているため、速度がサーバーのパフォーマンスに関係しているとは思えません。また、両方のデータベースに同じサイト、システムなどが含まれています。
ご協力ありがとうございました。