internal/Test-ComputerTarget.ps1
function Test-ComputerTarget { <# .SYNOPSIS Validates wheher the input string can be legally used to target a computer. .DESCRIPTION Validates whether the input string can be legally used to target a computer. It will consider: - Names (NETBIOS/dns) - IPv4 Addresses - IPv6 Addresses It will resolve idn names into default ascii names according to the official rules, before rendering judgement. .PARAMETER ComputerName The name to verify .EXAMPLE PS C:\> Test-ComputerTarget -ComputerName 'server1' Will test whether 'server1' is a legal computername (hint: it is) .EXAMPLE PS C:\> "foo", "bar", "foo bar" | Test-ComputerTarget Will test, whether the names passed to it are legal targets. - The first two will pass, the last one will fail - Note that it will only return boolean values, so the order needs to be remembered (due to this, using it by pipeline on more than one object is not really recommended). #> [CmdletBinding()] param ( [Parameter(ValueFromPipeline = $true, Mandatory = $true)] [string[]] $ComputerName ) process { foreach ($Computer in $ComputerName) { [Sqlcollaborative.Dbatools.Utility.Validation]::IsValidComputerTarget($ComputerName) } } } |