2017-09-25 2 views
2

Ich möchte ein Array von Daten in Powershell deklarieren, es ist kein kontinuierlicher Bereich, also kann ich nichts schlau mit Loops machen.Wie deklariere ich ein Array mit get-date?

Ich habe versucht, die Array-Notation mit einem Aufruf verwenden, zu erhalten aktuell wie unten, aber dies gibt einen Fehler

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

Wie kann ich eine Reihe von Terminen in Powershell zu erklären?

Antwort

3

Wickeln Sie einfach jede Get-Date in Klammern:

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

* Klammer *. Klammern sind '[]' – TheIncorrigible1

+1

@ TheIncorrigible1 Im Vereinigten Königreich '()' bekannt als Klammern und '[]' sind eckige Klammern. Noch ein Unterschied zwischen englischer und amerikanischer Grammatik :) –

+0

@JamesC Der Grund, warum sie benötigt werden, ist, das ', get-date..'-Komma davon abzuhalten, das Ganze in einen Array-Parameter für das erste Get-Date-Cmdlet umzuwandeln. Sie überschreiben die Standardpriorität und -zuordnung des Kommas sowie die [Windows PowerShell-Sprachspezifikation 3.0] (https://www.microsoft.com/de-de/download/details.aspx?id=36389) Abschnitt 7.1 .1, das macht sie zu "Klammern gruppieren". ;-) PowerShell ist immerhin eine amerikanische Sprache – TessellatingHeckler

3

Ich würde argumentieren, dass Sie immer noch eine Schleife verwenden, sollten diese sich einige Code-Duplizierung zu speichern:

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

Beispieltext für Monate mit im Interesse der Vermeidung von regionalen Problemen, aber Sie könnten Ihre Daten so formatieren, wie Sie möchten, das für Sie arbeitet.

2

Sie können einen String in einen Datetime wie diese Stimmen:

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

und machen Sie Ihre Array

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

und wenn Sie das tun, machen es zu einem Array von String-Daten und gegossen auf ein Array von Datetime

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

ich habe sie in der ISO-Norm yyyy-mM-dd hh: mm, um zu vermeiden US/UK-Parsing Verwechslung.

Verwandte Themen