Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - ping компьютеров из *.csv

Ответить
Настройки темы
PowerShell - ping компьютеров из *.csv

Новый участник


Сообщения: 47
Благодарности: 0

Профиль | Отправить PM | Цитировать


Привет всем.
Стоит следующая задача: Необходимо отследить компьютеры, которые не выключаются на ночь.
Есть User_Comp.csv следующего содержания:
Код: Выделить весь код
#TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser
"pager","name","title","department"
"IVANOV_PC","Иванов Иван Иванович","Заместитель начальник","Отдел начальников"
"PC_BARANOV","Баранов Михаил Петрович","Главный надзиратель","Отдел надзирателей"
,"Горьков Михаил Денисович","Советник слесаря","Отдел слесарей"
"PETROV","Петров Максим Альбертович","Слесарь","Отдел слесарей"
В поле "pager" содержится имя компьютера (но не всегда. Если нет, то пропускать), которое и необходимо пинговать. Если пингуется, то записывать в новый *.csv-файл:
Код: Выделить весь код
#TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser
"pager","IP","name","title","department"
"PC_BARANOV","IP","Баранов Михаил Петрович","Главный надзиратель","Отдел надзирателей"
"PETROV","IP","Петров Максим Альбертович","Слесарь","Отдел слесарей"
Если не пигуется, то ничего не записывать в новый *.csv-файл (имя **csv-файла должно быть: дата_время.csv).

Ранее пользовался скриптом, который пингует все компьютеры (которые лежат в определенной 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

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Powershell:
Код: Выделить весь код
$t = get-date
$report = @()
Import-Csv "D:\temp\User_Comp.csv" |? pager |% {
    if (Test-Connection $_.pager -Count 1 -Quiet) {
    $report += $_
    }
    if ($report) {
    $report |Export-Csv "D:\temp\$($t.ToString("yyyy-MM-dd-HH-mm-ss")).csv" -Delimiter ';' -NoTypeInformation -Encoding utf8
    }
}
Хотя как по мне, так надо не выносить людям мозг по надуманному поводу, а решить задачу - если нужно выключать компьютеры на ночь, выключать их командой удалённо, или настроить GPO, чтобы они засыпали после часа Х.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 07-04-2021 в 12:56. Причина: if $report

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:08, 07-04-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 47
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Powershell: »
Файл "yyyy-MM-dd-HH-mm-ss.csv" создаётся, но не наполняется. Он пустой.
Цитата DJ Mogarych:
Хотя как по мне, так надо не выносить людям мозг по надуманному поводу, а решить задачу - если нужно выключать компьютеры на ночь, выключать их командой удалённо, или настроить GPO, чтобы они засыпали после часа Х. »
Я понимаю, но если руководство решило... :-)

Отправлено: 12:44, 07-04-2021 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Цитата JimmLight:
пустой »
Значит, все компы выключены. Дополнил скрипт выше, чтобы пустого файла не создавалось.
Цитата JimmLight:
если руководство решило »
С руководством надо разговаривать, потому что оно часто не знает, что есть другие пути решения проблемы, и действует как в докомпьютерную эру.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 12:55, 07-04-2021 | #4


Новый участник


Сообщения: 47
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Значит, все компы выключены. Дополнил скрипт выше, чтобы пустого файла не создавалось. »
Файл не создаётся.
Но некоторые компьютеры пингуются (проверено вручную).

Последний раз редактировалось JimmLight, 07-04-2021 в 13:22.


Отправлено: 13:01, 07-04-2021 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Вставьте код в Powershell ISE и проверьте работоспособность.

Путь к User_Comp.csv правильный?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 14:17, 07-04-2021 | #6


Новый участник


Сообщения: 47
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Вставьте код в Powershell ISE и проверьте работоспособность. »
Так и делаю.

Отправлено: 14:17, 07-04-2021 | #7


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


У меня почему-то работает.
Код: Выделить весь код
Import-Csv "D:\temp\User_Comp.csv" |? pager
Что-то отображает?

Команда
Код: Выделить весь код
Test-Connection [заведомо пингующийся комп] -Count 1 -Quiet
Что выдаёт?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 14:19, 07-04-2021 | #8


Новый участник


Сообщения: 47
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Что-то отображает? »
Да, содержимое "User_Comp.csv".

Цитата JimmLight:
Что выдаёт? »
False

Отправлено: 14:21, 07-04-2021 | #9


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Интересно. Пингуется, но test-connection выдаёт false?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 14:39, 07-04-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - ping компьютеров из *.csv

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход