web-dev-qa-db-ja.com

引数 '\'を受け入れる定位置パラメーターが見つかりません

ディレクトリからメタデータを取得しようとしていますが、引数「\」を受け入れる位置パラメータが見つかりませんというエラーが表示されています。これを修正する方法がわからない?

$FileMetadata = Get-FileMetaData -folder (Get-childitem $Folder1 + "\" + $System.Name + "\Test" -Recurse -Directory).FullName
19
user1342164

部分式で連結を行う必要があります。

$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
20
Ansgar Wiechers

パスの一部が変数に格納されている場合に、Powershellでパスを構築する最も堅牢な方法は、コマンドレットJoin-Pathを使用することです。

これにより、「\」を使用する必要もなくなります。

あなたの場合、それは次のようになります:

$FoldersPath = Join-Path -Path $Folder1 -ChildPath "$System.Name\Test"

$FileMetadata = Get-FileMetaData -folder (Get-ChildItem $FoldersPath -Recurse -Directory).FullName
3
Mathieu Buisson

VBScriptの世界から来た場合。 Powershellでは、すべてのスペースは完全に独立したパラメーターとしてコマンドレットに渡されると解釈されます。数式をかっこで囲んで、パスパラメータとして渡す前に数式を評価するか、引用符で囲むこともできます:

うまくいかない、Powershellはこれが2つのパラメーターだと考えている:

$ Folder1 + "\" + $ System.Name

ブラケットで動作します:

($Folder1 + "\" + $System.Name)

引用符で囲まれている場合も一緒に機能します。

"$Folder1\$System.Name"

参照

1
Jeremy Thompson