gpt4 book ai didi

powershell - Powershell.exe 和 Powershell ISE 之间的代码工作方式略有不同 - 排序对象行为

转载 作者:行者123 更新时间:2023-12-01 12:10:12 25 4
gpt4 key购买 nike

我有一些代码可以从 http 网页获取超链接 - 找到所有符合条件的项目,然后通过对它们进行排序来找到最新的,并使用它的 InnerText 作为下载源。所有超链接都在其名称末尾分配了一个 7 位数字,新文件的数字更大。

代码:

$Web = ((Invoke-WebRequest "http://serveraddress/Export/").Links | 
Where-Object {$_.href -like “xx_yyyyyy_auto_standard*”} |
Sort Name –Desc | Select –Last 1).innertext
Start-BitsTransfer -Source http://serveraddress/Export/$Web -Destination C:\autoreports\

现在,当我在上面的 Powershell.exe 中运行时(例如,通过右键单击和“使用 Powershell 运行”启动 .ps1 文件时)我下载了最旧的文件。当我在 Powershell ISE 上运行时,我得到最新的文件。当我在 Powershell.exe 中将 -Last 更改为 -First 时,代码按预期工作。

我可以轻松更改这一点,但是由于我对 Powershell 非常陌生-为什么 Powershell ISE 和“标准”之间存在如此大的差异?提前致谢!虽然这可能是新手问题,但我没有找到 - 或理解 - 差异的原因。

最佳答案

补充Jordan's helpful answer ,这解决了您的具体问题:

如前所述, Sort-Object悄悄地接受不存在的属性进行排序 .

不幸的是,从 Windows PowerShell v5.1 开始,尝试按不存在的属性排序会导致看似随机的输出顺序 :

WinPS> 1, 2, 3, 4 | Sort-Object -Property Foo
3
4
1
2

幸运的是,这个问题已在 PowerShell Core 中得到修复,在这种情况下,输入顺序被保留。

关于powershell - Powershell.exe 和 Powershell ISE 之间的代码工作方式略有不同 - 排序对象行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52319068/

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