### AD及Exchange常用巡检命令知识点详解
#### AD巡检命令
**AD**(Active Directory)作为企业级网络中常见的身份认证与管理解决方案之一,在日常维护工作中占据着重要的位置。以下是一些常用的AD巡检命令及其功能说明:
1. **DCDiag**
- **用途**:用于检查域控制器(Domain Controller)的健康状况。
- **命令**:`dcdiag`
- **示例**:执行 `dcdig /v` 可以获得更详细的诊断信息。
2. **RepAdmin**
- **用途**:该工具用于显示和管理目录复制。
- **showrepl**:列出目录分区和站点之间的复制关系。
- **replsummary**:显示所有目录分区的复制摘要。
- **syncall**:强制同步所有目录分区。
- **命令**:
- 显示复制关系:`repadmin /showrepl`
- 显示复制摘要:`repadmin /replsummary`
- 强制同步:`repadmin /syncall`
3. **查询AD中用户数**
- **命令**:`Get-ADUser -Filter * | Measure-Object`
- **示例**:执行此命令后,可以得到当前AD中的用户总数。
4. **导出AD用户数到CSV文件**
- **命令**:`Get-ADUser -Filter * | ft name, objectclass > C:\user.csv`
- **示例**:将所有用户的姓名和对象类型导出到指定的CSV文件中。
5. **导出60天以内登录的用户到CSV**
- **命令**:`Get-ADUser -Filter * -Properties * | Where {($_.lastLogonDate -ge (Get-Date).AddDays(-60)) -and ($_.enabled -eq "True")} | FT name, lastLogonDate, enabled > C:\activeuser.csv`
- **示例**:找出最近60天内登录过且账户未被禁用的所有用户,并将结果保存到CSV文件。
6. **查询域中所有的计算机对象**
- **命令**:`Get-ADComputer -Filter * | Measure-Object`
- **示例**:此命令将返回当前域中所有计算机对象的数量。
7. **查询超过60天没有被登录的计算机**
- **命令**:`$then = (Get-Date).AddDays(-60); Get-ADComputer -PropertyName *, operatingSystem, OperatingSystemServicePack, lastLogonDate -Filter {lastLogonDate -lt $then} | FT Name, operatingSystem, OperatingSystemServicePack, lastLogonDate > C:\computer_60.csv`
- **示例**:找出最后登录日期早于60天前的所有计算机,并将其信息保存到CSV文件中。
8. **查询AD域内组的信息**
- **命令**:`Get-ADGroup -Filter * | Where { $_.groupscope -eq "global" } | Measure-Object`
- **示例**:获取所有全局组的数量。
- **注意**:全局组(Global)、本地域组(Domain Local)和通用组(Universal)是AD中的三种主要组类型,它们各有不同的使用场景。
9. **检查所有disabled的用户和计算机**
- **命令**:对于用户:`Get-ADUser -Filter * -Properties * | Where { $_.enabled -eq $false } | Measure-Object`;对于计算机:`Get-ADComputer -Filter * -Property name | Where { $_.enabled -eq $False } | Measure-Object`
- **示例**:分别查找所有被禁用的用户和计算机,并计算数量。
#### Exchange巡检命令
**Exchange** 是微软提供的一款邮件服务器软件,也是企业级环境中常见的电子邮件解决方案。以下是Exchange的常用巡检命令及其功能说明:
1. **查看邮箱使用情况**
- **命令**:`Get-MailboxDatabase -Server xxx | Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Add-Member -MemberType ScriptProperty -Name TotalItemSizeinMB -Value {$this.TotalItemSize.Value.ToMB()} -PassThru | Format-Table DisplayName, TotalItem*, ItemCount, LastLogonTime, Database, ServerName`
- **示例**:显示所有邮箱的详细信息,包括名称、大小、项目数量、上次登录时间等。
2. **查看所有数据库大小**
- **命令**:`Get-MailboxDatabaseStatus | ft Name, DatabaseSize, AvailableNewMailboxSpace -auto`
- **示例**:列出所有邮箱数据库的大小以及可用的新邮箱空间。
3. **检查数据库复制状态**
- **命令**:`Get-MailboxDatabaseCopyStatus`
- **示例**:查看所有数据库的复制状态,确保数据的一致性和冗余性。
4. **检查服务器服务状态**
- **命令**:`Test-ServiceHealth`
- **示例**:检查Exchange服务器上的服务运行状态。
5. **检查DAG复制状态**
- **命令**:`Test-ReplicationHealth`
- **示例**:验证DAG(Database Availability Group)中的数据库复制是否正常工作。
6. **查看阵列**
- **命令**:`Get-ClientAccessArray`
- **示例**:获取客户端访问阵列的信息。
7. **查看数据库RPC Client Access Server属性**
- **命令**:`Get-MailboxDatabase | select Name, RPCClientAccessServer`
- **示例**:列出所有数据库的RPC客户端访问服务器属性。
8. **统计邮箱数**
- **命令**:`(Get-MailboxDatabase -Server xxx | Get-Mailbox).Count`
- **示例**:计算指定服务器上的邮箱总数。
9. **统计Mailbox角色服务器上的邮箱数**
- **命令**:`Get-Mailbox –ResultSize Unlimited | Group-Object –Property:ServerName | Select Name, Count`
- **示例**:统计每个Mailbox角色服务器上的邮箱数量。
10. **各邮箱数据库存储上分别存储的邮箱个数**
- **命令**:`Get-Mailbox –ResultSize Unlimited | Group-Object –Property:Database | Select Name, Count`
- **示例**:列出每个数据库中存储的邮箱数量。
11. **查看系统邮箱**
- **命令**:`Get-Mailbox -Arbitration | ft -wrap`
- **示例**:显示所有仲裁邮箱的信息。
12. **统计一台HUB服务器上一个时间段内的发送情况**
- **命令**:`Get-MessageTrackingLog -ResultSize Unlimited -Start "2017/10/01 00:00:00" -End "2017/10/26 00:00:00" -EventId "send" -Server "Ex2010" | Measure-Object`
- **示例**:统计指定HUB服务器在一个特定时间段内的邮件发送情况。
以上命令涵盖了AD和Exchange中常见的巡检需求,可以帮助管理员快速定位问题并进行故障排除。在实际应用中,可以根据具体情况调整参数来满足不同的需求。