Преобразование даты и времени из wmiobject в datetime
Попытка получить разницу в днях между датами: сегодняшняя дата. и дата / время от объекта wmiobject (это было взято из сообщения из сценария PendingReboot из блога Hey, Scripting!):
$Lastreboottime = Get-WmiObject win32_operatingsystem -ComputerName $Computer |
select csname, @{LABEL='LastBootUpTime';EXPRESSION=$_.ConverttoDateTime($_.lastbootuptime)}}
$Today = Get-Date -Format d
$DiffDays = $Today - $Lastreboottime
Результат $Today
09/06/2016
и $Lastreboottime
05/05/2016 11:13:21
Поэтому я хочу избавиться от времени, но не знаю, как это сделать.
Во-вторых, я получаю эту ошибку, если мне нужно запустить скрипт, хотя я думаю, что это может исчезнуть, если я смогу извлечь дату только в $ Lastreboot
Cannot convert the "@{csname=JDWTAWEB1; LastBootUpTime=05/05/2016 11:13:21}" value of type "Selected.System.Management.ManagementObject" to type "System.DateTime".
Есть идеи?
3 ответа
Решение
- Удалить
-Format d
и сравнитьDate
-свойстваDateTime
-объекты, чтобы получить только разницу дней. - Ваш
$Lastreboottime
переменная ссылается на объект с обоим именемcsname
иLastBootUpTime
так что вам нужно получить доступ кLastBootUpTime
Пытаться:
$Lastreboottime = Get-WmiObject win32_operatingsystem |
select csname, @{LABEL='LastBootUpTime';EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}}
$Today = Get-Date
$DiffDays = $Today.Date - $Lastreboottime.LastBootUpTime.Date
$DiffDays.TotalDays
13
Я думаю, что преобразованию WMIObject может потребоваться получить объект Datetime посредством правильно отформатированной строки. Я сделал это (минус -Computername $Computer
часть) и вроде бы сработало.
[string]$BootTimeString=(Get-WmiObject win32_operatingsystem -ComputerName $Computer).lastbootuptime -replace '\..*',''
$BootTimeDT=[datetime]::ParseExact($BootTimeString,'yyyyMMddHHmmss',$null)
$DiffDays = (NEW-TIMESPAN –Start $BootTimeDT –End (Get-Date)).Days
- Удалить
-Format d
отGet-Date
, Тебе нужноDateTime
объект, а не строка. $Lastreboottime
это объект с 2 свойствами:csname
а такжеlastbootuptime
, Вы должны использоватьlastbootuptime
имущество.
Пример:
$Today = Get-Date
$DiffDays = $Today - $Lastreboottime.lastbootuptime