ディレクトリからメタデータを取得しようとしていますが、引数「\」を受け入れる位置パラメータが見つかりませんというエラーが表示されています。これを修正する方法がわからない?
$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
または、次のような文字列に変数を埋め込みます。
$FileMetadata = Get-FileMetaData -folder (Get-childitem "$Folder1\$($System.Name)\Test" -Recurse -Directory).FullName
パスの一部が変数に格納されている場合に、Powershellでパスを構築する最も堅牢な方法は、コマンドレットJoin-Pathを使用することです。
これにより、「\」を使用する必要もなくなります。
あなたの場合、それは次のようになります:
$FoldersPath = Join-Path -Path $Folder1 -ChildPath "$System.Name\Test"
$FileMetadata = Get-FileMetaData -folder (Get-ChildItem $FoldersPath -Recurse -Directory).FullName
VBScriptの世界から来た場合。 Powershellでは、すべてのスペースは完全に独立したパラメーターとしてコマンドレットに渡されると解釈されます。数式をかっこで囲んで、パスパラメータとして渡す前に数式を評価するか、引用符で囲むこともできます:
うまくいかない、Powershellはこれが2つのパラメーターだと考えている:
$ Folder1 + "\" + $ System.Name
ブラケットで動作します:
($Folder1 + "\" + $System.Name)
引用符で囲まれている場合も一緒に機能します。
"$Folder1\$System.Name"