Functions/PoShMon.Configuration/New-PoShMonConfiguration.ps1
Function New-PoShMonConfiguration { [CmdletBinding()] param( [parameter(Mandatory, Position = 0)] [scriptblock]$bodyScript ) $Script:PoShMon = @{} $Script:PoShMon.ConfigurationItems = @{} $newConfiguration = @{ TypeName = 'PoShMon.Configuration' General = $null WebSite = $null Notifications = @() } $configurationItems = . $bodyScript foreach ($configurationItem in $configurationItems) { if ($configurationItem.TypeName -eq "PoShMon.ConfigurationItems.General") { $newConfiguration.General = $configurationItem } if ($configurationItem.TypeName -eq "PoShMon.ConfigurationItems.OperatingSystem") { $newConfiguration.OperatingSystem = $configurationItem } if ($configurationItem.TypeName -eq "PoShMon.ConfigurationItems.WebSite") { $newConfiguration.WebSite = $configurationItem } if ($configurationItem.TypeName -eq "PoShMon.ConfigurationItems.SharePoint") { $newConfiguration.SharePoint = $configurationItem } if ($configurationItem.TypeName -eq "PoShMon.ConfigurationItems.Extensibility") { $newConfiguration.Extensibility = $configurationItem } elseif ($configurationItem.TypeName.StartsWith("PoShMon.ConfigurationItems.NotificationCollection")) { $newConfiguration.Notifications += $configurationItem } } if ($newConfiguration.General -eq $null) { $newConfiguration.General = New-GeneralConfig -ServerNames $Env:COMPUTERNAME } if ($newConfiguration.OperatingSystem -eq $null) { $newConfiguration.OperatingSystem = New-OSConfig } $Global:PoShMonConfiguration = $newConfiguration # save for later in case it's needed return $newConfiguration } |