Public/Get-WindowsKmsHost.ps1
|
#Requires -Version 5 function Get-WindowsKmsHost { [OutputType([PSCustomObject])] [CmdletBinding(PositionalBinding = $false)] param( [Parameter(Position = 0, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [AllowNull()] [string[]]$Computer = @('localhost'), [Parameter()] [AllowNull()] [PSCredential]$Credentials ) process { foreach ($c in $Computer) { $session = $null try { $session = Get-Session -Computer $c -Credentials $Credentials -ErrorAction Stop $service = Get-KmsHostService -CimSession $session -ErrorAction Stop $configuredPort = [uint32]$service.KeyManagementServiceListeningPort $activationDisabled = $null if ($null -ne $service.PSObject.Properties['KeyManagementServiceActivationDisabled']) { $activationDisabled = [bool]$service.KeyManagementServiceActivationDisabled } $result = [PSCustomObject][ordered]@{ ComputerName = $c IsKmsHost = $true ListeningPortConfigured = ($configuredPort -ne 0) ConfiguredListeningPort = if ($configuredPort -eq 0) { $null } else { $configuredPort } EffectiveListeningPort = if ($configuredPort -eq 0) { [uint32]1688 } else { $configuredPort } ActivationInterval = [uint32]$service.VLActivationInterval RenewalInterval = [uint32]$service.VLRenewalInterval DnsPublishing = if ($service.KeyManagementServiceDnsPublishing) { 'Enabled' } else { 'Disabled' } Priority = if ($service.KeyManagementServiceLowPriority) { 'Low' } else { 'Normal' } CurrentClientCount = [uint32]$service.KeyManagementServiceCurrentCount RequiredClientCount = [uint32]$service.RequiredClientCount ProductKeyId = $service.KeyManagementServiceProductKeyID ActivationDisabled = $activationDisabled UnlicensedRequests = [uint32]$service.KeyManagementServiceUnlicensedRequests LicensedRequests = [uint32]$service.KeyManagementServiceLicensedRequests OobGraceRequests = [uint32]$service.KeyManagementServiceOOBGraceRequests OotGraceRequests = [uint32]$service.KeyManagementServiceOOTGraceRequests NonGenuineGraceRequests = [uint32]$service.KeyManagementServiceNonGenuineGraceRequests NotificationRequests = [uint32]$service.KeyManagementServiceNotificationRequests TotalRequests = [uint32]$service.KeyManagementServiceTotalRequests FailedRequests = [uint32]$service.KeyManagementServiceFailedRequests DefaultListeningPort = [uint32]1688 DefaultActivationInterval = [uint32]120 DefaultRenewalInterval = [uint32]10080 } $result.PSObject.TypeNames.Insert(0, 'slmgr-ps.KmsHostStatus') Write-Output $result } finally { if ($null -ne $session) { Remove-CimSession -CimSession $session -ErrorAction Ignore | Out-Null } } } } } |