Powershell ForEach对象脚本块中的命令意外地提示输入参数
我有以下脚本Powershell ForEach对象脚本块中的命令意外地提示输入参数,powershell,syntax,pipeline,Powershell,Syntax,Pipeline,我有以下脚本 $sourceRoot = "C:\Users\skywalker\Desktop\deathStar\server" $destinationRoot = "C:\Users\skywalker\Desktop\deathStar/server-sandbox" $dir = get-childitem $sourceRoot -Exclude .env, web.config Write-Output "Copying
$sourceRoot = "C:\Users\skywalker\Desktop\deathStar\server"
$destinationRoot = "C:\Users\skywalker\Desktop\deathStar/server-sandbox"
$dir = get-childitem $sourceRoot -Exclude .env, web.config
Write-Output "Copying Folders"
$i=1
$dir| %{
[int]$percent = $i / $dir.count * 100
Write-Progress -Activity "Copying ... ($percent %)" -status $_ -PercentComplete $percent -verbose
copy -Destination $destinationRoot -Recurse -Force
$i++
我试图引用它,但最终在powershell控制台中得到以下提示
提供以下参数的值:
路径[0]:
您正在使用
%
()逐个对象处理来自管道($dir
)对象的输入
在对输入进行操作的脚本块({…}
)内,必须使用引用手头的管道输入对象-在脚本块内使用的命令本身不会自动接收该对象作为其输入
因此,您的copy
(copy Item
)命令:
缺少源参数,必须更改为以下内容:
$_ | copy -Destination $destinationRoot -Recurse -Force
没有源参数(传递给-Path
或-LiteralPath
)-这是必需的-复制项
提示输入它,这是您所经历的(默认参数是-Path
)
在上面的固定命令中,通过管道传递
$
会隐式绑定到复制项的-LiteralPath
参数。错误文本的其余部分是什么?它通常包括行号和至少部分代码行…这不是一个错误,它实际上要求我输入路径[0]的值,因为如果我键入某个内容,它将转到路径[1]。。。所以我不确定发生了什么。我应该补充一点,我是一个新手!我误解了。[脸红]所以。。。您知道是什么cmdlet生成该提示吗?我怀疑它是copy-Destination
行,因为它位于ForEach对象
块中。。。没有任何消息来源。别担心,你肯定是对的。库尔!很高兴你让它工作了。。。[咧嘴笑]
$_ | copy -Destination $destinationRoot -Recurse -Force