|
Компьютерный форум 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 |
fascinating rhythm Сообщения: 6493
|
Профиль | Отправить PM | Цитировать Всё начиналось с простого пинга, а теперь строим ракетный комплекс.
Цитата JimmLight:
Полагаю, что если вы пытаетесь решать довольно сложные задачи на Powershell, неплохо бы немножко его изучить, а не просто копипастить код с форума. |
|
------- Отправлено: 13:04, 14-04-2021 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать Цитата:
$CurrentDate = Get-Date $CurrentDate = $CurrentDate.ToString('dd-MMMM-yyy_HH-mm-ss') $csv = "C:\Scripts\Ping_Computers\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"=$Computer.CanonicalName "date"=$CurrentDate } $Obj=New-Object -Type PsObject -Property $p $Results.Add($Obj) } } $Results | Export-Csv -Encoding UTF8 -Delimiter ";" -Path $csv Цитата:
Цитата:
|
|||
Отправлено: 13:13, 14-04-2021 | #22 |
fascinating rhythm Сообщения: 6493
|
Профиль | Отправить PM | Цитировать Цитата JimmLight:
А $Computers - это У вас в csv есть поле CanonicalName? |
|
------- Отправлено: 13:39, 14-04-2021 | #23 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
С этим я разобрался. И с тем, чтобы заменить "/" на "";"" (издевательство конечно, но работает). Теперь необходимо удалить последнее значение, которое содержит ФИО пользователя. Вот что получилось: $CurrentDate = Get-Date $CurrentDate = $CurrentDate.ToString('dd.MM.yyy HH.mm') $CurrentDateCsv = Get-Date $CurrentDateCsv = $CurrentDateCsv.ToString('dd.MM.yyy HH:mm') $csv = "C:\Scripts\Ping_Computers\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]@{ "date"=$CurrentDateCsv "Pager"=$Computer.Pager "IP"=$IP "name"=$Computer.Name "title"=$Computer.Title "department"=$Computer.Department "canonicalName"=$Computer.CanonicalName } $Obj=New-Object -Type PsObject -Property $p $Results.Add($Obj) } } $Results | Export-Csv -Encoding UTF8 -Delimiter ";" -Path $csv Get-ChildItem $csv | ForEach-Object { (Get-Content -Path $_.FullName) -replace '/', '";"' | Set-Content -Path $_.FullName } |
|
Последний раз редактировалось JimmLight, 14-04-2021 в 14:26. Отправлено: 14:09, 14-04-2021 | #24 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|