Get-ComputerManagement.psm1

function Get-ComputerManagement {
    <#
.SYNOPSIS
    Open Computer Management Console on local or remote computer.
.DESCRIPTION
    Open Computer Management Console on local or remote computer.
.PARAMETER ComputerName
    Name of server to open Computer Management Console on remote computer.
.PARAMETER ADSearchBase
    Active Directory SearchBase of server to open Computer Management Console on remote computer.
.EXAMPLE
    Get-ComputerManagement
    Open Computer Management Console on local computer.
.EXAMPLE
    Get-ComputerManagement -ComputerName pc1
    Open Computer Management Console on remote computer.
.EXAMPLE
    Get-ComputerManagement -ComputerName pc1,pc2
    Open Computer Management Console on multiple remote computer.
.EXAMPLE
    Get-ComputerManagement -ADSearchBase "OU=Computers,DC=comodo,DC=com"
    Open Computer Management Console on Active Directory SearchBase computer.
#>

    [CmdletBinding(DefaultParameterSetName = "ParS1")]
    param (
        [parameter(Position = 0, ParameterSetName = "ParS1", Mandatory = $false, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
        [string[]] $ComputerName = "localhost",
        [parameter(ParameterSetName = "ParS2", Mandatory = $false, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
        [string] $ADSearchBase
    )
    # PsVersion
    if ((($PsVersionTable.PSEdition) -match "desktop") -or (($PsVersionTable.OS) -match "windows")) {
        # ADSearchBase
        if ($ADSearchBase) {
            try {
                $ADSearch = New-Object System.DirectoryServices.DirectorySearcher
                $ADSearch.SearchRoot = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$ADSearchBase")
                $ADSearch.Filter = ("(objectCategory=computer)")
                $ADSearchFind = $ADSearch.FindAll()
            }
            catch {
                Write-Warning "ADSearchBase not found"
            }
            $ComputerName = foreach ($ADComputer in $ADSearchFind) {
                $ADComputer.Properties.name
            }
        }
        # Loop ComputerName
        $ComputerName = $ComputerName.ToUpper()
        foreach ($Computer in $ComputerName) {
            if ($ComputerName -like "localhost") {
                $TestLocal = $true
            }
            else {
                $TestWinRM = Test-NetConnection -CommonTCPPort WINRM -ComputerName $Computer -ErrorAction SilentlyContinue -ErrorVariable EV01
            }
            if ($TestWinRM.TcpTestSucceeded -or $TestLocal) {
                Start-Process "compmgmt.msc" -ArgumentList "/Computer=$Computer"
            }
        }

    }
    else {
        Write-Warning "PSVersion OS not Windows"
    }
}