【问题标题】:Powershell new-item directory with a parameter as part of folder name带有参数作为文件夹名称一部分的 Powershell 新项目目录
【发布时间】:2012-01-16 02:23:58
【问题描述】:

我想根据名称中使用的参数创建一个文件夹,例如:

    $Website = "test"
    new-item \\172.1.1.1\C`$\Folder\$Website_Archive -type directory

_Archive 必须是文件夹名称的一部分,但我不知道如何传递包含 _Archive 的 $Website。

这是我得到的错误:

New-Item : 具有指定名称 \172.1.1.1\C$\Folder\ 的项目已经存在。 在行:2 字符:9 + 新项目

如果我从该行中删除“_Archive”,它将创建名为“test”的文件夹。我假设它正在寻找 $Website_Archive 的参数但没有找到它,所以它试图重新创建根文件夹。如何获取传递给文件夹名称的参数?

谢谢!

BB

【问题讨论】:

    标签: powershell


    【解决方案1】:

    除了@JohnL 提到的,我更喜欢字符串格式,尤其是涉及到很多变量的时候:

    "\\172.1.1.1\C`$\Folder\{0}_Archive" -f $Website
    

    【讨论】:

    • 这种方法除了清晰还有其他好处吗?
    • @JNK 在这种情况下,清晰。但它是用来构造你可能知道的字符串的。
    • 我确实意识到了这一点,但不知道是否有理由更喜欢它而不是双引号的内联连接。我发现这更容易正常阅读。
    • @JNK - 哦,你的意思是 "abcd" + $blah + "xyz""abcd{0}xyz" -f $blah - 后者会消耗更少的内存(至少在你进行许多连接时。因为字符串在 .Net 中是不可变的。
    • @manojlds 我也更喜欢字符串格式。对于这种情况,我更喜欢使用单引号,这样 $ 符号就不必转义了。 '\\172.1.1.1\C$\Folder\{0}_Archive' -f $Website
    【解决方案2】:

    根据 JNK 的回答,要么转义,要么用 $(...) 附上 $Website

    new-item "\\17.1.1.1\C`$\Folder\$($Website)_Archive" -type directory
    

    【讨论】:

      【解决方案3】:

      只需用反引号转义下划线

      new-item "\\17.1.1.1\C`$\Folder\$Website`_Archive" -type directory
      

      【讨论】:

        猜你喜欢
        • 2018-08-18
        • 1970-01-01
        • 2013-07-09
        • 2018-07-05
        • 2012-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-12
        相关资源
        最近更新 更多