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