Невозможно найти позиционный параметр, который принимает аргумент '\'
Я пытаюсь получить метаданные из каталога, и я получаю сообщение об ошибке, что не может быть найден позиционный параметр, принимающий аргумент '\'. Не знаете, как это исправить?
$FileMetadata = Get-FileMetaData -folder (Get-childitem $Folder1 + "\" + $System.Name + "\Test" -Recurse -Directory).FullName
Ответы
Ответ 1
Вам нужно выполнить конкатенацию в подвыражении:
$FileMetadata = Get-FileMetaData -folder (Get-childitem ($Folder1 + "\" + $System.Name + "\Test") -Recurse -Directory).FullName
или вставьте переменные в строку следующим образом:
$FileMetadata = Get-FileMetaData -folder (Get-childitem "$Folder1\$($System.Name)\Test" -Recurse -Directory).FullName
Ответ 2
Самый надежный способ в Powershell для создания пути, когда части пути хранятся в переменных, - это использовать командлет cmdlet Join-Path.
Это также устраняет необходимость использования "\".
Итак, в вашем случае это будет:
$FoldersPath = Join-Path -Path $Folder1 -ChildPath "$System.Name\Test"
$FileMetadata = Get-FileMetaData -folder (Get-ChildItem $FoldersPath -Recurse -Directory).FullName
Ответ 3
Если вы пришли из мира VBScript. В Powershell каждое пробел интерпретируется как отдельный параметр, передаваемый командлету. Вам нужно либо поместить формулу в круглые скобки, чтобы формула была оценена до ее передачи в качестве параметра пути, либо заключена в кавычки:
Powershell считает, что это не два параметра:
$ Folder1 + "\" + $ System.Name
Будем работать с скобками:
($Folder1 + "\" + $System.Name)
Также будет работать вместе, когда заключено в кавычки:
"$Folder1\$System.Name"
Ссылка