Войти

Показать полную графическую версию : ping компьютеров из *.csv


Страниц : 1 [2]

DJ Mogarych
14-04-2021, 13:04
Всё начиналось с простого пинга, а теперь строим ракетный комплекс.

почему-то не выходит "canonicalName". »
А где вы задали переменную $canonicalname? Она, естественно, пустая.

Полагаю, что если вы пытаетесь решать довольно сложные задачи на Powershell, неплохо бы немножко его изучить, а не просто копипастить код с форума.

JimmLight
14-04-2021, 13:13
А где вы задали переменную $canonicalname? Она, естественно, пустая.
Исправил. Выделил цветом, в коде.
$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
Всё начиналось с простого пинга, а теперь строим ракетный комплекс.
Ну да...
... неплохо бы немножко его изучить, ...
Чем и занимаюсь.

DJ Mogarych
14-04-2021, 13:39
$Computer.CanonicalName »
$computer - это часть $computers, как можно понять из кода:
foreach ($computer in $Computers)
А $Computers - это
Import-Csv "C:\Scripts\Ping_Computers\User_Comp.csv"

У вас в csv есть поле CanonicalName?

JimmLight
14-04-2021, 14:09
У вас в csv есть поле CanonicalName? »
Да.
С этим я разобрался.
И с тем, чтобы заменить "/" на "";"" (издевательство конечно, но работает).
Теперь необходимо удалить последнее значение, которое содержит ФИО пользователя.

Вот что получилось:
$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 }




© OSzone.net 2001-2012