Source: deploymentbunny.com
Changed the script for my enviroment
Function Import-SMSTSENV{
try
{
$tsenv = New-Object -COMObject Microsoft.SMS.TSEnvironment
Write-Output "$ScriptName - tsenv is $tsenv "
$MDTIntegration = "YES"
#$tsenv.GetVariables() | % { Write-Output "$ScriptName - $_ = $($tsenv.Value($_))" }
}
catch
{
Write-Output "$ScriptName - Unable to load Microsoft.SMS.TSEnvironment"
Write-Output "$ScriptName - Running in standalonemode"
$MDTIntegration = "NO"
}
Finally
{
if ($MDTIntegration -eq "YES"){
$Logpath = $tsenv.Value("LogPath")
$LogFile = $Logpath + "\" + "$ScriptName.log"
}
Else{
$Logpath = $env:TEMP
$LogFile = $Logpath + "\" + "$ScriptName.log"
}
}
}
Function Start-Logging{
start-transcript -path $LogFile -Force
}
Function Stop-Logging{
Stop-Transcript
}
Function Invoke-Exe{
[CmdletBinding(SupportsShouldProcess=$true)]
param(
[parameter(mandatory=$true,position=0)]
[ValidateNotNullOrEmpty()]
[string]
$Executable,
[parameter(mandatory=$false,position=1)]
[string]
$Arguments
)
if($Arguments -eq "")
{
Write-Verbose "Running $ReturnFromEXE = Start-Process -FilePath $Executable -ArgumentList $Arguments -NoNewWindow -Wait -Passthru"
$ReturnFromEXE = Start-Process -FilePath $Executable -NoNewWindow -Wait -Passthru
}else{
Write-Verbose "Running $ReturnFromEXE = Start-Process -FilePath $Executable -ArgumentList $Arguments -NoNewWindow -Wait -Passthru"
$ReturnFromEXE = Start-Process -FilePath $Executable -ArgumentList $Arguments -NoNewWindow -Wait -Passthru
}
Write-Verbose "Returncode is $($ReturnFromEXE.ExitCode)"
Return $ReturnFromEXE.ExitCode
}
# Set vars
$SCRIPTDIR = split-path -parent $MyInvocation.MyCommand.Path
$SCRIPTNAME = split-path -leaf $MyInvocation.MyCommand.Path
$SOURCEROOT = "$SCRIPTDIR\Source"
$SettingsFile = $SCRIPTDIR + "\" + $SettingsName
$LANG = (Get-Culture).Name
$OSV = $Null
$ARCHITECTURE = $env:PROCESSOR_ARCHITECTURE
#Try to Import SMSTSEnv
. Import-SMSTSENV
# Set more vars
$computerSystem = Get-CimInstance CIM_ComputerSystem
$Make = $tsenv.Value("Make")
$Model = $computerSystem.Model
$ModelAlias = $tsenv.Value("ModelAlias")
$MakeAlias = $tsenv.Value("MakeAlias")
#Start Transcript Logging
. Start-Logging
#Output base info
Write-Output ""
Write-Output "$ScriptName - ScriptDir: $ScriptDir"
Write-Output "$ScriptName - SourceRoot: $SOURCEROOT"
Write-Output "$ScriptName - ScriptName: $ScriptName"
Write-Output "$ScriptName - Current Culture: $LANG"
Write-Output "$ScriptName - Integration with MDT(LTI/ZTI): $MDTIntegration"
Write-Output "$ScriptName - Log: $LogFile"
Write-Output "$ScriptName - Model (win32_computersystem): $((Get-WmiObject Win32_ComputerSystem).model)"
Write-Output "$ScriptName - Name (Win32_ComputerSystemProduct): $((Get-WmiObject Win32_ComputerSystemProduct).Name)"
Write-Output "$ScriptName - Version (Win32_ComputerSystemProduct): $((Get-WmiObject Win32_ComputerSystemProduct).Version)"
Write-Output "$ScriptName - Model (from TSENV): $Model"
Write-Output "$ScriptName - ModelAlias (from TSENV): $ModelAlias"
#Check Model
if($((Get-WmiObject Win32_ComputerSystem).model) -eq 'HP EliteBook 8560w'){
Write-Output "Model is $((Get-WmiObject Win32_ComputerSystem).model)"
Write-Output "Checking BIOS Version"
Write-Output "Version is $((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion)"
if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -ne '68SVD Ver. F.50'){
Write-Output "Needs upgrade"
$Exe = 'hpqflash.exe'
$Location = "$SCRIPTDIR\Source\HP EliteBook 8560w"
$Executable = $Location + "\" + $exe
Set-Location -Path $Location
Invoke-Exe -Executable "$Executable" -Arguments "/s /p LCadmin1.bin" -Verbose
}
else
{
Write-Output "No Need to upgrade"
}
}
if($((Get-WmiObject Win32_ComputerSystem).model) -eq 'HP ProBook 6570b'){
Write-Output "Model is $((Get-WmiObject Win32_ComputerSystem).model)"
Write-Output "Checking BIOS Version"
Write-Output "Version is $((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion)"
if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -Like '*ICE*'){
if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -ne '68ICE Ver. F.62'){
Write-Output "Needs upgrade"
$Exe = 'hpqflash.exe'
$Location = "$SCRIPTDIR\Source\HP ProBook 6570b"
$Executable = $Location + "\" + $exe
Set-Location -Path $Location
Invoke-Exe -Executable "$Executable" -Arguments "/s /f 68ICE.cab" -Verbose
}
else
{
Write-Output "No Need to upgrade"
}
}
if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -Like '*ICF*'){
if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -ne '68ICF Ver. F.62'){
Write-Output "Needs upgrade"
$Exe = 'hpqflash.exe'
$Location = "$SCRIPTDIR\Source\HP ProBook 6570b"
$Executable = $Location + "\" + $exe
Set-Location -Path $Location
Invoke-Exe -Executable "$Executable" -Arguments "/s /f 68ICF.cab" -Verbose
}
else
{
Write-Output "No Need to upgrade"
}
}
}
if($((Get-WmiObject Win32_ComputerSystem).model) -eq 'Latitude 7480'){
Write-Output "Model is $((Get-WmiObject Win32_ComputerSystem).model)"
Write-Output "Checking BIOS Version"
Write-Output "Version is $((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion)"
if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -ne '1.2.9'){
Write-Output "Needs upgrade"
$Exe = 'Latitude_7x80_1.2.9.exe'
$Location = "$SCRIPTDIR\Source\Latitude 7480"
$Executable = $Location + "\" + $exe
Set-Location -Path $Location
Invoke-Exe -Executable "$Executable" -Arguments "/s /p=Password" -Verbose
}
else
{
Write-Output "No Need to upgrade"
}
}
if($((Get-WmiObject Win32_ComputerSystem).model) -eq 'Latitude E7470'){
Write-Output "Model is $((Get-WmiObject Win32_ComputerSystem).model)"
Write-Output "Checking BIOS Version"
Write-Output "Version is $((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion)"
if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -ne '1.12.3'){
Write-Output "Needs upgrade"
$Exe = 'Latitude_E7x70_1.12.3.exe'
$Location = "$SCRIPTDIR\Source\Latitude E7470"
$Executable = $Location + "\" + $exe
Set-Location -Path $Location
Invoke-Exe -Executable "$Executable" -Arguments "/s /p=Password" -Verbose
}
else
{
Write-Output "No Need to upgrade"
}
}
if($((Get-WmiObject Win32_ComputerSystem).model) -eq 'HP Compaq dc7900 Small Form Factor'){
Write-Output "Model is $((Get-WmiObject Win32_ComputerSystem).model)"
Write-Output "Checking BIOS Version"
Write-Output "Version is $((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion)"
if($((Get-WmiObject Win32_Bios).SMBIOSBIOSVersion) -ne '786G1 v01.27'){
Write-Output "Needs upgrade"
$Exe = 'hpqflash.exe'
$Location = "$SCRIPTDIR\Source\HP Compaq dc7900 Small Form Factor\HPQFlash"
$Executable = $Location + "\" + $exe
$SourceFile = $Location + "\" + "Password01.bin"
$Destination = $env:TEMP
$DestinationFile = $Destination + "\" + "Password01.bin"
Copy-Item -Path $SourceFile -Destination $DestinationFile -Force -Verbose
Set-Location -Path $Location
Invoke-Exe -Executable $Executable -Arguments "/s /p $DestinationFile"
}
else
{
Write-Output "No Need to upgrade"
}
}
#Stop Logging
. Stop-Logging
This is how it is in MDT.

This is the folder structure
