2017-09-25 46 views
2

我想在powershell中聲明一個日期數組,它不是一個連續的範圍,所以我不能做任何聰明的循環。如何使用get-date來聲明一個數組?

我已經使用了呼叫數組方式就可以得到最新的嘗試,如以下,但是這會返回一個錯誤

$logDateList = 
@(Get-Date -Year 2017 -Month 08 -Day 22 -Hour 13 
,Get-Date -Year 2017 -Month 08 -Day 20 -Hour 22) 

我怎樣才能申報使用PowerShell日期的數組?

回答

3

只是包裝在括號中的每個Get-Date

$logDateList = @((Get-Date -Year 2017 -Month 08 -Day 22 -Hour 13),(Get-Date -Year 2017 -Month 08 -Day 20 -Hour 22)) 
+1

*括號*。括號是'[]' – TheIncorrigible1

+1

@ TheIncorrigible1在英國'()'被稱爲括號,'[]'是方括號。英語和美國語法之間的另一個區別:) –

+0

@JamesC他們需要的原因是停止',get-date..'逗號將整個事件轉換爲數組參數到第一個Get-Date cmdlet。它們「覆蓋逗號的默認優先級和關聯性」以及[Windows PowerShell語言規範3.0](https://www.microsoft.com/en-us/download/details.aspx?id=36389)第7.1節.1,這使他們「分組括號」。 ;-) PowerShell畢竟是美國語言 – TessellatingHeckler

3

我認爲你還是應該使用一個循環這個給自己節省一些重複代碼:使用文本

$logDateList = '20 Aug 2017 22:00','22 Aug 2017 22:13' | ForEach-Object { Get-Date $_ } 

例數月爲了避免地區性問題,但是你可以用你喜歡的任何方式來設置你的日期。

2

您可以投一個字符串轉換爲日期時間是這樣的:

[datetime]'2017-08-22 13:00' 

,讓你的陣列

$logDateList = [datetime]'2017-08-22 13:00', [datetime]'2017-08-20 22:00' 

,如果你這樣做,使字符串日期的一個數組,投爲datetime

[datetime[]] $logDateList = @(
    '2017-08-22 13:00', 
    '2017-08-20 22:00' 
) 

陣列我把他們在ISO標準的YYYY-MM-DD HH:MM爲了避免美國/英國解析混亂。