Skip to content

Instantly share code, notes, and snippets.

@jazzbanzai
Created February 20, 2022 10:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • 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 29, 2022

Hey.
Love that this is automated to the point it could potentially run as a script for an MSP or company; however, it seems that you have to run the script multiple times - the failures seem to indicate that the commands are not waiting for completion before continuing execution.

Unfortunately I'm not versed enough in powershell to correct this. Any possibility that you might be able to update this to make the commands execute and wait?

I could possibly re-write this to use batch and helper programs like wget, but powershell seems like a more elegant solution.

@jazzbanzai
Copy link
Author

jazzbanzai commented Nov 29, 2022

Was just posted here for this reddit thread:
https://www.reddit.com/r/Dell/comments/glmgge/tip_how_to_get_a_docking_station_serial_number/

I'm sure there are definitely better ways to-do it. (Including correcting all my spelling mistakes)

PS. If its a new'er' dock - like the WD19 - can use the Firmware tool to scrape the Serial Number info.

@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