【发布时间】:2021-02-06 11:39:59
【问题描述】:
我想通过powershell命令查看用户的电脑是否加入了特定机构的域。
我尝试了下面的命令来检查域加入状态,但命令只是显示是否加入域,但是如果我想特别检查域==“某公司网络的”怎么办。
PS C:\windows\system32> (Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain
True
【问题讨论】:
标签: powershell
我想通过powershell命令查看用户的电脑是否加入了特定机构的域。
我尝试了下面的命令来检查域加入状态,但命令只是显示是否加入域,但是如果我想特别检查域==“某公司网络的”怎么办。
PS C:\windows\system32> (Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain
True
【问题讨论】:
标签: powershell
你已经在正确的轨道上,你只是在查询错误的属性。
(Get-CimInstance -ClassName Win32_Computersystem).Domain
【讨论】:
Domain 属性在未加入域时返回工作组名称。来自the docs 如果计算机不是域的一部分,则返回工作组的名称。
您可以从Win32_Computersystem 课程中获得更多。
在您可以获取该信息的辅助函数下方:
function Get-ComputerInformation {
[CmdletBinding()]
param(
[Parameter(Mandatory = $false, ValueFromPipeline = $true, Position = 0)]
[string[]]$ComputerName = $env:COMPUTERNAME,
[switch]$AsHashTable
)
foreach ($computer in $ComputerName) {
# System info
$data = Get-CimInstance -ClassName Win32_ComputerSystem -ComputerName $computer
$domainRole = switch ($data.DomainRole) {
0 {'Standalone Workstation'; break}
1 {'Member Workstation'; break}
2 {'Standalone Server'; break}
3 {'Member Server'; break}
4 {'Backup Domain Controller'; break}
5 {'Primary Domain Controller'}
}
$pcinfo = [ordered]@{}
$pcinfo.'Computer' = $data.Name
$pcinfo.'Manufacturer' = $data.Manufacturer
$pcinfo.'Model' = $data.Model
$pcinfo.'PhysicalMemory' = "{0:N2} GB" -f ($data.TotalPhysicalMemory/1GB)
$pcinfo.'PartOfDomain' = $data.PartOfDomain
if ($data.PartOfDomain) {
$pcinfo.'Domain' = $data.Domain
}
else {
$pcinfo.'WorkGroup' = $data.Workgroup
}
$pcinfo.'DomainRole' = $domainRole
$pcinfo.'LoggedOnUser' = $data.Username
if ($AsHashTable) { $pcinfo }
else { [PsCustomObject]$pcinfo }
}
}
【讨论】: