Powershell
通過 PowerShell 檢索 SCCM 集合成員資格
我想找到一個 PowerShell 腳本來檢索給定電腦或使用者的 SCCM 集合。我知道這可以通過 SCCM 查詢來實現,但我想使用 PowerShell 函式來實現。
該腳本應適用於 SCCM 2007 和 SCCM 2012。
這是執行此操作的 PowerShell 函式:
$Server = "sccm-01" $site = "S01" Function Get-Collections { <# .SYNOPSIS Determine the SCCM collection membership .DESCRIPTION This function allows you to determine the SCCM collection membership of a given user/computer .PARAMETER Type Specify the type of member you are querying. Possible values : 'User' or 'Computer' .PARAMETER ResourceName Specify the name of your member : username or computername .EXAMPLE Get-Collections -Type computer -ResourceName PC001 Get-Collections -Type user -ResourceName User01 .Notes Author : Antoine DELRUE WebSite: http://obilan.be #> param( [Parameter(Mandatory=$true,Position=1)] [ValidateSet("User", "Computer")] [string]$type, [Parameter(Mandatory=$true,Position=2)] [string]$resourceName ) #end param Switch ($type) { User { Try { $ErrorActionPreference = 'Stop' $resource = Get-WmiObject -ComputerName $server -Namespace "root\sms\site_$site" -Class "SMS_R_User" | ? {$_.Name -ilike "*$resourceName*"} } catch { Write-Warning ('Failed to access "{0}" : {1}' -f $server, $_.Exception.Message) } } Computer { Try { $ErrorActionPreference = 'Stop' $resource = Get-WmiObject -ComputerName $server -Namespace "root\sms\site_$site" -Class "SMS_R_System" | ? {$_.Name -ilike "$resourceName"} } catch { Write-Warning ('Failed to access "{0}" : {1}' -f $server, $_.Exception.Message) } } } $ids = (Get-WmiObject -ComputerName $server -Namespace "root\sms\site_$site" -Class SMS_CollectionMember_a -filter "ResourceID=`"$($Resource.ResourceId)`"").collectionID # A little trick to make the function work with SCCM 2012 if ($ids -eq $null) { $ids = (Get-WmiObject -ComputerName $server -Namespace "root\sms\site_$site" -Class SMS_FullCollectionMembership -filter "ResourceID=`"$($Resource.ResourceId)`"").collectionID } $array = @() foreach ($id in $ids) { $Collection = get-WMIObject -ComputerName $server -namespace "root\sms\site_$site" -class sms_collection -Filter "collectionid=`"$($id)`"" $Object = New-Object PSObject $Object | Add-Member -MemberType NoteProperty -Name "Collection Name" -Value $Collection.Name $Object | Add-Member -MemberType NoteProperty -Name "Collection ID" -Value $id $Object | Add-Member -MemberType NoteProperty -Name "Comment" -Value $Collection.Comment $array += $Object } $array }
只需調整值 $ Server and $ 根據您的環境的站點變數。
以下是如何使用此功能的範例:
Get-Collections -Type computer -ResourceName PC001 Get-Collections -Type user -ResourceName User01
結果將是一個表格,顯示與電腦或使用者關聯的集合 ID、集合名稱和註釋。
希望這可以幫助!