J'essaie d'obtenir les métadonnées d'un répertoire et j'obtiens une erreur indiquant qu'il est impossible de trouver un paramètre de position acceptant l'argument '\'. Vous ne savez pas comment corriger cela?
$FileMetadata = Get-FileMetaData -folder (Get-childitem $Folder1 + "\" + $System.Name + "\Test" -Recurse -Directory).FullName
Vous devez faire la concaténation dans une sous-expression:
$FileMetadata = Get-FileMetaData -folder (Get-childitem ($Folder1 + "\" + $System.Name + "\Test") -Recurse -Directory).FullName
ou incorporer les variables dans une chaîne comme celle-ci:
$FileMetadata = Get-FileMetaData -folder (Get-childitem "$Folder1\$($System.Name)\Test" -Recurse -Directory).FullName
Le moyen le plus efficace dans Powershell de créer un chemin lorsque des parties du chemin sont stockées dans des variables consiste à utiliser la cmdlet Join-Path.
Cela élimine également la nécessité d’utiliser "\".
Donc dans votre cas, ce serait:
$FoldersPath = Join-Path -Path $Folder1 -ChildPath "$System.Name\Test"
$FileMetadata = Get-FileMetaData -folder (Get-ChildItem $FoldersPath -Recurse -Directory).FullName
Si vous venez du monde de VBScript. Avec Powershell, chaque espace est interprété comme un paramètre complètement séparé transmis à la cmdlet. Vous devez soit placer la formule entre parenthèses pour que la formule soit évaluée avant de la passer en tant que paramètre de chemin, ou le mettre entre guillemets fonctionne également:
Cela ne fonctionnera pas, Powershell pense qu'il s'agit de deux paramètres:
$ Dossier1 + "\" + $ System.Name
Travaillera avec des crochets:
($Folder1 + "\" + $System.Name)
Travaillera également ensemble lorsqu'il est placé entre guillemets:
"$Folder1\$System.Name"