Restored local copy after branch mishap.

This commit is contained in:
Alexis Lazcano 2024-12-16 18:41:23 -06:00
parent e144217834
commit eaaf430e4d

View File

@ -12,10 +12,9 @@
Unfortunately, this field is not writeable without the use of a tool from Lenovo. This script helps automate the process of obtaining the asset tag from Snipe-IT and writing it to the BIOS for later retrieval through WMI.
#>
#Check if running as Administrator...
#region Check if running in elevated context
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
{
# If not elevated, re-launch the script with elevated privileges
$params = @{
FilePath = "powershell.exe"
Verb = "RunAs"
@ -25,30 +24,36 @@ if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]:
Start-Process @params -Wait
exit
}
#endregion Check if running in elevated context
$ScriptRoot = "$env:PROGRAMFILES\SCMG\Scripts"
$ScriptLogs = "$ScriptRoot\Logs"
$ScriptTemp = "$ScriptRoot\Temp"
if (!(Test-Path -Path $ScriptLogs)) { New-Item -Path $ScriptLogs -ItemType Directory -Force | Out-Null }
if (!(Test-Path -Path $ScriptTemp)) { New-Item -Path $ScriptTemp -ItemType Directory -Force | Out-Null }
#region Get asset information from WMI/CIM and add it to new hashtable
$ComputerSystemProduct = Get-CIMInstance -ClassName Win32_ComputerSystemProduct -NameSpace root\CIMV2
$CurrentSMBIOSAssetTag = Get-CIMInstance -ClassName Win32_SystemEnclosure -NameSpace root\CIMV2 | Format-Table -Property SMBIOSAssetTag
$PSComputerInfo = @{ }
$PSComputerInfo.Add("serial", $($ComputerSystemProduct.IdentifyingNumber))
$PSComputerInfo.Add("manufacturer", $($ComputerSystemProduct.Vendor))
$PSComputerInfo.Add("model_number", $($ComputerSystemProduct.Name))
$PSComputerInfo.Add("model_name", $($ComputerSystemProduct.Version))
#endregion Get asset information from WMI/CIM and add it to new hashtable
#Load variables from .env file in to env:\ drive.
function Load-EnvFile
{
[CmdletBinding()]
Param ()
#Exit with an error if there's not .env file in the current working directory.
if (!(Test-Path -Path .env)) { Write-Error ".env file does not exist in $((Get-Location).Path)\ `nPlease double check it exists and is named properly."; Exit 404 }
$EnvFile = Get-Content .env | where {!([string]::IsNullOrWhiteSpace($_)) -and ($_ -notlike "#*")}
$EnvFile = Get-Content .env | where { !([string]::IsNullOrWhiteSpace($_)) -and ($_ -notlike "#*") }
foreach ($Line in $EnvFile)
{
$variableKey, $variableValue = $Line.split('=')
Write-Verbose "$variableKey will be set to $variableValue"
Set-Content env:\$variableKey $variableValue
Set-Content env:\$variableKey $variableValue
}
}
@ -73,64 +78,38 @@ function Get-SnipeAssetNumber
else
{
return $response.asset_tag
}
}
function Get-BiosTool
{
[CmdletBinding(ConfirmImpact = 'Medium')]
param
(
[Parameter(Mandatory = $true,
Position = 1)]
[String]$DeviceType
)
switch ($DeviceType) {
Desktop {
Invoke-WebRequest -Uri "$env:AMIDEWINx64_URL" -OutFile "$ScriptTemp\AMIDEWINx64.zip"
try
{
Expand-Archive -Path "$ScriptTemp\AMIDEWINx64.zip" -DestinationPath "$ScriptTemp" -Force
}
catch
{
Write-Host "An error occurred:"
Write-Host $_
}
finally
{
Remove-Item "$ScriptTemp\AMIDEWINx64.zip" -Force
}
}
Laptop {
#<code>
}
default {
exit
}
}
}
If ($ComputerSystemProduct.Vendor -like "Lenovo")
If ($PSComputerInfo.manufacturer -like "Lenovo")
{
Get-BiosTool -DeviceType Desktop
$PSComputerInfo = @{ }
$PSComputerInfo.Add("serial", $($ComputerSystemProduct.IdentifyingNumber))
$PSComputerInfo.Add("model_number", $($ComputerSystemProduct.Name))
$PSComputerInfo.Add("model_name", $($ComputerSystemProduct.Version))
$SnipeAssetTag = Get-SnipeAssetNumber -Serial $PSComputerInfo.serial
$params = @{
FilePath = "$ScriptTemp\AMIDEWINx64\AMIDEWINx64.exe"
ArgumentList = "/CA `"$SnipeAssetTag`""
switch -wildcard ($PSComputerInfo.model_name)
{
"ThinkCentre*" {
Invoke-WebRequest -Uri "$env:AMIDEWINx64_URL" -OutFile "$ScriptTemp\Lenovo-Asset-Tag-Writer.zip"
$params = @{
FilePath = "$ScriptTemp\AMIDEWINx64\AMIDEWINx64.exe"
ArgumentList = "/CA `"$SnipeAssetTag`""
}
}
"ThinkPad*" {
Invoke-WebRequest -Uri "$env:WINAIA_URL" -OutFile "$ScriptTemp\Lenovo-Asset-Tag-Writer.zip"
$params = @{
FilePath = "$ScriptTemp\WINAIA\WinAIA64.exe"
ArgumentList = "-set `"USERASSETDATA.ASSET_NUMBER=`"$SnipeAssetTag`"`""
}
}
default {
Write-Error "Device model not supported."
exit 99
}
}
Expand-Archive -Path "$ScriptTemp\Lenovo-Asset-Tag-Writer.zip" -DestinationPath "$ScriptTemp" -Force
Remove-Item "$ScriptTemp\Lenovo-Asset-Tag-Writer.zip" -Force
Start-Process @params -Wait -NoNewWindow
Remove-Item $ScriptTemp\* -Recurse
}
else
@ -141,8 +120,8 @@ else
# SIG # Begin signature block
# MIIvYQYJKoZIhvcNAQcCoIIvUjCCL04CAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBJvdq7f24iN171
# +rfGmoyWkbHBZh/RhhkGQIP0j4bv+KCCKGYwggQyMIIDGqADAgECAgEBMA0GCSqG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCknNZ3BWTVBjx3
# QI2DdsPw9Qtwj9YGGOLljsSJ2MVKqKCCKGYwggQyMIIDGqADAgECAgEBMA0GCSqG
# SIb3DQEBBQUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNo
# ZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1p
# dGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2VydmljZXMwHhcNMDQwMTAx
@ -361,35 +340,35 @@ else
# MYIGUTCCBk0CAQEwaDBUMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBM
# aW1pdGVkMSswKQYDVQQDEyJTZWN0aWdvIFB1YmxpYyBDb2RlIFNpZ25pbmcgQ0Eg
# UjM2AhAtmKdfiMvdO1IQbTd6fBa6MA0GCWCGSAFlAwQCAQUAoEwwGQYJKoZIhvcN
# AQkDMQwGCisGAQQBgjcCAQQwLwYJKoZIhvcNAQkEMSIEILiWYcPV5h9SEoxBpC27
# JeuPmhi0Wj6b7uVIAD4SlDmqMA0GCSqGSIb3DQEBAQUABIICAAWabBJRESgzorwW
# 2B9XCmIRZBWwoTn8XFLZf45lpswWLr+dMQz7bag4YeEuOCiW6xVRLlY83NHPWlDE
# CKjwecdhvo2Tl/KerOTcdZixNiRbtqjnxLZBY2CpQYKRkWyEEBnwlFmPxECaEKpQ
# oBOeuvpcy7IO8VD4hcoelFf4RGGH9eO+kMOMsUblQa0848b6+It3qmUAWu3uHMuS
# 9UAB8MRw8GJpjn6ymJC5uoSKCgO86MTFMm33SW5RYTvopMB58JEwg7ZSBJSamnMb
# yWxqrOpReEY8dBnWEFSsmWT103FOCNjUzf3vbnnILPAFwXqLlR6eRTDwroNO+GBe
# i1u3aPFkU49zkVTgwLEjjbNiXtK4u+P/nWLOYRZBnzXdNSwHo2CeoyBRPsAfi01R
# lY+MG0yWgBuHejaEba/cKoTZErXMwANth/Bt7mlEfASwcbjScc8zSE5l8Ob7QUn7
# 4uzNT1lPwfLUr22q94fTO7ghPL3+QPQJSBaGZD0Dhz1NGpT2MGLKj+TOwI3vN7fe
# oo0+oRlhS6yFMuQmOJguOW5Bv7RYaPXs4ygDCIo2/ikmEhK+BGTfPxy5uxHEiO04
# ljWBG4iUiUrbGBDoAVTN6SZuugjP7u14vo8kdS3ySR/lgTkJgg04EO7yqmYPUeds
# jcRkldLIHzDs3B7O8nLZT9wHEE6ToYIDbDCCA2gGCSqGSIb3DQEJBjGCA1kwggNV
# AQkDMQwGCisGAQQBgjcCAQQwLwYJKoZIhvcNAQkEMSIEIEtcCPjZMfhtxOgmQshL
# couMo5iphBqNHVwI5LWPe1XHMA0GCSqGSIb3DQEBAQUABIICAAuNU2SEf35xaTGn
# sXyh3xuXEFWRlGQWT310UFIRcy4PcDvEVj82DGkwo8CQRYOI3vRmfVq4esz5MP6K
# oINNDBBci7VtrR7ls8esVE2+w4uj0AEBjT0I5hT4NVFvQiihQFyIYD+B/Ei0b22r
# CEcxsr/0EDiugnfyZGPiN8AN/TEtobRh/sWmJTG+Ie3+8G17hs5JNhByVYLzo0hN
# g3U48WZhje7nJJa61Z9TBaTSC3P02KZXemqADf/GFedco/SDeVac+ADiipuqJaFa
# PSXrJiAxSmBmUwzdhUxrxF3Nq/f6rp1gpsSMUxSd/m0pCVIyWzlGThqt0G5HZp8g
# hJ9Y+veLHZ8VWckGnr+bDdgW6Il0kW3JRqF90D8Htid3UF8bem+QpE/oyUzSyRkO
# mLJ+hxzrFJMtZ6JGQs7PWP4t08ABGdlk18Sc7/JS5ywFMdVwOxj4bqAe9aEsbpy/
# IASU3ROvNZiCDp2jFCYKRjJXm9tnxrOAyi2xSb7r7jHv83gNro0vWfmUOMCLhOrB
# 6X8BzokKwxIv8ff7k2JwF4iBw+EaUSjlziur1Lo4WqF3Ie1Bo2neA7fqh2xWjhUY
# fAfmrVw304LOr+xgV1CXFjAYLuWRC5NeZeA6fxiUGlYUTR/4AQ9urPIupkodzm1j
# oXR45kXr+SEXasrarAn1G8ViNznMoYIDbDCCA2gGCSqGSIb3DQEJBjGCA1kwggNV
# AgEBMG8wWzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex
# MTAvBgNVBAMTKEdsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gU0hBMzg0IC0g
# RzQCEAEHZJsIsKf+fdZUqPL0KfYwCwYJYIZIAWUDBAIBoIIBPTAYBgkqhkiG9w0B
# CQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yNDEyMTYyMTM0NDRaMCsG
# CQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yNDEyMTcwMDM5NTJaMCsG
# CSqGSIb3DQEJNDEeMBwwCwYJYIZIAWUDBAIBoQ0GCSqGSIb3DQEBCwUAMC8GCSqG
# SIb3DQEJBDEiBCCMgwQNoEdvo9nwFeuglFIwxtvpzpeBx9DVkl8i9UyI0zCBpAYL
# SIb3DQEJBDEiBCDsQWi4AJ+q/D3ngPGfrAf5yiolSzU4btYkWbYvuysupTCBpAYL
# KoZIhvcNAQkQAgwxgZQwgZEwgY4wgYsEFETTk5zNG4h/hnrM2oHsrw9l/NJZMHMw
# X6RdMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEw
# LwYDVQQDEyhHbG9iYWxTaWduIFRpbWVzdGFtcGluZyBDQSAtIFNIQTM4NCAtIEc0
# AhABB2SbCLCn/n3WVKjy9Cn2MA0GCSqGSIb3DQEBCwUABIIBgExwWCxLeEi/WyGM
# WjVegUELgPn0KW+A9m9x7NJhQcfiNShFXp7+o6KmzyPB+Rex/PdJIpKe2DiFO/C+
# uSWG55NSHLJJk5X+hCs0GKoYdXXqhFHd9KujQRforSgp9ey8RsDl5O6hO4yl4wzM
# SbHbMsEsfTqMRwNqHvjEy4JMyuQ9QB6BtoJtBtLmL+/Vt4AI1aBuUrvl5r+EDpIV
# jjhkX5ByvNOLQGwvG/GM1PVtNfwCcLMybChJvd+UmkzTz0b7LELsqj/T9w8iqkxr
# OnvHcHlevWEbe5dC0+si2mRaJ0lMxjx+xXYShETYNEKL6oOKfAnzadz2k3Dmix5a
# LRr9H/hT7D+L4Wo5KBx8C47LmfdxKM6rJG7r5sdLejg1Jpi9M+Vr9/rZ7gEcdFw+
# QJpf5nl+O2fLPFLHpeltEKT77y1dCjt36y/wlllTuAjbgVixxzwJs4gbdit4uiXn
# 0EtLOABXrEd3YZsdRFvd/vzAgU8pYLeqZDA6e4YtMOeE0DTXpQ==
# AhABB2SbCLCn/n3WVKjy9Cn2MA0GCSqGSIb3DQEBCwUABIIBgEHnjlrDy0Ax4u1e
# iWOzYH2gf/PyLbPJWTJJtNr1CnQmcu6prIJcUA73DnSHrgndyRvVax2BsNNHFYwK
# 6PPfUtSa9Tx5Znah+juAzkX7wpUBqGrXWyLEdDFteEZzORCs5gN6PuhL7P8Hccp4
# G/MWpbOb354jZhb7s1UgPKkZcvLzl1N1WzR5NAbW3MSGKX6Aw91OHqGPi+03xAGP
# UVmqCSovtnXNQoPgmOJSnqyU579mJPV03Tbngw1CrIupZBTkeXACfDyHoHwR4vTE
# tUKJEhjwh0tINFTzC0tbcQKfkHpTzcjycAP+3cjXRUQzgA0EtYXdP2XovKmaQxsj
# Fm3HOCuqprPQQ0XHrsmA8tCNJe+BHAkrDuxNdNfHS5KglnsQAt9qvnUdbf11MBPA
# LWSsPb9P084++TtZi0znnZ9v8kpyOsav0GBXAXF8x/Q4T0oBOr50qsyjOpqNGBtm
# Y4Xi489w64hG6Uk8T7CM725wUK0kxL2GAHQvkiCMagjwvzXYVA==
# SIG # End signature block