-
-
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*" |
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.
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.
Code for searching the XML instead of using REGEX on the URL (though it is a bit slower):
$RegexDSIA = '^Dell (OpenManage|(Client )?System) Inventory Agent.*$'
[xml]$DellCatalogXML = Get-Content -Path "c:\temp\DellSDPCatalogPC.xml"
$SoftwarePackageDSIA = @(
$DellCatalogXML.SystemsManagementCatalog.SoftwareDistributionPackage | Where-Object {
$_.LocalizedProperties.Title -match $RegexDSIA
}
)[0]
$DellMSI = $DATA_SPD_DSIAPC.InstallableItem.OriginFile.OriginUri
Also crafted a script that could be modified to work with Intune: https://github.com/Andrew-J-Larson/OS-Scripts/blob/main/Windows/Dell/DSIA-Get-Docks-Example.ps1
Code for searching the XML instead of using REGEX on the URL (though it is a bit slower):
$RegexDSIA = '^Dell (OpenManage|(Client )?System) Inventory Agent.*$' [xml]$DellCatalogXML = Get-Content -Path "c:\temp\DellSDPCatalogPC.xml" $SoftwarePackageDSIA = @( $DellCatalogXML.SystemsManagementCatalog.SoftwareDistributionPackage | Where-Object { $_.LocalizedProperties.Title -match $RegexDSIA } )[0] $DellMSI = $DATA_SPD_DSIAPC.InstallableItem.OriginFile.OriginUriAlso crafted a script that could be modified to work with Intune: https://github.com/Andrew-J-Larson/OS-Scripts/blob/main/Windows/Dell/DSIA-Get-Docks-Example.ps1
Great work! hopefully it will be helpful to all in the future.
Note that if the device that is using the Dock isn't Dell, the MSI package refuses to install. (We have MS Surface using Dell docks)
Note that if the device that is using the Dock isn't Dell, the MSI package refuses to install. (We have MS Surface using Dell docks)
Well, this would make sense, given that the class required to access the dock information would be reaching into Dell platform specific hooks. Something the surfaces wouldn't have, as not having been manufactured by Dell...
For it to work on non-Dell devices, it would probably require more requirements not already installed, likely Dell bloatware to some capacity.
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.