42 lines
No EOL
1.1 KiB
PowerShell
42 lines
No EOL
1.1 KiB
PowerShell
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
|
|
|
|
} |