.NET DNS 类 powershell 后台作业可能吗?

标签 .net powershell dns

我发现了这个脚本,我对其进行了一些修改以从文件中获取主机名:

http://tompaps.blogspot.com/2015/04/verify-forward-and-reverse-dns-records.html

它几乎会遍历文件中的每个名称,对其进行 ping 操作,将返回的 IP 转换为字符串,并对 IP 执行反向查找。它可以工作,但是当我有 600 多台机器要测试时,性能就没有那么好了。我知道通过测试连接,我可以使用 -asjob 参数来运行异步作业,该作业在几秒钟内完成正向查找作业,但有人知道如何模仿这种反向查找行为吗?

我在这个论坛上发现了一篇帖子,建议您可以使用 .NET 进程类执行类似的操作,但我刚刚使用 Powershell 几个月,似乎无法解读 MSDN 文档。

最佳答案

您可以将其包装在脚本 block 中,并在 foreach 循环中执行 Start-Job,以执行以下正向和反向查找操作:

$ComputerName= ‘computername here’
[System.Net.Dns]::GetHostAddresses(“$ComputerName”).IPAddressToString

$ComputerIPAddress = ‘that computer ip here'
[System.Net.Dns]::GetHostEntry($ComputerIPAddress).HostName

例如

$whateverlist = Get-Content .\yourlistofservers.txt

# or you can..

$whateverlist = @"
machine1
machine2
machine3
etc
"@

$Scriptblock = {
param($machine);

    $pingOk = Test-Connection -cn $machine -BufferSize 16 -Count 1 -EA silentlyContinue
        if ($pingOk)
        {

            # Do whatever if it responds to pinging
            # Maybe store the property in a list, put it out to a file etc.

            [System.Net.Dns]::GetHostAddresses(“$machine”).IPAddressToString



            # Use whatever method you like to get IP of the computer, even use the above output.
            # Me being lazy:
            $ip = [System.Net.Dns]::GetHostAddresses(“$machine”).IPAddressToString


            [System.Net.Dns]::GetHostEntry($ip).HostName

        }
}

# Then you can get the job, do whatever. Do it in a foreach for best results.
foreach ($machine in $whateverlist)
{
    Start-Job -ScriptBlock $Scriptblock -ArgumentList $machine
}


# To crack open the eggs and get the goodies:
Receive-Job * -Keep | Out-File ".\whatevermanijustworkhere.txt"

这是一个干净的副本:

$whateverlist = Get-Content .\yourlistofservers.txt

$whateverlist = @"
machine1
machine2
machine3
etc
"@

$Scriptblock = {
param($machine);

    $pingOk = Test-Connection -cn $machine -BufferSize 16 -Count 1 -EA silentlyContinue
        if ($pingOk)
        {
            $ip = [System.Net.Dns]::GetHostAddresses(“$machine”).IPAddressToString
            $ip

            [System.Net.Dns]::GetHostEntry($ip).HostName

        }
}


foreach ($machine in $whateverlist)
{
    Start-Job -ScriptBlock $Scriptblock -ArgumentList $machine
}

Receive-Job * -Keep | Out-File ".\whatevermanijustworkhere.txt"

来源:

https://adsecurity.org/?p=305

关于.NET DNS 类 powershell 后台作业可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36205922/

相关文章:

.net - 当我发布 VB .NET 应用程序时,是否会包含引用?

c# - Automapper 将多个嵌套类映射到具有各种属性的一个类

具有自定义域名的 SaaS 应用程序的 SSL 设置

performance - Powershell 单引号与双引号

kubernetes - kubernetes 中的 coredns crashloopbackoff

amazon-web-services - 为什么 Elastic Beanstalk 负载均衡器拒绝建立 SSL 连接?

c# - Fusion Log Assembly Binder 错误 - 绑定(bind)结果 : hr = 0x1. 函数不正确

.net - 如何捕获死锁引起的SqlException?

.net - 使用 System.Xml.XmlDocument 解析 vcxproj

search - 优化 PowerShell 中的简单搜索脚本