我正在尝试从目录中获取元数据,并且我收到一个错误,即无法找到接受参数' \'的位置参数。不知道如何纠正这个问题?
$FileMetadata = Get-FileMetaData -folder (Get-childitem $Folder1 + "\" + $System.Name + "\Test" -Recurse -Directory).FullName
答案 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"
答案 3 :(得分:0)
我试图运行 sc create <name> binPath=...
命令并不断遇到位置字符问题。我通过在命令提示符而不是PowerShell中运行命令解决了这个问题。啊。 ?