Fixed/Refactored function to load environment variables from .env file. Refactored other stuff as well.
This commit is contained in:
parent
fdc25dfbab
commit
307723ce82
@ -2,12 +2,10 @@
|
||||
#e.g. https://snipe-it.contoso.com/api/v1/
|
||||
SNIPEIT_URL=
|
||||
|
||||
|
||||
#API Token generated from Snipe-IT -- instructions here:
|
||||
#https://snipe-it.readme.io/reference/generating-api-tokens
|
||||
SNIPEIT_TOKEN=
|
||||
|
||||
|
||||
#The download location for AMIDEWINx64 and WINAIA -- should be a zip file.
|
||||
AMIDEWINx64_URL=
|
||||
WINAIA_URL=
|
||||
@ -5,10 +5,9 @@
|
||||
Created by: Alexis Lazcano
|
||||
===========================================================================
|
||||
.DESCRIPTION
|
||||
Lenovo computers contain a BIOS property to store a device's asset tag.
|
||||
Unfortunately, this field is not writeable without the use of a 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.
|
||||
Lenovo computers contain a BIOS property to store a device's asset tag accessible via WMI/CIM.
|
||||
Get-CIMInstance -ClassName Win32_SystemEnclosure -NameSpace root\CIMV2 | Format-Table -Property SMBIOSAssetTag
|
||||
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...
|
||||
@ -20,23 +19,7 @@ if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]:
|
||||
exit
|
||||
}
|
||||
|
||||
#Load variables from .env file in to env:\ drive.
|
||||
function Load-EnvFile
|
||||
{
|
||||
#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 $MyInvocation.MyCommand.Path. Please double check it exists and is named properly."; Exit 404 }
|
||||
Get-Content .env | foreach {
|
||||
$variableKey, $variableValue = $_.split('=')
|
||||
if ([string]::IsNullOrWhiteSpace($variableKey) -or $variableKey.Contains('#'))
|
||||
{
|
||||
continue
|
||||
}
|
||||
Set-Content env:\$variableKey $variableValue
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Load-EnvFile
|
||||
$VerbosePreference = 'SilentlyContinue'
|
||||
|
||||
$ScriptRoot = "$env:PROGRAMFILES\SCMG\Scripts"
|
||||
$ScriptLogs = "$ScriptRoot\Logs"
|
||||
@ -45,18 +28,36 @@ $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 }
|
||||
|
||||
$ComputerSystemProduct = Get-CIMInstance -ClassName Win32_ComputerSystemProduct -NameSpace root\CIMV2
|
||||
$CurrentSMBIOSAssetTag = Get-CIMInstance -ClassName Win32_SystemEnclosure -NameSpace root\CIMV2 | Format-Table -Property SMBIOSAssetTag
|
||||
|
||||
function Get-AssetNumber
|
||||
#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 "#*")}
|
||||
foreach ($Line in $EnvFile)
|
||||
{
|
||||
$variableKey, $variableValue = $Line.split('=')
|
||||
Write-Verbose "$variableKey will be set to $variableValue"
|
||||
Set-Content env:\$variableKey $variableValue
|
||||
}
|
||||
}
|
||||
|
||||
Load-EnvFile
|
||||
|
||||
function Get-SnipeAssetNumber
|
||||
{
|
||||
param
|
||||
(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[String]$Serial
|
||||
)
|
||||
|
||||
$baseURI = $env:SNIPEIT_URL
|
||||
$hardwareURI = $baseURI + "hardware"
|
||||
|
||||
$headers = @{ }
|
||||
$headers.Add("accept", "application/json")
|
||||
$headers.Add("Authorization", "Bearer $env:SNIPEIT_TOKEN")
|
||||
@ -70,40 +71,62 @@ function Get-AssetNumber
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "Downloading AMIDEWINx64"
|
||||
Invoke-WebRequest -Uri "$env:AMIDEWIN_URL" -OutFile "$ScriptTemp\AMIDEWINx64.zip"
|
||||
|
||||
try
|
||||
function Get-BiosTool
|
||||
{
|
||||
Expand-Archive -Path "$ScriptTemp\AMIDEWINx64.zip" -DestinationPath "$ScriptTemp" -Force
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host "An error occurred:"
|
||||
Write-Host $_
|
||||
}
|
||||
finally
|
||||
{
|
||||
Remove-Item "$ScriptTemp\AMIDEWINx64.zip" -Force
|
||||
}
|
||||
[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
|
||||
}
|
||||
}
|
||||
|
||||
$ComputerSystemProduct = Get-CIMInstance -ClassName Win32_ComputerSystemProduct -NameSpace root\CIMV2
|
||||
$CurrentSMBIOSAssetTag = Get-CIMInstance -ClassName Win32_SystemEnclosure -NameSpace root\CIMV2 | Format-Table -Property SMBIOSAssetTag
|
||||
}
|
||||
|
||||
If ($ComputerSystemProduct.Vendor -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-AssetNumber -Serial $PSComputerInfo.serial
|
||||
$SnipeAssetTag = Get-SnipeAssetNumber -Serial $PSComputerInfo.serial
|
||||
|
||||
Set-Location $ScriptTemp
|
||||
|
||||
.\AMIDEWINx64\AMIDEWINx64.exe /CA "$SnipeAssetTag"
|
||||
|
||||
Remove-Item $ScriptTemp\* -Recurse
|
||||
|
||||
Set-Location -Path $(Split-Path $MyInvocation.MyCommand.Path -Parent)
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -113,8 +136,8 @@ else
|
||||
# SIG # Begin signature block
|
||||
# MIIvYQYJKoZIhvcNAQcCoIIvUjCCL04CAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||||
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDw+YpSrIJcWYVE
|
||||
# J2s8uvZ7sUTuDqxcPjAaSCMlFWDTHqCCKGYwggQyMIIDGqADAgECAgEBMA0GCSqG
|
||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBjs+JMqPrrbeXe
|
||||
# t6xlvmH3J2Sz9PE5IwjBOfPiZ1qFfqCCKGYwggQyMIIDGqADAgECAgEBMA0GCSqG
|
||||
# SIb3DQEBBQUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNo
|
||||
# ZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1p
|
||||
# dGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2VydmljZXMwHhcNMDQwMTAx
|
||||
@ -333,35 +356,35 @@ else
|
||||
# MYIGUTCCBk0CAQEwaDBUMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBM
|
||||
# aW1pdGVkMSswKQYDVQQDEyJTZWN0aWdvIFB1YmxpYyBDb2RlIFNpZ25pbmcgQ0Eg
|
||||
# UjM2AhAtmKdfiMvdO1IQbTd6fBa6MA0GCWCGSAFlAwQCAQUAoEwwGQYJKoZIhvcN
|
||||
# AQkDMQwGCisGAQQBgjcCAQQwLwYJKoZIhvcNAQkEMSIEILvjUGuwDeF+SJPc7jo7
|
||||
# aZWzCfaPf8kaf9ObGFMjJU4TMA0GCSqGSIb3DQEBAQUABIICAKavR/fgitIBACCs
|
||||
# IoEGyR83mzm/o7FdhhMkL8cWL/7/i0mgtfJJHhyHGvMDfT8pXQa4tRj558BlCJD2
|
||||
# zjdNY9ga5jYAOehGAh6uBx8Eqokq48k2+cWSfBbn1AcyOawG2PUig3j126aNbtbl
|
||||
# 9AzO6ZbGfwrHRjaCXkMllrhGZ+oYJyLZaZs3vY3F/2R1YPFw8oL9qIDGOGQq/ktE
|
||||
# gOalV/3YKSIntzfPgsqGNvdN6RBLURX+FiSXWvB3qFnFoF4NgIvCpqMW8psLVU6L
|
||||
# 6x7T6RK96jNNOaBT6HK8X3ACYiCmFzuIWizqYZxkX4OeJi3YfOy9xuFKuFJg48qB
|
||||
# tAs+9jTO9j6p8aUHrLrO99Rsj3XNowhBem6GuFVjE1j1QzvLzzVvEWl3qN1bpqv5
|
||||
# 5n9iiDZ76sTWGHdWiyCwkN8BMLBwNlwuenbQQERQNpsbWn4zoieWiA7e8YL/GViU
|
||||
# NHBJUsRP8HpiB6x01Ft83+BKRo+JX8+C2119bo8zvympY+LsA9kghU3iJM2Iqhkh
|
||||
# NpJHhX/GyFOiXysLixsbbM/3LHpfH5CHXBVBGWHnpURnOALXAMpvS0eXhQHQhZ+V
|
||||
# Nv2S4wWIkqKAHI25JxHoN2avCmOcTRmNjY8wlP+yhOp5VsTJS1fLYHR/1m/0XkNz
|
||||
# bWTPwK6xjyco57oontN5+Zdx8yCboYIDbDCCA2gGCSqGSIb3DQEJBjGCA1kwggNV
|
||||
# AQkDMQwGCisGAQQBgjcCAQQwLwYJKoZIhvcNAQkEMSIEIFOdqQKPKOWFNMHwKbkP
|
||||
# CK2ODm7gDc2gt+OYMrA4HNziMA0GCSqGSIb3DQEBAQUABIICAJX9FMRkuRNmHtPv
|
||||
# yE0TLddNY70BlBqQDEU9Dtv5u4PlUbVZ2jZY2ELQPTAq1jjXyNqr1fXI9AVoUBuz
|
||||
# TfTcalj+3DsYZVqaiiBlVdQ2DDrZJLv7Z3IAGAWl9NBlgjIlSP0PdGYZ7b0128iu
|
||||
# RoCSvTl6GB3ptGSWQ6MYMc1pdYarv+Wi8OM73I1MU4qWOsH65Y2AgLGWKgEpueZt
|
||||
# Y3rQ1bInMODFkk4FwFfZv/QCCEVJK7jEwzM7HnVfvWZiR3cV09MtTE81ZHs5ZKnR
|
||||
# vWnxd2yFEH+ui+E7Omfhy/F3zp+D5g2agpSxGwmiKTi1ULW3fRImpy9vUuXwrLQJ
|
||||
# idOMCbPtvqSAc6wKCR8jJDhj6GcNpRHX6l/DZbYoCq7S87KwV7AQfneDzz+utm4G
|
||||
# ydRi3I8yZ6HRiLFrDVWgCHH9Ajp5/LXztOFNBuIJahwtiVzvRLlkY3nw8K4i0Ia6
|
||||
# /v4HArENnGYjeyz6g2of1i5m7vuOnHUbgeKTimeyelwpjDV8h6Lzup6tRd8zoc/A
|
||||
# VG6ofWM3UPmBM1w7s4POWEcr52BLjdMQAd72mUGw5gsDqEY4q8lkrEFuyRcXYnhB
|
||||
# xyOUMgVuAHLIbrRGPIKf/oSa0dgUaRCi4iwY58MiSmMuU4aKbqD/BENa/NpaunL+
|
||||
# W2KNmh2Oix9of2RitnSwKSiBfV4ioYIDbDCCA2gGCSqGSIb3DQEJBjGCA1kwggNV
|
||||
# AgEBMG8wWzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex
|
||||
# MTAvBgNVBAMTKEdsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gU0hBMzg0IC0g
|
||||
# RzQCEAEHZJsIsKf+fdZUqPL0KfYwCwYJYIZIAWUDBAIBoIIBPTAYBgkqhkiG9w0B
|
||||
# CQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yNDEyMTYxODEwNThaMCsG
|
||||
# CQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yNDEyMTYxOTM5NTFaMCsG
|
||||
# CSqGSIb3DQEJNDEeMBwwCwYJYIZIAWUDBAIBoQ0GCSqGSIb3DQEBCwUAMC8GCSqG
|
||||
# SIb3DQEJBDEiBCA0kdGmz3U/huvbSSPNtuXDtio/vp/rPEMr30hJBEUdAjCBpAYL
|
||||
# SIb3DQEJBDEiBCB1drKVrq/shE9wOdX/tsSZZr1iDENpJ7iz5i0Ui8cK/DCBpAYL
|
||||
# KoZIhvcNAQkQAgwxgZQwgZEwgY4wgYsEFETTk5zNG4h/hnrM2oHsrw9l/NJZMHMw
|
||||
# X6RdMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEw
|
||||
# LwYDVQQDEyhHbG9iYWxTaWduIFRpbWVzdGFtcGluZyBDQSAtIFNIQTM4NCAtIEc0
|
||||
# AhABB2SbCLCn/n3WVKjy9Cn2MA0GCSqGSIb3DQEBCwUABIIBgCh6ecky2xVF2PkI
|
||||
# 7HXhA1gxxVLeu/nJF0SPw+vgeKUM6a3gCevWN2SuTXmJSuz0fFPf4IrXCXECcRiA
|
||||
# DfCk5ln7VFlq/BnlNEKUKgbiUwt/p383JCmvVGwhCKc/TpWS1knpGcYjhGlX0je1
|
||||
# inzClc3PRwDMnsNKoXYklPszV8C1PV/Ko2zHaA18q977h5HRLLUPmblnz0q/qtmV
|
||||
# 82KJUgidw+z6PXFHAFurbgVTGQA/VyJp7rRHreJEdKluFkz3FVEFGZRIWdil0U+F
|
||||
# JWvFBoFTdJ7NfZfoixj5p5zCC18XyXCFVaZE7oFOoHcoedKp8bDHrhSOntnObfv6
|
||||
# bwA5psV+g6YCz4WZRcYzEIyxMOVM+3sHGgDnjyHIch5wDwXlT5A2kzHiIvhvMipO
|
||||
# GmyeG5htbJBo9tOmueYiw83tREb4YBNle6/+Dmo0b+bu2mUMvK+nuRfx946cesRZ
|
||||
# l/QpxyxUcNFBt+341tZXUsOkONcqA+ptJuUIyHBLZmPqhmDK1g==
|
||||
# AhABB2SbCLCn/n3WVKjy9Cn2MA0GCSqGSIb3DQEBCwUABIIBgGc8v3HxAEQng4Lw
|
||||
# WN8KsDMCQW/CF+Ez3X+FLUMxajoNgKuAcRMjyLHPK3f0Nusb6iW1hDu0AnEz9NR0
|
||||
# gPZYGtBDz2NtKsSQqpNzs4NYNETmEEQ61GLB09X3iTgZgyZF1u/fkIK/nCL4k8bp
|
||||
# nyo3Hxd04vIQgNJ3Q2m5D31V0yrVDvGkeFAUnecDQM1ik07l0zhZ/vpwtJiQ0g5F
|
||||
# NnAqe0/Qmxjt7iqq7yS8PnaHpruhf0xlu59UU9/KtIT/RB0x+DX6nFXQid0Rhgfb
|
||||
# HnP6RKV6P0jJwl7ZZwFcuXaGw5saniT+qIJOetA0cEPmqF7AmBYsPO52no3q3wG+
|
||||
# kSQXp1VC99NdFKQCC18BiJYhxdklst9Atvps//sWOFVySHM0sXpKBr1XNnVoyp18
|
||||
# ZSmNOEec8ee7bfBTOxeBqdYc1s7UeZedW89NOClebXXMn1hb/DKV6uqzHvoVOYOO
|
||||
# BaXUTpxvq/tKiB/MABPjVDe5v4nCGoCO1SA1biZbfwZpVb24oA==
|
||||
# SIG # End signature block
|
||||
|
||||
Loading…
Reference in New Issue
Block a user