When you look for a simple way to get all Lync Server topology, you probably will do a Get-CsPool command. But here, you don’t see the sites and the output is not coming in a easily readable way.
The script below will let you Show all information at once.
Get-MCsPool will show you your infrastructure in an easy way :
Communication Server versions tested | |
Office Communication Server 2007 | – |
Microsoft Lync Server 2010 | OK |
Microsoft Lync Server 2013 | OK |
function Get-MCsPool{ foreach ($site in Get-Cssite){ Write-Host "Site : " $site.Displayname "( " -NoNewline -ForegroundColor Green if ($site.Description -notlike ""){ Write-Host $site.Description")" -foregroundcolor Green }else{ Write-Host "No description" -foregroundcolor DarkRed -NoNewline Write-Host " )" -foregroundcolor Green } $pools = $site | select -ExpandProperty pools foreach ($pool in $pools){ $boolDiscovered = $false [array]$ServerType = "" Write-Host "Pool : " $pool -ForegroundColor Cyan -NoNewline $services = Get-CsPool $pool | select -ExpandProperty services #Get all services from the current pool If ($Site.ParentSite -ne $Null){ #SBA if ($services.count -ge 2){ $ServerType += "Survivable Branch Appliance" $boolDiscovered = $true }else{ $ServerType += " PSTN Gateway " $boolDiscovered = $true } }else{ #NO SBA $PoolComputersCount = (get-cspool $pool | select -ExpandProperty computers ).count #Get the computer numbers in a pool if ($PoolComputersCount -ge 2){ #POOL SERVERS (If there is 2 or more computers $findOut = $services -match '.*Registrar:([a-zA-Z]).*' if ($findOut) { $ServerType += "Enterprise Edition Pool" $boolDiscovered = $true } $findOut = $services -match '.*PersistentChatService:([a-zA-Z]).*' if ($findOut) { $ServerType += "Persistent Chat Pool" $boolDiscovered = $true } $findOut = $services -match '.*TrustedApplicationPool:([a-zA-Z]).*' if ($findOut) { $ServerType += "Trusted Application Pool" $boolDiscovered = $true } $findOut = $services -match '.*EdgeServer:([a-zA-Z]).*' if ($findOut) { $ServerType += "EDGE Pool" $boolDiscovered = $true } }else{ #STANDALONE SERVERS (Only one computer) $findOut = $services -match '.*Registrar:([a-zA-Z]).*' if ($findOut) { $Registrar = $findOut -replace "Registrar:","" $ServerType += "Standard Edition Pool" $boolDiscovered = $true } $findOut = $services -match '.*PstnGateway:([a-zA-Z]).*' if ($findOut) { $ServerType += "PSTN Gateway" $boolDiscovered = $true } $findOut = $services -match '.*EdgeServer:([a-zA-Z]).*' if ($findOut) { $ServerType += "EDGE Server" $boolDiscovered = $true } $findOut = $services -match '.*MonitoringServer:([a-zA-Z]).*' if ($findOut) { $ServerType += "Monitoring Server" $boolDiscovered = $true } $findOut = $services -match '.*ArchivingServer:([a-zA-Z]).*' if ($findOut) { $ServerType += "Archiving Server" $boolDiscovered = $true } $findOut = $services -match '.*WacServer:([a-zA-Z]).*' #Lync 2013 if ($findOut) { $ServerType += "Office Web Apps Server" $boolDiscovered = $true }else{ $findOut = $services -match '.*WacService:([a-zA-Z]).*' #Lync 2010 if ($findOut) { $ServerType += "Office Web Apps Server" $boolDiscovered = $true } } $findOut = $services -match '.*TrustedApplicationPool:([a-zA-Z]).*' if ($findOut) { $ServerType += "Trusted Application Server" $boolDiscovered = $true } $findOut = $services -match '.*FileStore:([a-zA-Z]).*' if ($findOut) { $ServerType += "File Server" $boolDiscovered = $true } $findOut = $services -match '.*ApplicationDatabase:([a-zA-Z]).*' if ($findOut) { $ServerType += "SQL Server" $boolDiscovered = $true } $findOut = $services -match '.*PersistentChatServer:([a-zA-Z]).*' if ($findOut) { $ServerType += "Persistent Chat Server" $boolDiscovered = $true } }#End pool or no pool }#end sba or no sba if (!$boolDiscovered){ #If the variable is false, it means the service is unknown Write-Host " (N/A)" -ForegroundColor Gray -NoNewline }else{#If the variable is true, it means the service was discovered foreach ($type in $ServerType){ if ($type -notlike ""){ if (($type -like "*Edition*") -or ($type -like "Survivable*")){ #For the main pools, Write in Yellow Write-Host " ["$type" ]" -ForegroundColor Yellow -NoNewline }else{ Write-Host " ["$type" ]" -ForegroundColor DarkCyan -NoNewline #For the normal service types, write in darkcyan } } } } Write-Host "" #Add a return after each line }#Close Pools foreach }#Close Site foreach }#Close Get-MCsPool function