gpt4 book ai didi

powershell - 为什么此 PowerShell 脚本会产生错误?

转载 作者:行者123 更新时间:2023-12-04 05:36:45 24 4
gpt4 key购买 nike

我有一个名为 Eric Clapton - Nothing But The Blues - Full Concert (1994) [HQ].URL 的文件在目录中 C:\Hans\Hans4\ .

创建它的代码如下(尽管无论文件内容如何都会发生错误)

$fileContents = @"
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2
[InternetShortcut]
URL=http://example.com/
IDList=
"@

New-Item -Path "C:\Hans\Hans4" `
-Name "Eric Clapton - Nothing But The Blues - Full Concert (1994) [HQ].URL" `
-ItemType "file" `
-Value $fileContents `
-Force

当我运行以下命令时,出现错误
Get-ChildItem 'C:\Hans' -Recurse | Resolve-ShortcutFile > Output.txt

代码引用了下面的函数
function Resolve-ShortcutFile {         
param(
[Parameter(
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
Position = 0)]
[Alias("FullName")]
[string]$fileName
)
process {
if ($fileName -like "*.url") {
Get-Content $fileName | Where-Object {
$_ -like "url=*"
} |
Select-Object @{
Name='ShortcutFile'
Expression = {Get-Item $fileName}
}, @{
Name='Url'
Expression = {$_.Substring($_.IndexOf("=") + 1 )}
}
}
}
}

这是错误信息

Get-Content : 指定路径 C:\Hans\Hans4\Eric Clapton 上的对象 - 仅此而已
The Blues - Full Concert (1994) [HQ].URL 不存在,或已被过滤
-Include 或 -Exclude 参数。
在行:33 字符:28
+ 获取内容 $fileName |哪里-对象{
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (System.String[]:String[]) [Get-Content], Exception
+ FullQualifiedErrorId : ItemNotFound,Microsoft.PowerShell.Commands.GetContentCommand

为什么我会收到这个错误?

最佳答案

问题是通过管道输入函数并传递给 Get-Content 的文件名。

C:\Hans\Hans4\Eric Clapton - Nothing But The Blues - Full Concert (1994) [HQ].URL



您遇到的问题 here .

它包含被解释为 range operator with the set H and Q 的方括号

因此该模式意味着它尝试读取具有以下名称之一的文件的内容......
  • 埃里克·克莱普顿(Eric Clapton) - 只有蓝调 - 完整音乐会(1994) H .URL
  • 埃里克·克莱普顿(Eric Clapton) - 只有蓝调 - 完整音乐会(1994) .URL

  • ...但不会匹配文字 [HQ]
  • 埃里克·克莱普顿(Eric Clapton) - 只有蓝调 - 完整音乐会(1994) [总部] .URL

  • 您可以使用 -literalPath 参数以避免此问题,并按字面处理文件名。
    function Resolve-ShortcutFile {         
    param(
    [Parameter(
    ValueFromPipeline=$true,
    ValueFromPipelineByPropertyName=$true,
    Position = 0)]
    [Alias("FullName")]
    [string]$fileName
    )
    process {
    if ($fileName -like "*.url") {
    Get-Content -literalPath $fileName | Where-Object {
    $_ -like "url=*"
    } |
    Select-Object @{
    Name='ShortcutFile'
    Expression = {Get-Item -literalPath $fileName}
    }, @{
    Name='Url'
    Expression = {$_.Substring($_.IndexOf("=") + 1 )}
    }
    }
    }
    }

    关于powershell - 为什么此 PowerShell 脚本会产生错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41415173/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com