<# .SYNOPSIS Read-only TCP reachability check from a future Veeam ONE 13 server to its main peers. .DESCRIPTION Run it on the machine that will host Veeam ONE Server, before installation or before connecting a new data source. For each target it tests the TCP ports listed in the Veeam ONE 13 "Ports" page with Test-NetConnection and returns one row per port. It only opens TCP connections; nothing is installed or changed. Port list (Veeam ONE 13 User Guide, Ports): SQL Server 1433 PostgreSQL (reporting DB) 5432 vCenter Server / ESXi 443 Hyper-V host (WMI, SMB) 135, 445 VBR server Windows 12.3- 135, 445 (plus dynamic RPC 49152-65535, not tested here) VBR server Windows 13.0.1+ 443 VBR server Linux 443 The reverse flow (VBR server to Veeam ONE on 2805, 1239, 2741) must be tested from the backup server: use -Role VeeamOneServer there. .PARAMETER Target One or more host names. .PARAMETER Role SqlServer, PostgreSql, VCenter, EsxiHost, HyperVHost, VbrWindowsLegacy (12.3 and earlier), VbrWindows (13.0.1 and later), VbrLinux, VeeamOneServer (run from a VBR server). .EXAMPLE .\Test-VeeamOnePorts.ps1 -Target sql01.contoso.local -Role SqlServer .EXAMPLE .\Test-VeeamOnePorts.ps1 -Target vbr01,vbr02 -Role VbrWindows | Format-Table .NOTES Requires Windows with the NetTCPIP module (Test-NetConnection). Default ports only: adapt if you changed them during setup. A successful TCP test does not prove that permissions, WMI/DCOM or certificates are correct. Source: ANYSYS ICT, https://www.anysys.be/articles/ #> [CmdletBinding()] param( [Parameter(Mandatory)] [string[]]$Target, [Parameter(Mandatory)] [ValidateSet('SqlServer', 'PostgreSql', 'VCenter', 'EsxiHost', 'HyperVHost', 'VbrWindowsLegacy', 'VbrWindows', 'VbrLinux', 'VeeamOneServer')] [string]$Role ) $ErrorActionPreference = 'Stop' # Default ports per role, from the Veeam ONE 13 "Ports" documentation page $portMap = @{ SqlServer = @(1433) PostgreSql = @(5432) VCenter = @(443) EsxiHost = @(443, 5989) HyperVHost = @(135, 445) VbrWindowsLegacy = @(135, 445) VbrWindows = @(443) VbrLinux = @(443) VeeamOneServer = @(2805, 1239, 2741) } foreach ($t in $Target) { foreach ($port in $portMap[$Role]) { $ok = Test-NetConnection -ComputerName $t -Port $port -InformationLevel Quiet -WarningAction SilentlyContinue [pscustomobject]@{ Source = $env:COMPUTERNAME Target = $t Role = $Role Port = $port TcpOk = [bool]$ok } } }