none
Выгрузка данных по серверам из текстового файла (Powershell) RRS feed

  • Вопрос

  • Добрый день, коллеги!

    Есть текстовый файл такого вида:

    nsk-ssrv02

    nsk-sdbs34

    nsk-ssus83

    и т.д.

    Задача, проверить, что данные сервера пингуются, а так же выгрузить с них модель сервера (если это сервер), а так же вендора сервера. Собственно, скрип я написал, он работает и проблем с ним нет:

    cls
    $Date = ((Get-Date -format s).ToString()).Replace(":","-")
    $servers = Get-Content 'C:\Temp\Old_PC\Scripts\123.txt'
    
    foreach ($server in $servers)
    {
        Write-Host "Проверяю сервер $($server)" -ForegroundColor Green
        $srv = $server
        $ping = Test-Connection $srv -Count 1 -ErrorAction SilentlyContinue
        if ($ping -ne $null)
        {
            [pscustomobject]@{
    	                        Name = $srv
                                Ping = Test-Connection $srv -Quiet -Count 2 -ErrorAction SilentlyContinue
    	                        OperatingSystem = (gwmi -class Win32_OperatingSystem -ComputerName $srv).caption
    	                        Vendor = (gwmi Win32_Computersystem -ComputerName $srv).Manufacturer
    	                        Model = (gwmi Win32_Computersystem -ComputerName $srv).Model
                                DistinguishedName = (Get-ADComputer $srv).DistinguishedName
    	                     } | Export-Csv "C:\Temp\Old_PC\Scripts\SRV_60_Days-$Date.csv" -Append -NoTypeInformation -Encoding UTF8
        }
    
        else {Write-Host "Не пингуется $($srv)"  -ForegroundColor Red}
    } 

    Но, я не могу додуматься, что добавить в этот скрипт, чтобы на выходе, в CSV файле в столбце Ping, были проставлены так же сервера, которые у меня уходят по ветке Else, с пометкой False.

    Прошу помощи, или совета, заранее спасибо!


    • Изменено eclegolas 25 февраля 2019 г. 14:34 Примечание
    25 февраля 2019 г. 14:33

Ответы

  • cls $Date = ((Get-Date -format s).ToString()).Replace(":","-") $servers = Get-Content 'C:\Temp\Old_PC\Scripts\123.txt' $ErrorActionPreference = 'SilentlyContinue' foreach ($srv in $servers) { Write-Host "Проверяю сервер '$($srv)'" $ping = Test-Connection $srv -Count 1 -Quiet Clear-Variable baseInfo, OperatingSystem, Vendor, Model, DistinguishedName

    $baseInfo = @{ Name = $srv Ping = $ping } $baseInfo = new-object psobject -Property $baseInfo if ($ping){ Write-Host "Пингуется '$($srv)'" -ForegroundColor Green $OperatingSystem = (gwmi -class Win32_OperatingSystem -ComputerName $srv).caption $Vendor = (gwmi Win32_Computersystem -ComputerName $srv).Manufacturer $Model = (gwmi Win32_Computersystem -ComputerName $srv).Model $DistinguishedName = (Get-ADComputer $srv).DistinguishedName } else {Write-Host "Не пингуется '$($srv)'" -ForegroundColor Red} $baseInfo | Add-Member -MemberType NoteProperty -Name OperatingSystem -Value $(if($OperatingSystem){$OperatingSystem}else{''}) $baseInfo | Add-Member -MemberType NoteProperty -Name Vendor -Value $(if($Vendor){$Vendor}else{''}) $baseInfo | Add-Member -MemberType NoteProperty -Name Model -Value $(if($Model){$Model}else{''}) $baseInfo | Add-Member -MemberType NoteProperty -Name DistinguishedName -Value $(if($DistinguishedName){$DistinguishedName}else{''}) $baseInfo | Export-Csv "C:\Temp\SRV_60_Days-$Date.csv" -Append -NoTypeInformation -Encoding UTF8 }



    The opinion expressed by me is not an official position of Microsoft



    • Изменено Vector BCOModerator 25 февраля 2019 г. 16:13
    • Помечено в качестве ответа eclegolas 26 февраля 2019 г. 8:15
    25 февраля 2019 г. 16:08
    Модератор

Все ответы

  • cls $Date = ((Get-Date -format s).ToString()).Replace(":","-") $servers = Get-Content 'C:\Temp\Old_PC\Scripts\123.txt' $ErrorActionPreference = 'SilentlyContinue' foreach ($srv in $servers) { Write-Host "Проверяю сервер '$($srv)'" $ping = Test-Connection $srv -Count 1 -Quiet Clear-Variable baseInfo, OperatingSystem, Vendor, Model, DistinguishedName

    $baseInfo = @{ Name = $srv Ping = $ping } $baseInfo = new-object psobject -Property $baseInfo if ($ping){ Write-Host "Пингуется '$($srv)'" -ForegroundColor Green $OperatingSystem = (gwmi -class Win32_OperatingSystem -ComputerName $srv).caption $Vendor = (gwmi Win32_Computersystem -ComputerName $srv).Manufacturer $Model = (gwmi Win32_Computersystem -ComputerName $srv).Model $DistinguishedName = (Get-ADComputer $srv).DistinguishedName } else {Write-Host "Не пингуется '$($srv)'" -ForegroundColor Red} $baseInfo | Add-Member -MemberType NoteProperty -Name OperatingSystem -Value $(if($OperatingSystem){$OperatingSystem}else{''}) $baseInfo | Add-Member -MemberType NoteProperty -Name Vendor -Value $(if($Vendor){$Vendor}else{''}) $baseInfo | Add-Member -MemberType NoteProperty -Name Model -Value $(if($Model){$Model}else{''}) $baseInfo | Add-Member -MemberType NoteProperty -Name DistinguishedName -Value $(if($DistinguishedName){$DistinguishedName}else{''}) $baseInfo | Export-Csv "C:\Temp\SRV_60_Days-$Date.csv" -Append -NoTypeInformation -Encoding UTF8 }



    The opinion expressed by me is not an official position of Microsoft



    • Изменено Vector BCOModerator 25 февраля 2019 г. 16:13
    • Помечено в качестве ответа eclegolas 26 февраля 2019 г. 8:15
    25 февраля 2019 г. 16:08
    Модератор
  • Добрый день, Вектор!

    Спасибо!

    26 февраля 2019 г. 8:16