From aecada0e88f94f9b2a9fbae0508435fa9d2a07a4 Mon Sep 17 00:00:00 2001 From: gbica-hzo <90269662+gbica-hzo@users.noreply.github.com> Date: Tue, 6 May 2025 15:39:23 -0400 Subject: [PATCH] Update bulkGroupTagUpdate.ps1 Updated script to be more flexible --- .../bulkGroupTagUpdate.ps1 | 54 ++++++++++++++----- 1 file changed, 41 insertions(+), 13 deletions(-) diff --git a/Autopilot Helper Scripts/bulkGroupTagUpdate.ps1 b/Autopilot Helper Scripts/bulkGroupTagUpdate.ps1 index 157a7f6..1d5febf 100644 --- a/Autopilot Helper Scripts/bulkGroupTagUpdate.ps1 +++ b/Autopilot Helper Scripts/bulkGroupTagUpdate.ps1 @@ -1,3 +1,32 @@ + +function Update-ModuleIfNeeded { + param ( + [string]$moduleName + ) + + $module = Get-Module -ListAvailable -Name $moduleName -ErrorAction Ignore + + if (-not($module)) { + Install-Module -Name $moduleName -Confirm:$false -Force -AllowClobber + Write-Host "Installed $moduleName" + } else { + $installedVersion = (Get-Module -ListAvailable -Name $moduleName).Version + $currentVersion = Find-Module -Name $moduleName | Select-Object -ExpandProperty Version + + if ($installedVersion -lt $currentVersion) { + Update-Module -Name $moduleName -Confirm:$false -Force + Write-Host "Updated $moduleName from version $installedVersion to $currentVersion" + } else { + Write-Host "$moduleName is up-to-date (version $installedVersion)" + } + } + Write-Host "Loading module $moduleName $installedVersion)" + Import-Module -Name $moduleName +} + +# Example usage: Call the function with any module name +# Update-ModuleIfNeeded -moduleName "WindowsAutopilotIntune" + # install autopilot module $nuget = Get-PackageProvider -Name NuGet -ListAvailable -ErrorAction Ignore if(-not($nuget)) @@ -10,16 +39,11 @@ else Write-Host "NuGet already installed" } -$module = Get-Module -ListAvailable -Name WindowsAutopilotIntune -ErrorAction Ignore -if(-not($module)) -{ - Install-Module -Name WindowsAutopilotIntune -confirm:$false -Force - Write-Host "Installed WindowsAutopilotIntune" -} -else -{ - Write-Host "WindowsAutopilotIntune already installed" -} +$moduleName = "WindowsAutopilotIntune" +Update-ModuleIfNeeded -moduleName $moduleName + +$moduleName = "Microsoft.Graph.Authentication" +Update-ModuleIfNeeded -moduleName $moduleName # connect to microsoft graph @@ -29,6 +53,7 @@ Connect-MgGraph # OPTION 1: Change group tag using a list of serial numbers +<# # get list of serial numbers from CSV file $serialNumbers = Import-Csv -Path "C:\path\to\serialNumbers.csv" | Select-Object -ExpandProperty SerialNumber @@ -48,16 +73,19 @@ foreach ($serialNumber in $serialNumbers) { } +#> + # OPTION 2: Change group tag using an old group tag as a target -$oldGroupTag = "OldGroupTag" +$oldGroupTag = "DWVHN" +$newGroupTag = "VN-D" # get list of devices with the old group tag -$devices = Get-AutopilotDevice -GroupTag $oldGroupTag +$devices = Get-AutopilotDevice | Where-Object {$_.GroupTag -eq "$oldGroupTag"} foreach($device in $devices) { try { - Set-AutopilotDevice -id $device.id -GroupTag "NewGroupTag" + Set-AutopilotDevice -id $device.id -GroupTag $newGroupTag Write-Host "Changed group tag for device with serial number $($device.serialNumber)" } catch