【问题标题】:perform nslookup from PowerShell从 PowerShell 执行 nslookup
【发布时间】:2012-09-12 18:56:22
【问题描述】:

我正在编写一个 powershell 来从服务器名称中提取 ip,这需要我将 nslookup 代码嵌入到我的 powershell 中

我该如何做整合工作?

任何人都可以帮助我吗?

Add-PSSnapin Microsoft.SharePoint.PowerShell
$web = Get-SPWeb -Identity “http://nycs00058260/sites/usitp“
$server_status = "PROD"
$list=$web.Lists[”DNS_Status”]
$items = $list.items 
Foreach($item in $items){
    $item_name = $item["Server_name"]  #need to get the ip by this name

    /*nslook up*/
     $item_name.update()

}

【问题讨论】:

    标签: powershell nslookup


    【解决方案1】:

    如果您安装 PSCX 模块,它会附带一个用于处理名称查找的 cmdlet Resolve-Host

    如果没有这个,这个单线就可以完成这项工作

    [System.Net.Dns]::GetHostAddresses("www.msn.com")
    

    您也可以传入 IP 地址 - 但结果会有所不同。

    另见http://blogs.msdn.com/b/powershell/archive/2006/06/26/647318.aspx & http://powershell.com/cs/media/p/210.aspx

    【讨论】:

    • 单行是在 Windows 7 上执行此操作的最简单方法。
    • 虽然我的想法相同,但[System.Net.DNS]nslookup 使用完全不同的方法来查询 DNS 记录。 1.[System.Net.DNS]首先使用本地缓存,nslookup不使用。 2.[System.Net.DNS会在PTR查找失败时查询A记录,然后回复“reverse”。 [System.Net.DNS] 不是 nslookup 的良好诊断替代品。
    【解决方案2】:

    Windows 8 及更高版本上的 PowerShell 3.0 附带一个 Resolve-DnsName cmdlet,它将获取此信息:

    (Resolve-DnsName $server_name)[0].IpAddress
    

    【讨论】:

    • v3 有,v2 没有。另外-您在第一行中不小心将其称为Resolve-DnsClient :)
    • 是的,当我写它的时候,我在想,但不知何故,这并没有让我触手可及。 :-) 是的,DnsClient 是命名的模块。固定。
    • 您能否在回答中澄清 DnsClient 模块仅在 Windows 8 中可用? Richard Siddaway 说它“无法在 Windows 7 上使用,因为底层 WMI 类不可用”。
    • Technet 上的“Resolve-DnsName”:technet.microsoft.com/en-us/library/jj590781(v=wps.620).aspx
    【解决方案3】:

    简单使用:

    Resolve-DnsName monServer | ? { # make selection here } | % { $_.IPAdress }  | select-object -first 1
    

    【讨论】:

      【解决方案4】:
      #Here is a far better method for nslookup
      
      # HOWTO ensure an nslookup results no errors but still gives the original names and column separations
      $day = Get-Date -Format yyyyMMdd #<-- HOWTO set the day variable for today
      $ErrorActionPreference = ‘SilentlyContinue’ #<-- HOWTO turn off error messages
      $WarningActionPreference = 'SilentlyContinue' #<-- HOWTO turn off warning messages
      $servers = Get-Content .\input\servers.txt
      Foreach ($server in $servers){
      $result = Resolve-DnsName $server -Server $env:LOGONSERVER.Remove(0,2) -Type ALL #<-- NSLOOKUP using your logon server
      write-host ($server+","+$result.Name+","+$result.IPAddress) #<-- HOWTO Write two variables separated by a comma
      }
      $ErrorActionPreference = ‘SilentlyContinue’ #HOWTO turn on error messages
      $WarningActionPreference = 'SilentlyContinue' #HOWTO turn on warning messages
      

      【讨论】:

        猜你喜欢
        • 2022-01-04
        • 1970-01-01
        • 2011-07-25
        • 2012-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-16
        相关资源
        最近更新 更多