Posted in : Microsoft, System Center By Stina Perbo Utas Translate with Google ⟶

8 years ago

När servicefönster skall skapas i Configuration Manager är det ofta en hel del klickande och det kan leda till mänskliga fel.
För att minimera risken för fel och effektivisera skapandet av servicefönster mot patch kollektioner skapade jag skriptet nedan.
Skriptet loopar igenom alla kollektioner som matchar $Collection parametern och sätter servicefönster enligt schema som specificeras.
Skriptet nedan är gjort för att köras från en Managementpoint men kan ändras genom att hårdkoda $ModulePath variabeln till ConfigurationManager modulen.

[cmdletbinding()]
Param(
    $Site = 'P01',
    $Collection = "SU*",
    $Start = '22:00',
    $Duration = '6',
    [ValidateSet('Days','Hours','Minutes')]
    $Format = 'Hours',
    [ValidateSet('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday')]
    $DayOfWeek = 'Wednesday',
    [Switch]$Enabled = $false
)
Begin{
    $ConfigMgrWMI = Get-WmiObject -query 'select InstallSource from win32_product Where Name = "ConfigMgr Management Point"'
    $count = $ConfigMgrWMI.InstallSource.Split('\').Count
    $ModulePath = "$($ConfigMgrWMI.InstallSource.Split('\')[0..($count-4)] -join '\')\AdminConsole\bin\ConfigurationManager.psd1"
    Import-module $ModulePath
    Set-Location "$($site):"
}
Process{
    Try{
        $UpdateCollections = Get-CMDeviceCollection -Name $Collection
        $Schedule = New-CMSchedule -DurationInterval $Format -DurationCount $Duration -DayOfWeek $DayOfWeek -Start $Start
        $MWName = "Software Updates - $DayOfWeek $($Start.Split(':')[0])-$((([datetime]"$($Start):00")."add$Format"($Duration)).ToShortTimeString().Split(':')[0])"
        $UpdateCollections | Foreach-Object{
            Try{
                $MWWindow = New-CMMaintenanceWindow -CollectionId $_.CollectionID -Schedule $Schedule -Name $MWName -ApplyToSoftwareUpdateOnly -ErrorAction Stop
                $MWWindow.IsEnabled = $Enabled
                $MWWindow | Set-CMMaintenanceWindow -CollectionId $_.CollectionID
            }
            Catch{
                Write-Error $_
            }
        }
    }
    Catch{
        Write-Debug $_
        Write-Error $_
    }
}

 

Tags : Microsoft, SCCM 2012 r2

Personlig rådgivning

Vi erbjuder personlig rådgivning med författaren för 1400 SEK per timme. Anmäl ditt intresse i här så återkommer vi så snart vi kan.

Add comment

Your comment will be revised by the site if needed.