function Get-ComputerDomainMembership { # https://learn.microsoft.com/en-us/windows/win32/api/dsrole/ne-dsrole-dsrole_machine_role # https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-computersystem enum MACHINE_ROLE { StandaloneWorkstation = 0 MemberWorkstation = 1 StandaloneServer = 2 MemberServer = 3 BackupDomainController = 4 PrimaryDomainController = 5 } $Win32CS = Get-CimInstance -ClassName Win32_ComputerSystem -Property Domain, DomainRole $obj = [PSCustomObject][ordered]@{ Domain = $Win32CS.Domain DomainRole = [MACHINE_ROLE]$Win32CS.DomainRole IsDomainMember = $false IsWorkstation = $false IsServer = $true IsDomainController = $false } if ($obj.DomainRole -in 1,3,4,5) { $obj.IsDomainMember = $true } if ($obj.DomainRole -in 4,5) { $obj.IsDomainController = $true } if ($obj.DomainRole -in 0,1) { $obj.IsWorkstation = $true $obj.IsServer = $false } $obj }