From 9d8344f812cdb8ba04dfb93e351b7fa689d6c37c Mon Sep 17 00:00:00 2001 From: Alexis Lazcano Date: Fri, 13 Dec 2024 17:29:21 -0600 Subject: [PATCH] Ready to test! --- .gitignore | 4 ++ Lenovo-Asset-Tag-Writer.ps1 | 114 ++++++++++++++++++++++++++---------- 2 files changed, 88 insertions(+), 30 deletions(-) diff --git a/.gitignore b/.gitignore index 4ab47b9..b940123 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,7 @@ Thumbs.db # PowerShell Studio # ##################### *.TempPoint.ps1 + +# I know, I know # +##################### +.env diff --git a/Lenovo-Asset-Tag-Writer.ps1 b/Lenovo-Asset-Tag-Writer.ps1 index 81da063..e9f7b1b 100644 --- a/Lenovo-Asset-Tag-Writer.ps1 +++ b/Lenovo-Asset-Tag-Writer.ps1 @@ -10,9 +10,61 @@ A description of the file. #> -#For now, only running on Lenovo Desktops +#Check if running as Administrator, launch a new powershell process and pass it the script if not. +if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) +{ + # If not elevated, re-launch the script with elevated privileges + $CommandLine = "-File `"" + $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments + Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList $CommandLine + exit +} + +$SCMGScriptRoot = "$env:PROGRAMFILES\SCMG\Scripts" +$SCMGScriptLogs = "$SCMGScriptRoot\Logs" +$SCMGScriptTemp = "$SCMGScriptRoot\Temp" +if (!(Test-Path -Path $SCMGScriptLogs)) { New-Item -Path $SCMGScriptLogs -ItemType Directory -Force | Out-Null } +if (!(Test-Path -Path $SCMGScriptTemp)) { New-Item -Path $SCMGScriptTemp -ItemType Directory -Force | Out-Null } +Set-Location $SCMGScriptRoot + +function Get-AssetNumber +{ + 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") + + #Write-Host $hardwareURI + $response = (Invoke-RestMethod -Uri "$hardwareURI/byserial/$Serial" -Method GET -Headers $headers).rows + + return $response.asset_tag +} + +Invoke-WebRequest -Uri "https://git.scmg.is/alexis/Lenovo-Asset-Tag-Writer/raw/branch/main/AMIDEWINx64.zip" -OutFile "$SCMGScriptTemp\AMIDEWINx64.zip" + +try +{ + Expand-Archive -Path "$SCMGScriptTemp\AMIDEWINx64.zip" -DestinationPath "$SCMGScriptTemp" -Force +} +catch +{ + Write-Host "An error occurred:" + Write-Host $_ +} +finally +{ + Remove-Item "$SCMGScriptTemp\AMIDEWINx64.zip" -Force +} $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") { @@ -21,20 +73,22 @@ If ($ComputerSystemProduct.Vendor -like "Lenovo") $PSComputerInfo.Add("model_number", $($ComputerSystemProduct.Name)) $PSComputerInfo.Add("model_name", $($ComputerSystemProduct.Version)) - $PSComputerInfo + $SnipeAssetTag = Get-AssetNumber -Serial $PSComputerInfo.serial + + Set-Location $SCMGScriptTemp + + .\AMIDEWINx64\AMIDEWINx64.exe /CA "$SnipeAssetTag" } else { Write-Host "This script is only for Lenovo computers, exiting now." } - - # SIG # Begin signature block # MIIvYQYJKoZIhvcNAQcCoIIvUjCCL04CAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG -# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB24BAwD5156eOI -# O71ysR9dJFmgJnOjNUH2RJq9pvyBdKCCKGYwggQyMIIDGqADAgECAgEBMA0GCSqG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAtCJ3zfkgZbWQR +# 1CPioCFjCKClwqxReOeJXLW3flkZhaCCKGYwggQyMIIDGqADAgECAgEBMA0GCSqG # SIb3DQEBBQUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNo # ZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1p # dGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2VydmljZXMwHhcNMDQwMTAx @@ -253,35 +307,35 @@ else # MYIGUTCCBk0CAQEwaDBUMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBM # aW1pdGVkMSswKQYDVQQDEyJTZWN0aWdvIFB1YmxpYyBDb2RlIFNpZ25pbmcgQ0Eg # UjM2AhAtmKdfiMvdO1IQbTd6fBa6MA0GCWCGSAFlAwQCAQUAoEwwGQYJKoZIhvcN -# AQkDMQwGCisGAQQBgjcCAQQwLwYJKoZIhvcNAQkEMSIEIKs7DNF1Bgnd2J4ke/jt -# J1J4ByFAXGA9Iu0VFj8lvxeYMA0GCSqGSIb3DQEBAQUABIICADpvsXZgscubKDS5 -# 4/1iG1lDuvr+NkhnVNwkjBYtCAJG4EbLTWak6Wcrcx9IxTZy5VCqEzRXtPHjJWeu -# 4afpRPYmzBNgkP+Gn0pE8czqC+mk7JzYNzBnWyB7SVY61WX1jSGRprnO5INpba7n -# rfmLNsz86Rls3+gYxI79carTv432tRjAAiSp1LPQ8wIzeILpT9wBkjQNRAK6NDJf -# EGsmQqA7yjpNhtVlBH4JRhUyULARb5OcOBM/skYJ9/IhPEUjBIZJExuPOlrYFP2v -# +StHXXhGrxg2xqwBbBpLamlVzGe9uofYxLzUFVrBTEjcBcuixR2vv87WkPGOYVhV -# 2K4BgOTOr66O7XmZDhF/ph5p7a7wCqKtS4dUGN78/TFA7JDKUIpvBWNWeutRYuRZ -# Pp38X9Urp0ZL1dfjUCvtQmhIw/GJN5qIQ/qVWTCG/noWmZT+qeWwSr3Y1wjFLngt -# EWFHcmrEwcVgXDMIw0Kf+cxtQYpAjDDJt2Xm8B4wdEY3XHsBqJ4WpIvyHZfZ5yCQ -# +pXR7JFUyOsMSxry7+7k2bNR7m2CIhWyJJ+edekP31iZWWqRVsywZEaIQQGZTm+r -# cj5oqPkw6cRM9kgPajyop4byugM3piiAe0arL+yRXEyohQ+bJBA9iIQD+2qaCicO -# +4pQZz5uePnKmEaJBvlh/YB/9gFUoYIDbDCCA2gGCSqGSIb3DQEJBjGCA1kwggNV +# AQkDMQwGCisGAQQBgjcCAQQwLwYJKoZIhvcNAQkEMSIEILjNWGfHtvTPhOLoTLyl +# DjFOWMfYYfJAO+S970PWqaJGMA0GCSqGSIb3DQEBAQUABIICAEo1a8zJkyGPSwL/ +# ri9HBTDas+QQpVCqXly2oFpT5Bshy94c+bXPM6KKIn01Qzi8CXtXfV7jxgPckhrw +# Y9oL+LmU6jLZRFYrEP6WSrSjKsItFiCWLH9TYlcZLE3YrjOtPBJLXaCf/lxMGKi3 +# uE4Abvx0rTuwxjWA4V2SGdR4t7GipUiuZE+b5CciKLAJHKrPZ9IWTfoaKXeFx0zN +# SJ+PFCe4hSBetCnEoK66aCeZU9g7eza6szfpfyPi+g8JY8uW3jOJmnTZ4rZtueuG +# weWnTqp8bcu4E/11atPiRf/V4EJniw8kSd0e+e8fLLVtruUrBSSyksyVnVe0N0Y5 +# vPPgC/eBERjDFCPjq+Go+gMD8aXuGRVHrPKuLB7/kv+WA8I19kLTrGsiP7CnVAJ+ +# 0MoHvLjPl9aVncJ4Arg+eAyTzSFfnwvve/7EWkCNhWX+siNxQIbSEy9Ql4Scfi9O +# bqGamV+ypeDPAVjVTeOEEFB9w89+1bbUB3XM7ck4g8RtNJa0dmrYH4BdxuXKf+23 +# cjFfFx9xkyqk3QIGVjD1qzwUMlB/VDGAS+xP4ZNy3O16Q0+F+tderpg9snVBW4KR +# 7gcCpPsAQ++woqUVwrH2WpQqtuIKoI8pgSAScvSJUrkM0mEhletLK+IJDYw3C0WK +# NA/B5UCUt83jY6M8ecJIZ7Z7BdSLoYIDbDCCA2gGCSqGSIb3DQEJBjGCA1kwggNV # AgEBMG8wWzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex # MTAvBgNVBAMTKEdsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gU0hBMzg0IC0g # RzQCEAEHZJsIsKf+fdZUqPL0KfYwCwYJYIZIAWUDBAIBoIIBPTAYBgkqhkiG9w0B -# CQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yNDEyMTMyMTA2MjNaMCsG +# CQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yNDEyMTMyMzI5MDRaMCsG # CSqGSIb3DQEJNDEeMBwwCwYJYIZIAWUDBAIBoQ0GCSqGSIb3DQEBCwUAMC8GCSqG -# SIb3DQEJBDEiBCBcK4v76vRpardrKlkRL8P85kJx24aRp/VbjPv6Bg2ZljCBpAYL +# SIb3DQEJBDEiBCC3ihMfgBxUdXy4JSklm1S3DRIq6FZbaLq4n2yBSRZIfTCBpAYL # KoZIhvcNAQkQAgwxgZQwgZEwgY4wgYsEFETTk5zNG4h/hnrM2oHsrw9l/NJZMHMw # X6RdMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEw # LwYDVQQDEyhHbG9iYWxTaWduIFRpbWVzdGFtcGluZyBDQSAtIFNIQTM4NCAtIEc0 -# AhABB2SbCLCn/n3WVKjy9Cn2MA0GCSqGSIb3DQEBCwUABIIBgH8etbSMQbIWTZCe -# rClYjc/xgAtKcqClqeWNdUk19XHU+MbVEXnH33K9T2vKIEUEXRLdTdQYoXJGAdgG -# 9FXLlVEIJipj2FKPlJy8hix2XZYM6zJ1cnTMmn3/joCkQGFGPw7XJF04BxV5j/ro -# EH4XDlCeiW1bhMyqIDmqGBOuJwbq8NB8M4D5Ay/uvpiRIBP5CAr4d2FEG0vYnHEF -# bnoc7e8O/1WhJVR2x0bmZEcFphY9gUwMFV3/ljR3bVuOy5GEuxcaWpPWs7kz8vZT -# x8u/kXzp4Or1rMqDTV1Kw27cxqZjrciW5gCGzOHvEopda0r9YJT9BDbEjNjhBpj/ -# yHp3+Ckko9AKoJ9G+UjO+0E4iosHTy6zhnyWeNi6lEkrFs60IymsImzLlwxwWhzI -# +c/xufPt+2wGBjREiq1ObcbYT27tmIqpVarzy3xmuvUgWyeSwoT3TIJfujsjcKZY -# AvlPf3EG6NJAqFc/fjmNVOzFz/VyRJJqOBwCIoKGVxU56kD5vQ== +# AhABB2SbCLCn/n3WVKjy9Cn2MA0GCSqGSIb3DQEBCwUABIIBgDm6YhWWVP2QRIDu +# 1XrJ2nPFDiviChRBgScSEAJj8mle/mhZjmv8rVpR5Obpw1n02vIoFT/94HGw1MlI +# x5SDIWBKho8BVAXqqhCZq2xMie7G8Ykveeq4NohhWLeQ1bjNb7auIJj23hSCqsbo +# Mb9mEW/OBexrxpVNmyH7oLfYt9JifjTgeYUgU+E6jKDgKTOGpYPlvNEuQ+vWehQg +# eCvh78yBZEZyzzhk2E/iFN/vy2QFFwcy3+Ql5btol53b/rsSVGNVotZnDIr1R7j9 +# WAlWMvPUWanXParzpZVL7uyOSNjpu/Ql3kBey5grHtDIE18h3f8SRVJjHcoIMVcp +# wSHt1mTMy1ypvz5P0chXRRAZ4Hmh3Hx46kIc9u4zHKyjCLTkcKxVBQ/NQ8xJWdK5 +# fgYknfjuINmS6Vh782ifaj46l3wpSc8K16Ypqq63pDpmcDMUuqJIzwxodSdsbuNu +# vo35Za9FO17ly8smglDOwxsrhHDZs1lHWW09CmKJjFrXIRlfyQ== # SIG # End signature block