Skip to content

Instantly share code, notes, and snippets.

@jazzbanzai
Created February 20, 2022 10:49
Show Gist options
  • Save jazzbanzai/36f81008429724134b2a39fe72b3e521 to your computer and use it in GitHub Desktop.
Save jazzbanzai/36f81008429724134b2a39fe72b3e521 to your computer and use it in GitHub Desktop.
#REF1: https://www.dell.com/support/kbdoc/en-in/000126566/windows-how-to-identify-your-dell-docking-station-using-powershell
Set-Location -Path C:\temp
$dellcabURL = 'https://downloads.dell.com/catalog/DellSDPCatalogPC.cab'
$fileName = $dellcabURL.Substring($dellcabURL.LastIndexOf('/') + 1)
#Download Dell Cab
Invoke-WebRequest -URI $dellcabURL -UseBasicParsing -OutFile "c:\temp\$fileName"
#Extact DellSDPCatalogPC.xml
& extrac32.exe "c:\temp\$fileName" DellSDPCatalogPC.xml /Y
#find the line (would be beettr ro pharse the XML)
$MSIregex = 'https:\/\/.*DSIA.*.msi'
$DellMSI = Get-Content -Path "c:\temp\DellSDPCatalogPC.xml" | Select-String -pattern $MSIregex | foreach {$_.Matches.Value}
#Download install the Dell-MSI (dell client system inventory agent)
$fileName = $DellMSI.Substring($DellMSI.LastIndexOf('/') + 1)
Invoke-WebRequest -Uri $DellMSI -UseBasicParsing -OutFile "c:\temp\$fileName"
Start-Process msiexec.exe -Wait -ArgumentList "/i `"C:\temp\$fileName`" /qn /l*v `"C:\temp\$fileName.log`" "
#get inventory +dock
gwmi -n root\dell\sysinv dell_softwareidentity | select * | where elementname -like "*WD*"
@jboznw
Copy link

jboznw commented Nov 30, 2022 via email

@NOLA-CML
Copy link

NOLA-CML commented Mar 7, 2023

I know this is a tad old, just came across this and modified it for our use, figured I'd share.

#REF1: https://www.dell.com/support/kbdoc/en-in/000126566/windows-how-to-identify-your-dell-docking-station-using-powershell
$path = "$env:temp"
Set-Location -Path $path
$dellcabURL = 'https://downloads.dell.com/catalog/DellSDPCatalogPC.cab'
$fileName = "$path\$($dellcabURL.Substring($dellcabURL.LastIndexOf('/') + 1))"

#Download Dell Cab
(New-Object net.webclient).Downloadfile($dellcabURL, $fileName) #I find this is faster than Invoke-WebRequest

#Extact DellSDPCatalogPC.xml
Start-Process extrac32.exe -Wait -ArgumentList "$fileName DellSDPCatalogPC.xml /Y"

#find the line (would be beettr ro pharse the XML)
$MSIregex = 'https:\/\/.*DSIA.*.msi' 
$DellMSI = Get-Content -Path "$path\DellSDPCatalogPC.xml" | Select-String -pattern $MSIregex | foreach {$_.Matches.Value}

#Install the Dell-MSI (dell client system inventory agent)
Start-Process msiexec.exe -Wait -ArgumentList "/i $DellMSI /qn /l*v `"$path\DSIA.log`" " #MSIs can be installed via url

do{
	$error.clear
	try{
		#get inventory +dock
		Get-CimInstance -Namespace root\dell\sysinv -ClassName dell_softwareidentity -ErrorAction Stop | select ElementName,SerialNumber | where elementname -like "*WD*"
	}
	catch{
		Write-Output "CimInstance not ready"
		Start-Sleep -Seconds 5
	}
} while ($error) #found that it would take time for the namespace to be available.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment