找不到接受参数'\'的位置参数

时间:2014-08-07 12:05:22

标签: powershell metadata

我正在尝试从目录中获取元数据,并且我收到一个错误,即无法找到接受参数' \'的位置参数。不知道如何纠正这个问题?

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

4 个答案:

答案 0 :(得分:19)

您需要在子表达式中进行连接:

$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

答案 1 :(得分:3)

在部分路径存储在变量中时,Powershell中构建路径的最强大方法是使用cmdlet Join-Path。

这也消除了使用" \"。

的需要

所以在你的情况下,它将是:

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

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

答案 2 :(得分:1)

如果您来自VBScript世界。使用Powershell,每个空间都被解释为传递给cmdlet的完全独立的参数。您需要将该公式放在括号中,以便在将该公式作为路径参数传递之前对其进行评估,或者也可以使用引号将其括起来:

无法工作,Powershell认为这是两个参数:

  

$ Folder1 +“ \” + $ System.Name

将使用方括号:

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

用引号括起来也可以一起工作:

"$Folder1\$System.Name"

Ref.

答案 3 :(得分:0)

我试图运行 sc create <name> binPath=... 命令并不断遇到位置字符问题。我通过在命令提示符而不是PowerShell中运行命令解决了这个问题。啊。 ?