Powershell 函数 copy-item error-exception 有 2 个参数

Powershell functions copy-item error-exception with 2 parameters

这是我的问题;

$source = "\Somewhere\Overtherainbow\something.exe"
$destinationSource = "C:\temp"


Function MyCopyFunction([string]$from, [string]$to)
{
   $src= $source+$from
   $dest = $destinationSource+$to
    
   Copy-Item -Path $src -Destination $dest -Recurse
}

Function MyFunction([string]$p1, [string]$p2)
{
    MyCopy($p1, $p2)
}

    switch("1"){
    "1" {
     MyFunction("Dir1","Dir2") break;
}
}

简单吧? 为什么当使用 2 个参数调用“MyCopyFunction(p1,p2)”时,它会抱怨第二个参数不存在。但是,如果我将“MyCopyFunction($p1)”转换为只有 1 个参数而不是两个参数并手动提供 -Destination 值,则没有问题这里问题的根源是什么?

这里是例外.... 复制项目 -Path $from -Destination $to -Recurse CategoryInfo:ObjectNotFound:(:String)[Copy-Item],ItemNotFoundExcptionFullyQualifiedErrorId:PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand

主要问题就在这里,

MyCopyFunction(p1,p2)

当你这样调用函数时,PowerShell treats the input as a single array containing two elements and pass it positionally to the first variable(In this case it's $from)。取而代之的是,您应该将调用站点更改为 MyCopyFunction "Dir1" "Dir2" 以使其工作。