Ошибка Powershell: исключение из HRESULT: 0x800A03EC - PullRequest
0 голосов
/ 28 января 2020

Любая помощь для этого была бы великолепна. столкнулся с этой ошибкой, и я не могу понять, почему не удается записать в строку 4. Я пробовал разные форматы и до сих пор продолжает выдавать ошибку. Я пробовал это в XLS и CSV. Не повезло, снова любая помощь будет здорово, спасибо!

$path = ".\results.csv"

$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) = "MachineIP"
$objWorksheet.Cells.Item(1, 2) = "Result"
$objWorksheet.Cells.Item(1, 3) = "HostName"
$objWorksheet.Cells.Item(1, 4) = "ServiceTag"

$ipadd = Read-Host "Please enter the IP address ex. 10.0.0. "
75..190 | ForEach-Object {$ipadd + "$_"} | Out-File -FilePath .\machinelist.txt
Start-Sleep -s 3

$machines = gc .\machinelist.txt
$count = $machines.count

$row=2

$machines | foreach-object{
$ping=$null
$hname =$null
$machine = $_
$ping = Test-Connection $machine -Quiet -Count 1 -ea silentlycontinue
if($ping){
    try{
    $hname = [System.Net.Dns]::GetHostByAddress($machine).HostName
    }catch{}
    try{
    $stag = Get-WmiObject -ComputerName $machine Win32_BIOS | Select-Object SerialNumber
    }catch{}
    $objWorksheet.Cells.Item($row,1) = $machine
    $objWorksheet.Cells.Item($row,2) = "UP"
    $objWorksheet.Cells.Item($row,3) = $hname  
    $objWorksheet.Cells.Item($row,4) = $stag              
    $row++

} else {

}
}

Remove-Item -Path .\machinelist.txt -Force

1 Ответ

0 голосов
/ 28 января 2020

Когда я запустил ваш код, я увидел две проблемы, которые продолжали появляться.

  1. Сервер RP C недоступен (для IP-адреса, который не разрешен)
  2. Не удается чтобы присвоить значение ячейке.

Для 1 я просто добавил -ErrorAction SilentlyContinue, а для 2 я добавил кавычки вокруг значения для $ stag. См. Скрипт

if($ping){
    try{
    $hname = [System.Net.Dns]::GetHostByAddress($machine).HostName
    }catch{}
    try{
        $stag = Get-WmiObject -ComputerName $machine Win32_BIOS -ErrorAction SilentlyContinue | Select-Object SerialNumber
        $objWorksheet.Cells.Item($row,1) = "$machine"
        $objWorksheet.Cells.Item($row,2) = "UP"
        $objWorksheet.Cells.Item($row,3) = "$hname"
        $objWorksheet.Cells.Item($row,4) = "$stag"
    }
    catch{
        $objWorksheet.Cells.Item($row,1) = "$machine"
        $objWorksheet.Cells.Item($row,2) = "DOWN"
        $objWorksheet.Cells.Item($row,3) = "$hname"  
        $objWorksheet.Cells.Item($row,4) = "$stag"
    }
    $row++
}

Если сообщение помогло вам найти решение, отметьте ответ как сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...