|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Узнать сумму аптаймов за последнюю неделю |
|
|
PowerShell - [решено] Узнать сумму аптаймов за последнюю неделю
|
Старожил Сообщения: 211 |
Профиль | Отправить PM | Цитировать
Доброго времени суток! Ищу варианты удаленно узнать сумму аптаймов за последнюю неделю. ПК выключается каждый день поэтому просто аптайм не подходит, надо узнать сколько часов отработал удаленный пк за неделю. Отлично было бы сделать это чем-то встроенным типа powershell или легковесной утилитой, мб в реестре где хранится данная инфа. Есть какие-либо идеи? ПК много и поэтому ручные методы не подходят.
|
|
Отправлено: 16:22, 28-09-2021 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 21:58, 07-10-2021 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата alpap:
привожу пример: $dates = @(0..7) # диапозон дат, тут могу вставить любое количество дат $hashtable = [ordered]@{computername = $env:COMPUTERNAME} foreach ($date in $dates){ $0 # имя столбца, в каждой итерации разное, то есть их может быть от 1 до бесконечности $4 # значение столбца $0 в этой итерации $hashtable.Add($0,$4) # добавляю в таблицу столбец со значением } $hashtable # получаю правильную таблицу, с нужным порядком Но когда я выполняю код на удаленном пк через invoke и получаю таблицу, то порядок столбцов меняется на такой как будь-то я не проставил ordered перед созданием таблицы, пример: $s = New-PSSession $comp # создаю сессию, в которой буду выполнять код Invoke-Command -Session $s { # далее сам выполняемый код $dates = @(0..7) # диапозон дат, тут могу вставить любое количество дат $hashtable = [ordered]@{computername = $env:COMPUTERNAME} foreach ($date in $dates){ $0 # имя столбца, в каждой итерации разное, то есть их может быть и от 1 до бесконечности $4 # значение столбца $0 в этой итерации $hashtable.Add($0,$4) # добавляю в таблицу столбец со значением }} $table = Invoke-Command -Session $s {$hashtable} # запрашиваю таблицу из сессии от удаленного пк $table # таблица с неправильным порядком столбцов. То есть таблица ломается именно тут: |
|
Отправлено: 18:27, 08-10-2021 | #22 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать ну тогда просто отсортируйте как вам надо:
$hashTable = @{ Name1 = 'ValueA' Name2 = 'ValueB' Name3 = 'ValueC' } $hashTable '---' $hashTable.GetEnumerator()|% {'{0} {1}' -f $_.Key, $_.Value}|sort '---' $m1 = $hashTable.Keys|foreach {$_}|sort $m2 = $hashTable.Values|foreach {$_}|sort -desc for ($i=0; $i -lt $m1.count; $i++) { $m1[$i]+' = '+$m2[$i] } |
Отправлено: 23:44, 08-10-2021 | #23 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Остановился на своем варианте: передавать через invoke сессию не хеш таблицу, а pscustomobject, не сбивается сортировка.
Итоговый скрипт
$outfile = "D:\PowerShell\uptime\test.csv" $comp = "r48-ser" $s = New-PSSession $comp Invoke-Command -Session $s { $dates = @(0..7) $hashtable = [ordered]@{computername = $env:COMPUTERNAME} foreach ($date in $dates){ $0 = (Get-Date).AddDays(-$date).ToShortDateString() $CurrentTime = [System.DateTime]::Parse(((Get-Date).AddDays(-$date)).ToString("yyyy.MM.dd")) $Time = [System.Timespan]::Parse("00:00:01") $adddate = $CurrentTime.Add($Time) $CurrentTime2 = [System.DateTime]::Parse(((Get-Date).AddDays(-$date)).ToString("yyyy.MM.dd")) $Time2 = [System.Timespan]::Parse("23:59:59") $adddate2 = $CurrentTime2.Add($Time2) $add = Get-Eventlog -logname System | Where-Object {$_.TimeGenerated.ToShortDateString() -eq $0} $add1 = @([pscustomobject]@{Index='00000';EntryType='00000';InstanceId='00000';Message='00000';Category='00000';CategoryNumber='00000';ReplacementStrings='00000';Source='00000';TimeGenerated=$adddate;TimeWritten='00000';UserName='00000';}) $add2 = @([pscustomobject]@{Index='00000';EntryType='00000';InstanceId='00000';Message='00000';Category='00000';CategoryNumber='00000';ReplacementStrings='00000';Source='00000';TimeGenerated=$adddate2;TimeWritten='00000';UserName='00000';}) $1 = $add + $add1 + $add2 | Sort-Object {Get-Date $_.TimeGenerated} -Descending Clear-Variable -Name allsec, summ -Force -ErrorAction SilentlyContinue $allsec = @(for ($index = 0; $index -lt $1.Count; $index++) {if ($1.TimeGenerated[$index + 1] -ne $null -and $1.TimeGenerated[$index] -ne $1.TimeGenerated[$index + 1] ){ $2 = $1.TimeGenerated[$index] - $1.TimeGenerated[$index + 1] if ($2.TotalSeconds -gt 5400){$2.TotalSeconds}}}) $allsec| foreach {$summ += $_} $3 = ((86400 - $summ) - 2) $ts = [timespan]::fromseconds($3) $4 = "{0:HH:mm:ss}" -f ([datetime]$ts.Ticks) Write-Host $0 uptime $4 $hashtable.Add($0,$4) $ps_object = [pscustomobject]$hashtable }} $table = Invoke-Command -Session $s {$ps_object} $table |export-csv $outfile -notype -enc utf8 -d ';' -append |
Отправлено: 08:58, 17-11-2021 | #24 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Griboed0ff, коллега, фолдинг — не наш метод?
|
Отправлено: 17:41, 17-11-2021 | #25 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Iska, не пользовался никогда. Как видите увлекаюсь индусским легаси кодом :D, но думаю это вылечится при постижении python и json!
|
Отправлено: 19:55, 23-11-2021 | #26 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 09:38, 24-11-2021 | #27 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
HDD - [решено] Умирает 2-ой диск за неделю | walcot | Накопители (SSD, HDD, USB Flash) | 7 | 16-03-2021 09:47 | |
HDD - За одну неделю два диска в RAW | surgutfred | Накопители (SSD, HDD, USB Flash) | 2 | 17-12-2018 10:51 | |
Разное - [решено] Как узнать последнюю версию видеодрайвера? | Алекс-01 | Microsoft Windows 10 | 2 | 27-06-2018 18:03 | |
Решение контрольных работ за определенную сумму? | VbInt | Флейм | 2 | 21-01-2011 00:16 | |
Конфигурация за неуказанную сумму для неизвестного применения | kuson | Выбор отдельных компонентов компьютера и конфигурации в целом | 61 | 22-06-2009 00:41 |
|