Scripts/Reskit9/All Resources/xSCOM/DSCResources/MSFT_xSCOMManagementPack/MSFT_xSCOMManagementPack.psm1
function Get-TargetResource { [CmdletBinding()] [OutputType([System.Collections.Hashtable])] param ( [parameter(Mandatory = $true)] [System.String] $Name, [System.String] $Version, [System.String] $MinVersion, [parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $SCOMAdminCredential, [System.String] $SourcePath, [parameter(Mandatory = $true)] [System.String] $SourceFolder, [parameter(Mandatory = $true)] [System.String] $SourceFile ) $Version = Invoke-Command -ComputerName . -Credential $SCOMAdminCredential { $Name = $args[0] Import-Module OperationsManager [String](Get-SCManagementPack -Name $Name).Version } -ArgumentList @($Name) $returnValue = @{ Name = $Name Version = $Version } $returnValue } function Set-TargetResource { [CmdletBinding()] param ( [parameter(Mandatory = $true)] [System.String] $Name, [System.String] $Version, [System.String] $MinVersion, [parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $SCOMAdminCredential, [System.String] $SourcePath, [parameter(Mandatory = $true)] [System.String] $SourceFolder, [parameter(Mandatory = $true)] [System.String] $SourceFile ) if([String]::IsNullOrEmpty($SourcePath)) { $SourcePath = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\System Center Operations Manager\12\Setup" -Name "InstallDirectory").InstallDirectory } $MPFile = Join-Path -Path (Join-Path -Path $SourcePath -ChildPath $SourceFolder) -ChildPath $SourceFile Write-Verbose "MPFile: $MPFile" if(Test-Path -Path $MPFile) { Write-Verbose "MPFile: $MPFile" Invoke-Command -ComputerName . -Credential $SCOMAdminCredential -Authentication Credssp { $MPFile = $args[0] Import-Module OperationsManager Import-SCManagementPack $MPFile } -ArgumentList @($MPFile) } if(!(Test-TargetResource @PSBoundParameters)) { throw "Set-TargetResouce failed" } } function Test-TargetResource { [CmdletBinding()] [OutputType([System.Boolean])] param ( [parameter(Mandatory = $true)] [System.String] $Name, [System.String] $Version, [System.String] $MinVersion, [parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $SCOMAdminCredential, [System.String] $SourcePath, [parameter(Mandatory = $true)] [System.String] $SourceFolder, [parameter(Mandatory = $true)] [System.String] $SourceFile ) $result = $true $MPData = Get-TargetResource @PSBoundParameters # Test for MP not installed if([String]::IsNullOrEmpty($MPData.Version)) { $result = $false } if($result) { # Test just for MP, no version if([String]::IsNullOrEmpty($Version) -and [String]::IsNullOrEmpty($MinVersion)) { if(![String]::IsNullOrEmpty($MPData.Version)) { $result = $true } else { $result = $false } } # Test for MP specific version if(![String]::IsNullOrEmpty($Version)) { if($Version -eq $MPData.Version) { $result = $true } else { $result = $false } } # Test for MP minimum version else { $MinVersionArray = $MinVersion.Split(".") $VersionArray = $MPData.Version.Split(".") if($VersionArray[0] -lt $MinVersionArray[0]) { $result = $false } else { if($VersionArray[0] -gt $MinVersionArray[0]) { $result = $true } else { if($VersionArray[1] -lt $MinVersionArray[1]) { $result = $false } else { if($VersionArray[1] -gt $MinVersionArray[1]) { $result = $true } else { if($VersionArray[2] -lt $MinVersionArray[2]) { $result = $false } else { if($VersionArray[2] -gt $MinVersionArray[2]) { $result = $true } else { if($VersionArray[3] -lt $MinVersionArray[3]) { $result = $false } else { if($VersionArray[3] -ge $MinVersionArray[3]) { $result = $true } } } } } } } } } } $result } Export-ModuleMember -Function *-TargetResource |