使用New-Item / md / mkdir时出错

时间:2018-01-25 08:08:46

标签: powershell

我目前有一个脚本:

  1. 浏览一些文件
  2. 检查文件名称
  3. 如果文件没有目录,则会创建一个
  4. 将文件移至目录
  5. 移动逻辑工作正常。但是,如果目录不存在,我会收到此错误(路径有效,但不存在)

    C:\Users\User\Documents\Directory\FileName : The term 'C:\Users\User\Documents\
    Directory\FileName' is not recognized as the name of a cmdlet, function, script
    file, or operable program. Check the spelling of the name, or if a path was
    included, verify that the path is correct and try again.
    At line:1 char:1
    C:\Users\User\Documents\Directory\FileName
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (C:\Users\User\Documents\Directory\FileName) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
    

    奇怪的是,它确实创建了文件夹 - 但它崩溃了我的脚本。

    这是脚本的问题部分

    function CanCreate($dir) {
        return !(Test-Path $dir)
    }
    
    if (CanCreate($fullDestinationPath)) {
        New-Item $fullDestinationPath -ItemType Directory
    }
    

    md / mkdirNew-Item的行为方式不同,因为它们会使脚本崩溃,但是New-Item会打印错误并继续(脚本似乎完成了它的工作)。

    修改

    问题似乎源于我从另一个脚本调用脚本的事实。

    $ScriptPath = "C:\Powershell Scripts\script.ps1"
    & $ScriptPath | Invoke-Expression
    

1 个答案:

答案 0 :(得分:-1)

问题在于我使用| Invoke-Expression来触发脚本。

只需拨打& $ScriptPath,省略| Invoke-Expression即可触发该脚本。

谢谢大家。