2017-08-11 4 views
0

J'ai donc un processus qui ressemble à des fichiers spécifiques comme ci-dessous:simple script Powershell utilisant Get-ChildItem échoue

@(Get-ChildItem -Path \\$Server\c$\temp\* where-object { $_.CreationTime.Date -match "2016" }) 

Cela a fonctionné très bien jusqu'à ce que je voulais essayer de partager mon haut de sortie. J'ai appris à propos de "$ OFS =" "" et je voulais l'utiliser (variable powershell globale?) Et l'ai changé en $ OFS = "` r`n "..

Maintenant, quand j'exécute la commande ci-dessus, je reçois une erreur:

Get-ChildItem : A positional parameter cannot be found that accepts argument ' $_.CreationTime.Date -match "2016" '.

J'ai essayé de le réinitialiser avec $ OFS = "" et cela ne semble pas aider. Je ne peux pas comprendre ce que j'ai fait pour ruiner mon script simple. Désolé pour la question très noob mais j'ai cherché ceci pendant des âges et ne peux pas trouver une réponse. Tout ce que je trouve en ligne semble indiquer que ma commande powershell devrait fonctionner

Répondre

3

Votre commande powershell ne peut pas fonctionner. Get-ChildItem et Where-Object sont différentes cmdlets, essayez de barre verticale (|). La sortie de Get-ChildItem à Where-Object

@(Get-ChildItem -Path \\$Server\c$\temp\* | where-object { $_.CreationTime.Date -match "2016" }) 
+4

'$ _ CreationTime.Year -eq 2016' évite la conversion en chaîne et l'utilisation de regex, et uhh .. la possibilité de fausses correspondances positives si le script est encore en cours après l'année 20160;) – TessellatingHeckler

+2

@TessellatingHeckler Vous me battez pour le même commentaire. (sauf l'année 20160 :-) – LotPings