我有一个脚本,它除了其他功能外,还更新 DNS 中的 CName 记录。它会在多个 DNS 服务器上更新同一条记录,每个站点一个,因为我们等不及要进行复制了。
Get-DnsServerResourceRecord 命令第一次运行时需要超过 5 分钟才能获得结果,但之后每次只需要 12 秒。
有人能想到它为什么这么慢吗?这一切都在同一个网站上,并且没有使用任何慢速链接。脚本如下,以及计时结果。
编辑:忘记提到此脚本使用服务帐户作为计划任务运行。延迟仅在计划任务运行时发生 - 如果我自己运行它,则不会发生这种情况。
Measure-Command
{
$NewObj = Get-DnsServerResourceRecord -ComputerName "<domainController>" -Name "mft" -ZoneName "<domainFQDN>" -RRType CName
}
Measure-Command
{
$OldObj = Get-DnsServerResourceRecord -ComputerName "<domainController>" -Name "mft" -ZoneName "<domainFQDN>" -RRType CName
}
Measure-Command
{
$NewObj.RecordData.HostNameAlias = "<newHost>.<domainFQDN>"
Set-DnsServerResourceRecord -NewInputObject $NewObj -OldInputObject $OldObj -ComputerName "<domainController>" -ZoneName "<domainFQDN>" -PassThru
}
结果:
Days : 0
Hours : 0
Minutes : 5
Seconds : 7
Milliseconds : 948
Ticks : 3079486397
TotalDays : 0.00356422036689815
TotalHours : 0.0855412888055555
TotalMinutes : 5.13247732833333
TotalSeconds : 307.9486397
TotalMilliseconds : 307948.6397
Days : 0
Hours : 0
Minutes : 0
Seconds : 12
Milliseconds : 425
Ticks : 124256457
TotalDays : 0.00014381534375
TotalHours : 0.00345156825
TotalMinutes : 0.207094095
TotalSeconds : 12.4256457
TotalMilliseconds : 12425.6457
Days : 0
Hours : 0
Minutes : 0
Seconds : 13
Milliseconds : 468
Ticks : 134686180
TotalDays : 0.000155886782407407
TotalHours : 0.00374128277777778
TotalMinutes : 0.224476966666667
TotalSeconds : 13.468618
TotalMilliseconds : 13468.618
EDIT2:好的,所以我尝试了 Measure-Command {Import-Module DNSServer},基本上它只是在那里呆了几个小时什么也没做。但我注意到脚本通常运行速度很慢,所以我这样做了:
Measure-Command{
Start-Sleep -s 1
}
结果:
Days : 0
Hours : 0
Minutes : 0
Seconds : 2
Milliseconds : 139
Ticks : 21393401
TotalDays : 2.4760880787037E-05
TotalHours : 0.000594261138888889
TotalMinutes : 0.0356556683333333
TotalSeconds : 2.1393401
TotalMilliseconds : 2139.3401
所以也许只是脚本运行缓慢?我尝试导出任务,将优先级提高到 0,结果是一样的。我尝试让它以 SYSTEM 和我的帐户运行,结果是一样的。我甚至尝试创建一个只包含 Measure-Command 和 Start-Sleep 命令的新脚本,但它似乎什么也没做(没有输出)。
您对下一步该做什么有什么想法吗?我还更新了问题的名称,以更好地反映问题。
谢谢您的帮助
答案1
好吧,现在我很困惑。本来打算向微软提出支持案例,并删除了所有 measure-command 命令,它运行得非常好。一点问题都没有。现在感觉很沮丧……