Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 41 additions & 13 deletions Autopilot Helper Scripts/bulkGroupTagUpdate.ps1
Original file line number Diff line number Diff line change
@@ -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))
Expand All @@ -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
Expand All @@ -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

Expand All @@ -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
Expand Down