【问题标题】:Powershell Path-could-not-be-found error inside of a script function脚本函数中的 Powershell Path-could-not-be-found 错误
【发布时间】:2012-03-20 16:26:33
【问题描述】:

我正在 Powershell 中编写一个简单的备份脚本,实际上是我的第一个 powershell 脚本,所以我可能会遗漏一些明显的东西。

在命令行中我运行这个:

PS C:\tmp> $source="C:\tmp\source" PS C:\tmp> $dest="C:\tmp\dest" PS C:\tmp> cp "$source\*.txt" "$dest\"

一切正常,行为符合预期:将所有 .txt 文件从源文件复制到目标文件。

当我在 script.ps1 文件中时,有

copyBackupFiles ("C:\tmp\source", "C:\tmp\dest") 函数 copyBackupFiles($Source, $Dest) { 复制项目 "$Source\name.*" -Destination "$Dest\" }

我收到一个错误 Copy-Item : 找不到路径 'C:\tmp\source C:\tmp\dest',因为它不存在。

关于这个问题的任何指针?已经在网上花了好几个小时没有运气......

【问题讨论】:

    标签: powershell


    【解决方案1】:

    换行

    copyBackupFiles ("C:\tmp\source", "C:\tmp\dest")
    

    copyBackupFiles "C:\tmp\source" "C:\tmp\dest"
    

    这是因为您将参数 $source 传递给包含 2 个项目的数组,但对 $dest 没有任何价值。

    不幸的是,对于了解 C#、Java 等语言的人来说,这是一个潜在的陷阱。参数不是由逗号分隔,而是由空格分隔,就像在例如F#。

    你可以看到 Trace-Command 发生了什么:

    function test($a, $b) { write-host $a / $b }
    Trace-Command -name parameterbinding { test (1, 2) } -PSHost
    Trace-Command -name parameterbinding { test 1 2 } -PSHost
    

    【讨论】:

      猜你喜欢
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多