Videos
Do any of you fine folks have experience pushing out Dell BIOS updates remotely using powershell? I banged my head against my keyboard for a couple hours yesterday trying to get this to work.
All the other parts of my script worked just fine, but the invoke-command part doesn't seem to work.
Invoke-Command -ComputerName $PC -Scriptblock {Start-Process C:\Temp\BIOSupdate.exe -ArgumentList '/s /r /p="$password"'}
I can RDP to the system and run this exact command in powershell and it works, but doing it via PSSession or using Invoke-Command fails and I can't seem to get why. Anybody have any insight to what I'm doing wrong?
*Edited for formatting*
Im currently trying to deal with a situation in my organization where we have ~350 Dell systems on our network with vulnerable BIOS versions that need to get patched yesterday…
One major problem that makes things difficult is that our network has a group policy that blocks Admin accounts from using windows update, and pretty much any resource that reaches out to the internet.
Right now, we’re having to download the firmware manually and RDP into every single system, copy the firmware from a shared location and install it.
I’ve messed around with temporarily granting my user account Remote Desktop access by pushing the following command to devices using PSSession:
Add-LocalGroupMember -Group “Remote Desktop Users” -Member “Domain\User”
With that, I can at least remote into those systems and install the firmware update from Windows Update… but it’s not really a solution due to the fact that I’m still having to remote into each individual system.
If anyone has any ideas that could potentially work for my situation, I would appreciate it!
I know there are many ways to update drivers / BIOS during a Task Sequence, but since we have some remote sites that use a Cloud task sequence, I wrote a couple of scripts to download the latest Dell driver package / BIOS package from Dell during a "Run PowerShell Script" Task Sequence step and inject the drivers / install the BIOS during the WinPE phase.
I thought someone might find them useful so you can find links to them below; you are welcome to make modifications to better suit your own environment.
OSD Dell Driver Injector (treat 0 as success code, currently hardcoded to look for Windows 11 drivers and only supports EXE format packages, but easy enough for you to add W10 / cab support if you need to)
OSD Dell BIOS Updater (treat 0, 2, 3 and 8 as success codes, and if you want to reboot straight away to install it, put a restart computer step after it with a condition of _SMSTSLastActionRetCode equal to 2)
At work, we’ve had a lot of issues with TPM ceasing to work. Sometimes the chip has disappeared completely and we have to remove any batteries (laptop AND cmos) and do a power drain for it to come back. So far, we’ve worked out a process to update the BIOS and TPM and it works, but it’s all manual, as seen below. Dell however has this Guide here for scripting but I don’t quite understand how to create a script that utilizes PowerShell AND uses Dell Command to install BIOS update and Firmware update. I understand all of the powershell specific commands, but I’m unsure how to integrate Dell Command into this to automate updating the BIOS and then using the correct firmware tool to update the TPM chip. I have no experience with Dell Command at all really.
Alternatively, if I just need to manually download the BIOS and TPM Firmware Updater for each series and move a folder to the PC then run scripts, I can do that too. I just need to figure out the syntax to install a firmware update from Powershell.
1) Suspend Bitlocker
2) Power down and disharge flea power/self-heal (disconnect CMOS battery and all other batteries, then hold down power button for 20 seconds).
After powering back up, hopefully now it's found...
Then..
(Start here if the TPM IS showing up in the BIOS)
3) Suspend Bitlocker
4) Update Bios (restart)
5) Turn off autoprovisioning with Powershell: "Disable-TpmAutoProvisioning"
(restart)
6) Go to BIOS during restart (F2). Then Security > TPM 1.2/2.0 Security. Clear the TPM.
6a) If you missed the F2 and didn't get to the Bios, suspend Bitlocker
6b) Navigate to the Control Panel\All Control Panel Items\Bitlocker Drive Encryption
Left click the TPM Administration in bottom left corner.
Left click the Clear TPM option under Actions.
Clear TPM and restart.
7) Run TPM firmware update found at the link below:
Latitude 90 series and Optiplex 60 series:
https://www.dell.com/support/home/en-us/drivers/driversdetails?driverid=xc8df
Latitude 80 series and Optiplex 50 series
https://www.dell.com/support/home/en-us/drivers/driversdetails?driverid=rf87d
Click the "Enter Details" button to make sure you have the right updater for your device. You can enter the serial number.
(restart)
9) Intialize TPM and resume Bitlocker
Update-StorageFirmware (Storage)
Use this topic to help manage Windows and Windows Server technologies with Windows PowerShell.
Hello,
I have a small issue using this tool which I find pretty great right now, I have successfully used it to set up system pwd and admin pwd, but for some other options the tool doesn't find the path that are described in the documentation, such as:
DellSmbios:\Security\PasswordBypass
DellSmbios:\Keyboard\RgbPerKeyKbdLang .
PS C:\windows\system32> Set-Item -Path DellSmbios:\Security\PasswordBypass "RebootAndResumeBypass" Set-Item : Attribute: 'PasswordBypass' does not exist!
Would you have any idea as to why it does that or what am I missing in my configuration?
PS: I'd like to stick to this tool, I know some other options exist using a server (DCM) but that's not possible atm.
I'm looking to make a report of which of our servers need BIOS updates, and what the latest version is. I'm not looking to install the updates via PowerShell, just to retrieve info about which server need it, and how many versions behind we are.
Is that possible?
Doesn't have to be through PowerShell, but that's what integrated into our other utilities so that'd be preferred. Could be a PowerShell script that calls an API or whatever.
Ideally, I'd just want something that I can run on each server, that would return Current Version and Latest Version and that's it.
Thanks!