• About me…
  • VMware
  • Powershell
  • DIY

ConfigMgr.nl

VMware, PowerShell, Automation, and more…

  • About me…
  • VMware
  • Powershell
  • DIY

Powershell – Get SCCM Client info from WMI

6 juni 2017 ConfigMgr Powershell SCCM Script No Comments

Last week I was busy with a deployment and this week the question came up “does every server have a SCCM client installed”. My first reaction was “yes” but after a close look at our SCCM sites I wasn’t sure. The problem I had was that there are multiple AD domains linked to multiple SCCM sites, so if one site showed ‘Client=No’ that didn’t mean the server didn’t have a client. It only meant that the server didn’t have a client in that particular site. So only looking at SCCM wouldn’t give me the answer.

What if I would use AD as a source for my search? Dump every computer object into a list and run through that list to obtain information about the client. The challenge with that approach was that AD contains computer objects that are not really computer objects… For instance, if you build a Failover Cluster the cluster itself creates a computer object and also the cluster resources use computer objects. So using AD as a starting point was of the table.

Another possible source was vCenter. As vCenter contains all the (virtual) servers I could use that as a source. A small problem was that in the DTA (Development, Test, and Acceptance) domains a lot of servers were turned off. So I had to use a filter to get the correct list of servers. And I had to filter on the OS of the VM…

The script I finally put together looked like this:

[code language=”powershell”]
<#
.SYNOPSIS
Get SCCM client information from WMI(based on vSphere VM’s)
.DESCRIPTION
Use this script if you need to retrieve SCCM client information
.PARAMETER vCenterServer
Name of the vCenter Server
.EXAMPLE
.\Get-CMClientInfo.ps1 -vCenterServer ‘vcserver.domain.local’
Retrieve SCCM client info from all VM’s under the vCenter Server vcserver.domain.local
.NOTES
Script name: Get-CMClientInfo.ps1
Author: Jeroen Buren
DateCreated: 06-06-2017
#>

[CmdletBinding(SupportsShouldProcess=$true)]

param(
[parameter(Mandatory=$true,HelpMessage="Name of the vCenter Server")]
[ValidateScript({Test-Connection -ComputerName $_ -Count 1 -Quiet})]
[string]$vCenterServer
)

#———————————————————-
# STATIC VARIABLES
#———————————————————-
$ProgressCount = 0
$Results = @()

#———————————————————-
# FUNCTIONS
#———————————————————-

function Get-VMFolderPath {
Begin {}
Process {
foreach ($vm in $Input) {
$DataCenter = $vm | Get-Datacenter
$DataCenterName = $DataCenter.Name
$VMname = $vm.Name
$VMParentName = $vm.Folder
if ($VMParentName.Name -eq "vm") {
$FolderStructure = "{0}\{1}" -f $DataCenterName, $VMname
$FolderStructure
Continue
}
else {
$FolderStructure = "{0}\{1}" -f $VMParentName.Name, $VMname
$VMParentID = Get-Folder -Id $VMParentName.ParentId
do {
$ParentFolderName = $VMParentID.Name
if ($ParentFolderName -eq "vm") {
$FolderStructure = "$DataCenterName\$FolderStructure"
$FolderStructure
break
}
$FolderStructure = "$ParentFolderName\$FolderStructure"
$VMParentID = Get-Folder -Id $VMParentID.ParentId
}
until ($VMParentName.ParentId -eq $DataCenter.Id)
}
}
}
End {}
}

#———————————————————-
# SCRIPTBODY
#———————————————————-

# Connect to vCenter Server
Connect-VIServer -Server $vCenterServer | Out-Null

# Select the VMs..
$VMs = Get-VM | Where {($_.PowerState -eq ‘PoweredOn’) -and ($_.Guest -match ‘Microsoft Windows Server’)} | Sort-Object -Property Name
# ..and count them
$ComputerCount = $VMs.Count

Foreach ($VM in $VMs) {
$ProgressCount++
$Computer = $VM.Name
$Folder = $VM | Get-VMFolderPath
Write-Progress -Activity "Getting SCCM client information…" -Id 1 -Status "$($ProgressCount) / $($ComputerCount)" -CurrentOperation "$Computer" -PercentComplete (($ProgressCount / $ComputerCount) * 100)
#If (Test-Connection -ComputerName $Computer -Count 1 -Quiet) {
Try {
$ClientVersion = $(Get-WMIObject -Query "SELECT ClientVersion FROM SMS_Client" -Namespace "root/ccm" -Computername $Computer -ErrorAction Stop | Select ClientVersion).ClientVersion
$SiteCode = $($([WMIClass]"\\$Computer\root\ccm:SMS_Client").GetAssignedSite() | Select sSiteCode).sSiteCode
$Object = [pscustomobject]@{
Computername = $Computer
Folder = $Folder
SiteCode = $SiteCode
ClientVersion = $ClientVersion
}
$Results += $Object
}
Catch {
$Object = [pscustomobject]@{
Computername = $Computer
Folder = $Folder
SiteCode = "Unknown"
ClientVersion = "Unknown"
}
$Results += $Object
}
#}
}

$Results #| Export-Csv -Path <path to CSV file> -NoTypeInformation

# Disconnect from the vCenter Server
Disconnect-VIServer -Server $vCenterServer -Confirm:$false[/code]

clientsccmwmi

SCCM - Windows Update settings and errors

SCCM - Duplicate Device Records

Geef een reactie Antwoord annuleren

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

Meest recente berichten

  • Handy one-liners
  • The system has insufficient locker space for the image profile
  • Testing Script Runtime Service for vSphere – part 2
  • Reporting on your Windows Server backup
  • Testing Script Runtime Service for vSphere – part 1

Jeroen BurenFollow

Jeroen Buren
jeroen_burenJeroen Buren@jeroen_buren·
15 apr

Had some spare time... So I did the HCI Master Specialist Exam and nailed it ;-) #vExpert #VMware #HCI

Reply on Twitter 1382574365389258752Retweet on Twitter 1382574365389258752Like on Twitter 138257436538925875220Twitter 1382574365389258752
jeroen_burenJeroen Buren@jeroen_buren·
15 apr

Join VMware's global event on May 5th & 6th to see their strategy for the new distributed workforce. There will be 13 technical sessions on @WorkspaceONE and @vmwarehorizon, @VMwareSDWAN, @vmw_carbonblack, and more! https://www.vmware.com/anywhere-workspace-event.html?src=so_6075a9bbde44b&cid=7012H000001l6vL #AnywhereWorkspace

Reply on Twitter 1382569804020744192Retweet on Twitter 1382569804020744192Like on Twitter 13825698040207441922Twitter 1382569804020744192
jeroen_burenJeroen Buren@jeroen_buren·
10 apr

Go #XRP Go... To infinity and beyond!

Reply on Twitter 1380903963772469253Retweet on Twitter 1380903963772469253Like on Twitter 13809039637724692531Twitter 1380903963772469253
jeroen_burenJeroen Buren@jeroen_buren·
10 apr

En weer 3 minuten kou geleden...

Reply on Twitter 1380801147368304640Retweet on Twitter 1380801147368304640Like on Twitter 13808011473683046401Twitter 1380801147368304640
jeroen_burenJeroen Buren@jeroen_buren·
5 apr

Het wordt nu toch echt lente!! 😂 #SpringTime

Reply on Twitter 1379101934813114375Retweet on Twitter 1379101934813114375Like on Twitter 13791019348131143754Twitter 1379101934813114375
Load More...

Categorieën

Proudly powered by WordPress | Theme: Doo by ThemeVS.