Scripts/Import-1 0.9.0 - PowerShell Gallery

Skip To Content PowerShell Gallery Home

PowerShell Gallery

Toggle navigation
  • Search PowerShell packages: PSWSUSMigration

    0.9.0

    Scripts/Import-WSUSComputerGroups.ps1

    # Internal function to create computer groups. FunctionNew-WSUSComputerGroupsRecursive($ImportComputerGroup,$ParentComputerGroup,$ImportComputerGroups,$WSUS,$IncludeComputerMembership){ $ComputerGroupName=$ImportComputerGroup.ComputerTargetGroupName Try{ $NewComputerTargetGroup=$WSUS.CreateComputerTargetGroup($ComputerGroupName,$ParentComputerGroup) Write-Host"$ComputerGroupName is created successfully." }Catch{ Write-Warning"$ComputerGroupName is failed to create." } if(($IncludeComputerMembership-eq$true)-And($ImportComputerGroup.ComputerTargetName.ToString()-ne"")){ foreach($ComputerNamein$ImportComputerGroup.ComputerTargetName){ $ComputerFullDomainName=$ComputerName.FullDomainName Try{ $Computer=$WSUS.GetComputerTargetByName($ComputerFullDomainName) $NewComputerTargetGroup.AddComputerTarget($Computer) Write-Host"$ComputerFullDomainName is added to $ComputerGroupName." }Catch{ Write-Warning"$ComputerFullDomainName is not existed on this WSUS Server." } } } # Create child computer groups if needed. $ChildComputerTargetGroups=$ImportComputerGroups|Where-Object{$_.ParentComputerTargetGroupName-eq$NewComputerTargetGroup.Name} if($null-ne$ChildComputerTargetGroups) { foreach($ChildComputerTargetGroupin$ChildComputerTargetGroups){ New-WSUSComputerGroupsRecursive$ChildComputerTargetGroup$NewComputerTargetGroup$ImportComputerGroups$WSUS$IncludeComputerMembership } } } FunctionImport-WSUSComputerGroups{ <# .SYNOPSIS Import WSUS computer group infromation from a XML file. .DESCRIPTION Import WSUS computer group infromation from a XML file. .NOTES Name: Import-WSUSComputerGroups Author: Rei Ikei .EXAMPLE Import-WSUSComputerGroups -XmlPath C:\WSUSOptions.xml Import-WSUSComputerGroups -XmlPath C:\WSUSOptions.xml -IncludeComputerMembership #> Param( [parameter(mandatory=$true)][string]$XmlPath, [switch]$IncludeComputerMembership ) Process{ Write-Host"Try to load WSUS computer group infromation to import from $XmlPath." Try{ $ImportComputerGroups=Import-Clixml$XmlPath }Catch{ Write-Error"$error[0]" Return } Write-Host"loaded successfully WSUS computer group infromationfrom $XmlPath." Write-Host"Try to connect WSUS and get computer group infromation." Try{ $WSUS=[Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer() $WSUSConf=$WSUS.GetConfiguration() $ComputerTargetGroups=$WSUS.GetComputerTargetGroups() }Catch{ Write-Error"$error[0]" Return } Write-Host"Connected WSUS and get computer group infromation successfully." if($WSUSConf.IsReplicaServer-eq$true){ Write-Error"On replica servers, you cannot create computer groups. You need to create computer groups on upstream servers" Return } if(($IncludeComputerMembership-eq$true)-And($WSUSConf.TargetingMode-eq"Client")){ Write-Error"You cannot change a computer membership because Computer Target Mode option is set as Client on this WSUS server." Return } # Delete current computer groups. $SystemComputerTargetGroup=New-Object-TypeNameMicrosoft.UpdateServices.Administration.ComputerTargetGroupCollection foreach($ComputerTargetGroupin$ComputerTargetGroups){ Try{ $ComputerTargetGroup.Delete() }Catch{ # All Computers & Unassinged Computers will not be able to delete. $SystemComputerTargetGroup+=$ComputerTargetGroup } } # $SystemComputerTargetGroup will be 2 groups (All Computers & Unassinged Computers). if($SystemComputerTargetGroup.Count-ne2){ Write-Error"Failed to delete some computer groups. $SystemComputerTargetGroup" } Try{ $AllComputersGroup=$SystemComputerTargetGroup[0].GetParentTargetGroup() $UnassingedComputersGroup=$SystemComputerTargetGroup[0] }Catch{ $AllComputersGroup=$SystemComputerTargetGroup[0] $UnassingedComputersGroup=$SystemComputerTargetGroup[1] } $ImportedAllComputersGroup=$ImportComputerGroups|Where-Object{$null-eq$_.ParentComputerTargetGroupName} Write-Host"Start to create computer groups." foreach($ImportComputerGroupin$ImportComputerGroups){ if(($ImportComputerGroup.ParentComputerTargetGroupName-eq$ImportedAllComputersGroup.ComputerTargetGroupName)-And($UnassingedComputersGroup.Name-ne$ImportComputerGroup.ComputerTargetGroupName)){ New-WSUSComputerGroupsRecursive$ImportComputerGroup$AllComputersGroup$ImportComputerGroups$WSUS$IncludeComputerMembership } } Write-Host"Creating computer groups successfully." } }

    Tag » Add Computer To Wsus Group Powershell