Ajout dela structure MDT dans Infra-LAB
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
#Define Variables
|
||||
$ts = new-object -comobject microsoft.sms.tsenvironment
|
||||
$ErrorReturnCode = $ts.value("_SMSTSLastActionSucceeded")
|
||||
$UpgradeErrorReturnCode = $ts.value("_SMSTSLastActionRetCode")
|
||||
$My_DeployRoot = $ts.value("DeployRoot")
|
||||
$Step_Lang = $ts.value("Item_Name")
|
||||
$Step_Version = $ts.value("Item_Version")
|
||||
$Computer_Name = $ts.value("MyComputer")
|
||||
$exeName = ""
|
||||
$srcDir = $My_DeployRoot + "\Scripts\BIOSUpgrade\Lenovo\"
|
||||
$localBiosFolder = "X:\bios"
|
||||
$csproduct = Get-WmiObject -Class Win32_ComputerSystemProduct -Namespace root\cimv2
|
||||
$deviceID = $csproduct.Name + '-' + $csproduct.IdentifyingNumber
|
||||
$type = $csproduct.Version.Split()[0]
|
||||
$model = $csproduct.Version.Split(' ', 2)[1]
|
||||
$osArc = (Get-WmiObject -Class Win32_OperatingSystem -Namespace root\cimv2).OSArchitecture
|
||||
$BiosCode = (Get-WmiObject -Class Win32_BIOS -Namespace root\cimv2).SMBIOSBIOSVersion.Substring(0,4)
|
||||
$log = $srcDir + 'logs\' + $deviceID + '.log'
|
||||
|
||||
#Locate and Copy BIOS Folder
|
||||
Write-Host "Locating BIOS folder"
|
||||
$folder = Get-ChildItem -Path $srcDir | ? {$_.Name -eq $BiosCode}
|
||||
if($folder -eq $null)
|
||||
{
|
||||
"Could not find folder for $deviceID. Looking for $BiosCode" | out-file $log
|
||||
Write-Host "Could not locate BIOS folder"
|
||||
Write-Host "Examine log file on the share for more information"
|
||||
return
|
||||
}
|
||||
Write-Host "Located BIOS folder"
|
||||
|
||||
Write-Host "Begin BIOS Files Copy"
|
||||
Copy-Item ($srcDir + $folder + '\*') $localBiosFolder -Recurse
|
||||
Write-Host "Completed BIOS Files Copy"
|
||||
|
||||
#Execute BIOS Flash and Reboot
|
||||
Write-Host "Executing BIOS Flash"
|
||||
If($type -eq "ThinkPad")
|
||||
{
|
||||
$exeName = if($osArc -eq "32-bit") {"WINUPTP.EXE"} else {"WINUPTP64.EXE"}
|
||||
$arg1 = "-s"
|
||||
|
||||
& .\$exeName $arg1 | Out-Null
|
||||
|
||||
If (Test-Path $localBiosFolder\winuptp.log)
|
||||
{
|
||||
Copy-Item $localBiosFolder\winuptp.log $log # Copy the log file for this device to the network share for auditing purposes.
|
||||
}
|
||||
Else
|
||||
{
|
||||
"Could not find log file for $deviceID" | out-file $log
|
||||
Write-Host "Could not locate Winuptp.log file"
|
||||
}
|
||||
Write-Host "Completing BIOS Flash..."
|
||||
Write-Host "..."
|
||||
Write-Host "Rebooting"
|
||||
& "wpeutil" reboot
|
||||
}
|
||||
ElseIf($type -eq "ThinkCentre" -or ($type -eq "ThinkStation" -and $model -like "P3*"))
|
||||
{
|
||||
& ".\Flash.cmd" /ign /sccm /quiet | Out-File $log # Check the readme.txt to ensure that each WFlash2.exe supports the /SCCM (Reboot Suppress) switch.
|
||||
Write-Host "Completing BIOS Flash..."
|
||||
Write-Host "..."
|
||||
Write-Host "Rebooting"
|
||||
& "wpeutil" shutdown # This needs to be a shutdown command, as the ThinkCentre BIOS documentation states
|
||||
# that the computer needs to reach an S5 power state to complete the update of the
|
||||
# BIOS. Computer will actually reboot.
|
||||
}
|
||||
ElseIf($type -eq "ThinkStation")
|
||||
{
|
||||
$exeName = if($osArc -eq "32-bit") {"AFUWIN.EXE"} else {"AFUWINx64.EXE"}
|
||||
$ROMName = Get-ChildItem -Path $localBiosFolder -Include "*.ROM" -Name
|
||||
& .\$exeName $ROMName /P /B /N /R /SP /RTB /FIT | Out-File $log
|
||||
Write-Host "Completing BIOS Flash..."
|
||||
Write-Host "..."
|
||||
Write-Host "Rebooting"
|
||||
& "wpeutil" reboot
|
||||
}
|
||||
Else
|
||||
{
|
||||
"Unable to determine type of machine for $deviceID" | out-file $log
|
||||
Write-Host "Unable to determine type of machine for $deviceID"
|
||||
}
|
||||
Reference in New Issue
Block a user