我正在编写一个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()
}
如果安装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 8及更高版本上的PowerShell 3.0附带了Resolve-DnsName
cmdlet,该cmdlet将获取以下信息:
(Resolve-DnsName $server_name)[0].IpAddress
简单使用:
Resolve-DnsName monServer | ? { # make selection here } | % { $_.IPAdress } | select-object -first 1
#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 .inputservers.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