|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - ping компьютеров из *.csv |
|
PowerShell - ping компьютеров из *.csv
|
Новый участник Сообщения: 47 |
Профиль | Отправить PM | Цитировать Привет всем.
Стоит следующая задача: Необходимо отследить компьютеры, которые не выключаются на ночь. Есть User_Comp.csv следующего содержания: #TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser "pager","name","title","department" "IVANOV_PC","Иванов Иван Иванович","Заместитель начальник","Отдел начальников" "PC_BARANOV","Баранов Михаил Петрович","Главный надзиратель","Отдел надзирателей" ,"Горьков Михаил Денисович","Советник слесаря","Отдел слесарей" "PETROV","Петров Максим Альбертович","Слесарь","Отдел слесарей" #TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser "pager","IP","name","title","department" "PC_BARANOV","IP","Баранов Михаил Петрович","Главный надзиратель","Отдел надзирателей" "PETROV","IP","Петров Максим Альбертович","Слесарь","Отдел слесарей" Ранее пользовался скриптом, который пингует все компьютеры (которые лежат в определенной OU) в домене: Скрытый текст
# Enter CSV file location $CurrentDate = Get-Date $CurrentDate = $CurrentDate.ToString('MM-dd-yyyy_hh-mm-ss') $csv = "C:\Temp\Ping_$CurrentDate.csv" # Add the target OU in the SearchBase parameter $Computers = Get-ADComputer -Filter * -SearchBase "OU=SuperComputers,DC=domain,DC=ru" | Select Name | Sort-Object Name $Computers = $Computers.Name $Headers = "ComputerName,IP Address" $Headers | Out-File -FilePath $csv -Encoding UTF8 -Delimiter ";" foreach ($computer in $Computers) { Write-host "Pinging $Computer" $Test = Test-Connection -ComputerName $computer -Count 1 -ErrorAction SilentlyContinue -ErrorVariable Err if ($test -ne $null) { $IP = $Test.IPV4Address.IPAddressToString $Output = "$Computer,$IP" $Output | Out-File -FilePath $csv -Encoding UTF8 -Append } Else { $Output = "$Computer,$Err" $output | Out-File -FilePath $csv -Encoding UTF8 -Append } cls } Но теперь чуть другая задача. Подсобите, plz, скриптом. |
|
Отправлено: 08:22, 07-04-2021 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:23, 07-04-2021 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать test-connection это и есть по сути пинг.
А что он выдаёт без ключа -quiet? |
------- Отправлено: 19:53, 07-04-2021 | #12 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось JimmLight, 08-04-2021 в 06:09. Отправлено: 06:01, 08-04-2021 | #13 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать cmd:
C:\>ping test_pc Обмен пакетами с test_pc.domain.ru [192.168.18.56] с 32 байтами данных: Ответ от 192.168.18.56: число байт=32 время<1мс TTL=127 Ответ от 192.168.18.56: число байт=32 время<1мс TTL=127 Ответ от 192.168.18.56: число байт=32 время<1мс TTL=127 Ответ от 192.168.18.56: число байт=32 время<1мс TTL=127 Статистика Ping для 192.168.18.56: Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь) Приблизительное время приема-передачи в мс: Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек PowerShell: |
Отправлено: 06:48, 08-04-2021 | #14 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать У вас почему-то неправильно работает эта команда, вот описание той же проблемы, но без решения: https://stackoverflow.com/questions/...ection-mystery
Попробуйте на другом компе. |
------- Отправлено: 11:00, 08-04-2021 | #15 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать Вот отличный скрипт, который делает, что нужно.
Скрытый текст
$CurrentDate = Get-Date $CurrentDate = $CurrentDate.ToString('MM-dd-yyyy_hh-mm-ss') $csv = "C:\Ping_$CurrentDate.csv" $Results=New-Object System.Collections.Generic.List[PSObject] $Computers=Import-Csv -Path "C:\User_Comp.csv" $Computers = $Computers| where-object {$_.pager -ne ""} foreach ($computer in $Computers) { Write-host "Pinging $($Computer.pager)" $Test = Test-Connection -ComputerName $($Computer.pager) -Count 1 -ErrorAction SilentlyContinue -ErrorVariable Err if ($test -ne $null) { $IP = $Test.IPV4Address.IPAddressToString $p=[ordered]@{ "Pager"=$Computer.Pager "IP"=$IP "name"=$Computer.Name "title"=$Computer.Title "department"=$Computer.Department } $Obj=New-Object -Type PsObject -Property $p $Results.Add($Obj) } } $Results | Export-Csv -Encoding UTF8 -Delimiter ";" -Path $csv 1. Можно ли добавить в начало файла "C:\Ping_$CurrentDate.csv" дату / время создания? 2. Каким образом, можно реализовать список исключений? Т.е. есть список исключений - C:\Temp\exceptions_ping.csv, следующего формата: который не должен попадать, в C:\Temp\Ping_$CurrentDate.csv. |
Отправлено: 06:20, 12-04-2021 | #16 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать Цитата JimmLight:
И удивительно, что Test-Connection почему-то заработал правильно (хотя тут применён обходной вариант). Если кто-нибудь сможет мне объяснить, почему он не работал в моём варианте, буду благодарен. Цитата JimmLight:
|
||
------- Последний раз редактировалось DJ Mogarych, 12-04-2021 в 09:58. Отправлено: 09:38, 12-04-2021 | #17 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать $ex = (import-csv "C:\Temp\exceptions_ping.csv").pager $Computers = Import-Csv "C:\User_Comp.csv" |? {$_.pager -and $_.pager -notin $ex} Цитата DJ Mogarych:
Можно ли добавить в начало / конец самого файла "C:\Ping_$CurrentDate.csv" дату / время создания? |
|
Отправлено: 11:00, 12-04-2021 | #18 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 13:21, 12-04-2021 | #19 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать Добавил в *.csv-файл "canonicalName", но в:
почему-то не выходит "canonicalName". $CurrentDate = Get-Date $CurrentDate = $CurrentDate.ToString('dd-MMMM-yyy_HH-mm-ss') $csv = "C:\Pings\Ping_$CurrentDate.csv" $Results=New-Object System.Collections.Generic.List[PSObject] $ex = (import-csv "C:\Scripts\Ping_Computers\exceptions_ping.csv").pager $Computers = Import-Csv "C:\Scripts\Ping_Computers\User_Comp.csv" |? {$_.pager -and $_.pager -notin $ex} $Computers = $Computers| where-object {$_.pager -ne ""} foreach ($computer in $Computers) { Write-host "Pinging $($Computer.pager)" $Test = Test-Connection -ComputerName $($Computer.pager) -Count 1 -ErrorAction SilentlyContinue -ErrorVariable Err if ($test -ne $null) { $IP = $Test.IPV4Address.IPAddressToString $p=[ordered]@{ "Pager"=$Computer.Pager "IP"=$IP "name"=$Computer.Name "title"=$Computer.Title "department"=$Computer.Department "canonicalName"=$canonicalName.canonicalName "date"=$CurrentDate } $Obj=New-Object -Type PsObject -Property $p $Results.Add($Obj) } } $Results | Export-Csv -Encoding UTF8 -Delimiter ";" -Path $csv domain.ru/OrganizationUnit_1/OrganizationUnit_2/OrganizationUnit_3/OrganizationUnit_4/OrganizationUnit_5/OrganizationUnit_6/OrganizationUnit_7/User был следующим: "Pager";"IP";"name";"title";"department";"OrganizationUnit_1";"OrganizationUnit_2";"OrganizationUnit_3";"OrganizationUnit_4";"OrganizationUnit_5";"OrganizationUnit_6";"OrganizationUnit_7";"date" в один файл: После этого удалить файлы (оставить только недельный). |
Отправлено: 12:23, 14-04-2021 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - Экспорт данных из CSV в CFG | Lezenford | Скриптовые языки администрирования Windows | 11 | 12-10-2016 15:17 | |
PowerShell - [решено] Переименование компьютеров домена netdom+csv | nokogerra | Скриптовые языки администрирования Windows | 5 | 07-11-2014 10:14 | |
CMD/BAT - [решено] Периеминование файла doc.csv в Документ_дата_время.csv | kagorec | Скриптовые языки администрирования Windows | 2 | 29-03-2014 18:40 | |
Любой язык - Перенести данные из csv в html | OverSense | Скриптовые языки администрирования Windows | 2 | 14-02-2014 22:11 | |
CMD/BAT - Из csv в xls с помощью батника | OverSense | Скриптовые языки администрирования Windows | 1 | 13-02-2014 18:38 |
|