共用方式為


Loading the SCOM PowerShell Module, For Real This Time!

This is just a quick post and reference for how I have come to load the SCOM PowerShell module for scripts that requiring SCOM cmdlets. It evolved from several examples I borrowed (thank you to those sources which I've since lost), combined with some real world experiences (such as running inside a SCOM rule / PowerShell Workspace API, running from Orchestrator, running from a scheduled task, running from a machine with the console and PS module install but not a MS), and is now:

 $OMCmdletsTest = (Get-Module|% {$_.Name}) -Join ' '
If (!$OMCmdletsTest.Contains('OperationsManager')) {
    $ModuleFound = $false
    $SetupKeys = @('HKLM:\Software\Microsoft\Microsoft Operations Manager\3.0\Setup',       
        'HKLM:\SOFTWARE\Microsoft\System Center Operations Manager\12\Setup')
    foreach($setupKey in $SetupKeys) {
        If ((Test-Path $setupKey) -and ($ModuleFound -eq $false)) {
            $setupKey = Get-Item -Path $setupKey           
            $installDirectory = $setupKey.GetValue('InstallDirectory')
            $psmPath = $installdirectory + '\Powershell\OperationsManager\OperationsManager.psm1'
            If (Test-Path $psmPath) {
                $ModuleFound = $true
            }
        }
    }
    If ($ModuleFound) {
        Import-Module $psmPath
    } else {
        Import-Module OperationsManager
    }
}