lox-ness
25-10-2019, 12:55
Добрый День!
Необходимо у активного сетевого интерфейса получить определенные сведения. Подключение к ПК производиться средствами WMI и на определенных ПК возникает ошибка подключения.
Если на ПК числиться более одного сетевого интерфейса, происходит перезапись в ячейке Excel последними найденными данными, ни как не получается корректно вставить блок try catch.
Set-PSDebug -Trace 0
$Excel = New-Object -Com Excel.Application
$Excel.visible = $True
$Excel = $Excel.Workbooks.Add()
$Excel.Worksheets.Item(1).Name = "Данные"
$sheet = $Excel.WorkSheets.Item("Данные")
$Sheet.Cells.Item(1,1) = "Имя ПК"
$Sheet.Cells.Item(1,2) = "Имя Сетевого интерфейса"
$Sheet.Cells.Item(1,3) = "DNS"
$Sheet.Cells.Item(1,4) = "Primary WINS"
$Sheet.Cells.Item(1,5) = "Secondary WINS"
$Sheet.Cells.Item(1,6) = "DHCP Auto"
$intRow = 2
$WorkBook = $Sheet.UsedRange
$WorkBook.Interior.ColorIndex = 20
$WorkBook.Font.ColorIndex = 11
$WorkBook.Font.Bold = $True
$pc = Get-Content D:\2.txt
Foreach ($PS in $pc) {
try {
$DeviceID = Get-WmiObject Win32_NetworkAdapter -computer $PS -ErrorAction Stop | Where {$_.NetConnectionStatus -eq "2"} | Select DeviceID
$Index = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $PS | Where {$DeviceID.DeviceID -contains $_.Index} |
#$data = $index | Where {$DeviceID.DeviceID -contains $_.Index} | Select PSComputerName, Description, DNSServerSearchOrder, WINSPrimaryServer, WINSSecondaryServer, DHCPEnabled |
ForEach-Object {
$c = $_
$DNSServerSearchOrder = $c.DNSServerSearchOrder
$Sheet.Cells.Item($intRow,1) = $ps
$Sheet.Cells.Item($intRow,1).EntireColumn.AutoFit()
$Sheet.Cells.Item($intRow,2) = $c.Description
$Sheet.Cells.Item($intRow,2).EntireColumn.AutoFit()
$Sheet.Cells.Item($intRow,3) = "$DNSServerSearchOrder"
$Sheet.Cells.Item($intRow,3).EntireColumn.AutoFit()
$Sheet.Cells.Item($intRow,4) = $c.WINSPrimaryServer
$Sheet.Cells.Item($intRow,4).EntireColumn.AutoFit()
$Sheet.Cells.Item($intRow,5) = $c.WINSSecondaryServer
$Sheet.Cells.Item($intRow,5).EntireColumn.AutoFit()
$Sheet.Cells.Item($intRow,6) = $c.DHCPEnabled
$Sheet.Cells.Item($intRow,6).EntireColumn.AutoFit()
}
}
Catch {
$Sheet.Cells.Item($intRow,1) = $ps
$Sheet.Cells.Item($intRow,1).EntireColumn.AutoFit()
}
$intRow = $intRow + 1
}
Необходимо у активного сетевого интерфейса получить определенные сведения. Подключение к ПК производиться средствами WMI и на определенных ПК возникает ошибка подключения.
Если на ПК числиться более одного сетевого интерфейса, происходит перезапись в ячейке Excel последними найденными данными, ни как не получается корректно вставить блок try catch.
Set-PSDebug -Trace 0
$Excel = New-Object -Com Excel.Application
$Excel.visible = $True
$Excel = $Excel.Workbooks.Add()
$Excel.Worksheets.Item(1).Name = "Данные"
$sheet = $Excel.WorkSheets.Item("Данные")
$Sheet.Cells.Item(1,1) = "Имя ПК"
$Sheet.Cells.Item(1,2) = "Имя Сетевого интерфейса"
$Sheet.Cells.Item(1,3) = "DNS"
$Sheet.Cells.Item(1,4) = "Primary WINS"
$Sheet.Cells.Item(1,5) = "Secondary WINS"
$Sheet.Cells.Item(1,6) = "DHCP Auto"
$intRow = 2
$WorkBook = $Sheet.UsedRange
$WorkBook.Interior.ColorIndex = 20
$WorkBook.Font.ColorIndex = 11
$WorkBook.Font.Bold = $True
$pc = Get-Content D:\2.txt
Foreach ($PS in $pc) {
try {
$DeviceID = Get-WmiObject Win32_NetworkAdapter -computer $PS -ErrorAction Stop | Where {$_.NetConnectionStatus -eq "2"} | Select DeviceID
$Index = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $PS | Where {$DeviceID.DeviceID -contains $_.Index} |
#$data = $index | Where {$DeviceID.DeviceID -contains $_.Index} | Select PSComputerName, Description, DNSServerSearchOrder, WINSPrimaryServer, WINSSecondaryServer, DHCPEnabled |
ForEach-Object {
$c = $_
$DNSServerSearchOrder = $c.DNSServerSearchOrder
$Sheet.Cells.Item($intRow,1) = $ps
$Sheet.Cells.Item($intRow,1).EntireColumn.AutoFit()
$Sheet.Cells.Item($intRow,2) = $c.Description
$Sheet.Cells.Item($intRow,2).EntireColumn.AutoFit()
$Sheet.Cells.Item($intRow,3) = "$DNSServerSearchOrder"
$Sheet.Cells.Item($intRow,3).EntireColumn.AutoFit()
$Sheet.Cells.Item($intRow,4) = $c.WINSPrimaryServer
$Sheet.Cells.Item($intRow,4).EntireColumn.AutoFit()
$Sheet.Cells.Item($intRow,5) = $c.WINSSecondaryServer
$Sheet.Cells.Item($intRow,5).EntireColumn.AutoFit()
$Sheet.Cells.Item($intRow,6) = $c.DHCPEnabled
$Sheet.Cells.Item($intRow,6).EntireColumn.AutoFit()
}
}
Catch {
$Sheet.Cells.Item($intRow,1) = $ps
$Sheet.Cells.Item($intRow,1).EntireColumn.AutoFit()
}
$intRow = $intRow + 1
}