Tramite il comando Get-SPServer di PowerShell è possibile elencare i server che compongono una farm SharePoint OnPrem
PowerShell
# Add-PSSnapin Microsoft.SharePoint.PowerShell
Get-SPServer | Select Name, Version, Role, Status, CanUpgrade, NeedsUpgrade, NeedsUpgradeIncludeChildren, @{Label="IP";Expression={[System.Net.Dns]::GetHostByName($_.Name).AddressList[0].IPAddressToString}} | Format-Table -AutoSize
da un risultato simile al seguente
Text
Name                 Version        Role Status CanUpgrade NeedsUpgrade NeedsUpgradeIncludeChildren IP
----                 -------        ---- ------ ---------- ------------ --------------------------- --
smtp.sgart.local      167495     Invalid Online      False         True                        True 10.0.129.124
SharePointDB         7085403     Invalid Online      False         True                        True 10.0.128.127
SP2010-IDX          13963885 Application Online      False         True                        True 10.0.128.70
SP2010-FEA          13963891 Application Online      False         True                        True 10.0.128.71
SP2010-FEB          13963889 Application Online      False         True                        True 10.0.128.72
Dove si può vedere, nella colonna Version (con Role diverso da Invalid) che i server della farm non sono tutti allineati alla stessa versione di patch (13963885, 13963891 e 13963889).

Anche nella colonna NeedsUpgrade, viene indicato esplicitamente, che la farm richiede un upgrade.
Quindi è necessario eseguire lo SharePoint 2010 Products Configuration Wizard, su ogni server che compone la farm.
Con "server che compone la farm" si intendo i server di Front-End (SP2010-FEA e SP2010-FEB) e quelli di application (SP2010-IDX). Più in generale tutti quelli che nella colonna Role hanno un valore diverso da Invalid. Escludendo quindi i server SQL e gli SMTP che hanno una loro gestione delle patch indipendente dalla farm SharePoint.

Per visualizzare solo i server della farm SharePoint si può filtrare la query per $_.Role -ne "Invalid"
PowerShell
Get-SPServer |  Where-Object {$_.Role -ne "Invalid"} | Select Name, Version, Role, Status, CanUpgrade, NeedsUpgrade, NeedsUpgradeIncludeChildren, @{Label="IP";Expression={[System.Net.Dns]::GetHostByName($_.Name).AddressList[0].IPAddressToString}} | Format-Table -AutoSize
Text
Name                 Version        Role Status CanUpgrade NeedsUpgrade NeedsUpgradeIncludeChildren IP
----                 -------        ---- ------ ---------- ------------ --------------------------- --
SP2010-IDX          13963885 Application Online      False         True                        True 10.0.128.70
SP2010-FEA          13963891 Application Online      False         True                        True 10.0.128.71
SP2010-FEB          13963889 Application Online      False         True                        True 10.0.128.72

Nota: lo script usa il metodo statico [System.Net.Dns]::GetHostByName() per ottenere l'indirizzo IP del server
PowerShell
# prende solo il primo indirizzo IP
[System.Net.Dns]::GetHostByName("nomeServer").AddressList[0].IPAddressToString
Potrebbe interessarti anche: