当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Active Directory 数据库大小监控:构建监视器

作者:精品下载站 日期:2024-12-14 13:15:16 浏览:14 分类:玩电脑

Active Directory 数据库大小监控:构建监视器


到目前为止,Active Directory 数据库是 AD 最重要的部分。毕竟,如果没有数据库,AD 根本就没有多大用处。 Active Directory 数据库在哪里? ntds.dit 位置在哪里?以及如何监控数据库?您将在本教程中找到这些问题的答案!

监控 AD 的各个方面非常重要,而数据库本身至关重要。这就是为什么值得花时间研究数据库的组成以及如何最好地监控它以确保其保持健康。

在本文中,我们将构建一个 PowerShell 脚本,该脚本允许您查看域中每个 DC 上的每个 AD 数据库的查询,并确定有关该数据库的一个重要指标;数据库的总体大小。

Ntds.dit(Active Directory 数据库)

AD 数据库由名为 ntds.dit 的文件组成,ntds.dit 位置通常位于每个域控制器的 C:\Windows\NTDS 中。

为了确保我们获得正确的路径,我们首先需要找出数据库路径在哪里。该值存储在注册表项HKLM:\System\CurrentControlSet\Services\NTDS\Parameters中。

使用 PowerShell 查找 AD 数据库

让我们查询环境中的所有 DC 以获取数据库文件路径。

$dcs = (Get-ADDomainController).Name
$dbs = Invoke-Command -ComputerName $dcs -ScriptBlock {
    Get-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\NTDS\Parameters
} | Select PSComputerName,'DSA Database File'

现在我知道了每个 DC 上 Active Directory 数据库的路径,我现在可以查询每个当前大小。为此,我将使用 foreach 循环并迭代我在上面创建的 $dbs 变量,该变量包含域控制器名称以及每个域上数据库文件的路径。 。

监控 AD 数据库的大小

为了更轻松地理解输出,我将使用 $output 哈希表,在读取每个数据库文件时为其分配值,例如域控制器名称和每个数据库的大小。当我读完数据库文件后,我会将其转换为自定义对象。这将显示比简单的 PSComputerName、DSA 数据库文件和大小更好的输出。

$dbs | foreach {
    $output = @{}
    $path = $_.'DSA Database File'
    $output.Add('DomainController', $_.PSComputerName)
    $size = Invoke-Command -ComputerName $_.PSComputerName -ScriptBlock {
        (Get-ItemProperty -Path $using:path).Length /1GB
    }
    $output.Add('DatabaseSizeDB', $size)
    [pscustomobject]$output
}

此代码片段将为您提供 DatabaseSizeDBDomainController 属性的良好输出。在我的演示环境中,我只有一个 DC。如果您在生产中运行此程序,您会看到每个域控制器
以及每个域控制器旁边的数据库总大小(以 GB 为单位)。

现在您有了一个可以随时运行的脚本,以获取每个 Active Directory 数据库文件已增长到多大的时间点快照!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯