所以一个朋友拉了这个脚本来为我ping一个主机名,并告诉我它是启动还是关闭。如果主机名启动,它将填充与之关联的IP地址。我不是PS专家,想添加“检查广告”功能,并以“是”或“否”告诉我它是否在广告中。任何帮助是极大的赞赏。当前脚本如下。
$path = ".\results.xls"
$objExcel = new-object -comobject excel.application
if (Test-Path $path)
{
$objWorkbook = $objExcel.WorkBooks.Open($path)
$objWorksheet = $objWorkbook.Worksheets.Item(1)
}
else {
$objWorkbook = $objExcel.Workbooks.Add()
$objWorksheet = $objWorkbook.Worksheets.Item(1)
}
$objExcel.Visible = $True
#########Add Header####
$objWorksheet.Cells.Item(1, 1) = "IP"
$objWorksheet.Cells.Item(1, 2) = "Result"
$objWorksheet.Cells.Item(1, 3) = "In DNS"
$ipaddresses = Get-Content .\iplist.txt
$row=2
$ipaddresses | foreach-object{
$ping = $null
$iname = $null
$ipaddresses = $_
$ping = Test-Connection $ipaddresses -Count 1 -ea silentlycontinue
$CheckDNS = try {$DNS = Resolve-DnsName -Identity $ipaddresses -ErrorAction Stop
if ($DNS){"Yes"}else{throw}
}
catch {"No"}
$objWorksheet.Cells.Item($row,3) = $CheckDNS
if($ping){
$objWorksheet.Cells.Item($row,1) = $machine
$objWorksheet.Cells.Item($row,2) = "UP"
$iname = $ping.IPV4Address.IPAddressToString
$objWorksheet.Cells.Item($row,3) = $iname
$row++}
else {
$objWorksheet.Cells.Item($row,1) = $machine
$objWorksheet.Cells.Item($row,2) = "DOWN"
$row++}
}
我是这样更新的。.似乎它没有显示A单元格中的IP地址。但是它将显示B单元中的UP或DOWN。但是在C单元中,它将告诉我是否是不是在DNS中,但我假设是。。它将仅显示IP地址。我不知道我要去哪里错了。
答案 0 :(得分:0)
在脚本中的Test-Connection
行之后添加此代码。
$checkAD = try {
$comp = Get-ADComputer -Identity $machine -ErrorAction Stop
if ($comp){"Yes"}else{throw}
}
catch {
"No"
}
变量$checkAD
的值应为Yes
或No
。您可以将其添加到您的xls工作表中,例如$objWorksheet.Cells.Item($row,4) = $checkAD
您的脚本可以使用一些优化,但是由于它是您的第一个脚本,因此无需编写完美的脚本。祝你好运。