2012-09-11 5 views
0

Утреннее Все,Powershell переменная Допрос даты и времени Разница

У меня есть переменная следующим образом: $machines = $user2,$name,$serial,$purchased выборочные данные хранятся в $ машинах:

User1, 
Laptop1, 
xyz1234, 
01/01/2010 

Я хотел создать новую переменную называемый $ tobereplaced, содержащий все записи в $ машинах с датой больше 4 лет от сегодняшней даты.

код нечеткой логики для этого im, ожидающего быть похожим на $tobereplaced = $machines.$purchased | where {$_$purchased = -getdate > 4 years} и т. Д., Но я не могу это понять.

Помощь будет с благодарностью.

Благодаря

ответ

2
$fourYearsAgo = (Get-Date).AddYears(-4) 
$tobereplaced = $machines | Where-Object { (Get-Date $_[-1]) -le $fourYearsAgo } 
+0

Я пытаюсь реализовать этот код, но $ machines содержит всего 4 переменных, поэтому я надеялся разобрать $ купленную переменную $ machines в новую переменную, если дата больше 4 лет назад. Мой формат даты - 18/03/2009, но четыре года назад - 11 сентября 2008 года 13:15:50. Я собираюсь иметь 500 или около того строк в $ машинах и хочу сохранить 100 или около того записей, которые имеют $ купленную переменную в $ машинах более 4 лет назад в другой переменной. – meeeeeeeeee

+0

Все ли значения строки? Я предлагаю вам создать новый объект для каждой строки с соответствующими свойствами (casted), чтобы вы могли легче фильтровать объекты. –

+0

$ купленный заполнен следующим кодом, поэтому он должен быть datetime, остальные строки - $ dt = [datetime] :: ParseExact ($ prog2, "yyyy/MM/dd", $ null) $ purchase = Get-Date $ dt -Format 'dd/MM/yyyy' – meeeeeeeeee

1

Преобразовать дату как DateTime и сравнить ее с датой четыре года назад. Как это так,

# Assuming $m[3] contains the timestamp, parse it as a DateTime and compare 
# against a date four years ago. 
if([DateTime]::Parse($m[3]) -le [DateTime]::Now.AddYear(-4)) { 
    $tobereplaced += $m 
} 

В зависимости от вашего местоположения, вы, возможно, придется сказать [DateTime]::Parse() как разобрать дату. 01/12/2010 1 декабря 2010 года или 12 января 2010 года?

+0

Это 1 декабря – meeeeeeeeee

+0

Является ли $ m [3] третьей переменной в пределах $ m? т.е. если дата является третьей записью – meeeeeeeeee

+0

. Если так, я получаю, что String не была признана действительным Datetime (им, используя $ machines [4], т.е. купленный $, который содержит 24/08/2010) – meeeeeeeeee

Смежные вопросы