问题标签 [foreach-object]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 电源外壳。管道命令和使用 Foreach-Object 之间的区别
抱歉,如果这个问题已经得到解答,我可以找到类似的问题,但不是我需要问的确切问题。
让我们举两个例子:
两者都在做同样的操作。每种方法使用的方法如何?它们是否相同,因为第一个示例只是Foreach-Object
为了代码可读性/美观而省略了构造?
powershell - PowerShell ForEach-Object 和流水线 - 上游
我有一个小的 powershell 脚本,可以将所有文件和文件夹分别压缩到一个文件夹中:
假设我的目录中有两个文件夹:
没有别的了。目前,此代码将创建“test1.zip”和“test2.zip”,其中包含各自的文件夹,但也再次包含它们自己(即 test1.zip)。对于两个文件夹,7z 被调用四次:每个文件夹一次创建一个 zip,然后每个新的 zip 文件一次通过包含 zip 本身来更新 zip。显然这不是我们想要的结果:
管道似乎获取了新文件的更新并将它们转发到 ForEach-Object 命令,这意味着“test1.zip”被迅速添加到“test1.zip”中。
我对为什么会发生这种情况感到困惑(甚至更令人不安:并非所有运行都是这种情况),因为我认为该语句是从左到右完成的,意思是dir
它的输出已完成并固定,然后是(可能并行)由 处理ForEach-Object
。
我哪里错了?
表明即使是新创建的 zip 文件也被流水线化到 ForEach-Object 中。
powershell - 有没有办法在 powershell foreach-object -parallel 中获取 TID(线程 id)?
只是想知道我是否可以像 $PID 或进程 ID 一样获得线程 ID 的 $TID,在 powershell 7 或 pwsh 中使用 foreach-object -parallel(https://github.com/PowerShell/PowerShell#-powershell) . 我可以运行它并在 pwsh.exe 属性的线程选项卡中查看sysinternals procexp ( https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer )中带有 TID 列的一堆线程.
powershell - Powershell 实现 Switch 语句
我想对我的一个脚本实施-parallel Switch
非并行版本:
并行功能:
我不想要的是:
我想要这样的东西:
现在我想创建某种 switch 语句而不复制整个代码(块 <# my code#>)。
这可能吗?
powershell - 如何直接通过管道传输到 Copy-Item 而不是在 ForEach-Object 内
由于 Get-ChildItem 的 -Exclude 参数在使用 -Recurse 标志时未过滤子文件夹,因此请参阅unable-to-exclude-directory-using-get-childitem-exclude-parameter-in-powershell
但 -Exclude 参数可用于过滤掉根级别的文件夹
我写了自己的递归函数:
当我将结果通过管道传输到 ForEach-Object 以将结果复制到不同的目的地时,一切正常,并且除了与排除参数匹配的项目之外的项目都被复制
当我将它直接传送到 Copy-Item 命令行开关时,我收到一个空值错误,因为在 $_.FullName 上调用了显然为空的 .Substring()
因为本机 commandlet Get-ChildItem 确实允许我将其结果通过管道传输到 Copy-Item,所以我喜欢我自己的自定义函数也能够做到这一点。但我无法弄清楚为什么它不起作用。
powershell - 用于组合 CSV 并将根目录添加为附加列的 PowerShell 脚本
我正在尝试编写我的第一个 PowerShell 脚本,我正在努力理解面向对象和管道方法。所以我有一个这样的目录结构(谷歌外卖巢目录):
我想将所有 CSV 聚合在一起,我编写了一个简单的脚本来执行此操作:
但是,当所有内容聚合在一起时,我会丢失 DeviceID 的上下文。所以我想添加一个包含这些初始根目录的附加列,类似于:
因此,year-month-sensors-a.csv 中的每一行都会有一个附加列,其中包含该根目录下任何 CSVnest_id
的值。DeviceID-A
...但是我不能完全协调这两个脚本如何以编程方式迭代它们,无论我需要使用ForEach-Object
还是管道。
任何意见,将不胜感激!
powershell - 在 PS 脚本中格式化 ForEach-Object 输出
我正在尝试从我的 PowerShell 脚本中的 CSV 文件输出数据(RUSH 的歌曲和专辑列表),并且我按照我需要的方式对数据进行了排序,但我不知道如何格式化它我需要的方式。以下是我的代码当前的编写方式:
这就是它的输出方式:
我需要输出显示如下:
(注意:请忽略上面示例中的颜色。)在使用循环从 CSV 文件中获取数据后,我要做的是在第一行的括号中显示专辑名称和年份,然后是所有与该专辑有关的歌曲在专辑名称后面的行中按字母顺序排列。我怎样才能做到这一点?
编辑:按照@BrettFord1999 的建议,我得到的输出显示如下:
但是,我只想显示专辑一次而不是多次。有没有办法将每个专辑名称显示一次,而不是与它链接的每首歌曲一起显示?
我会提供原始文件,但我不知道如何在这里分享。我还是 StackOverflow 的新手。
powershell - 带有调用命令的 PowerShell 脚本卡在特定计算机上
我正在编写一个 PowerShell 脚本,它从所有 AD 服务器读取所有共享并将它们输出到 csv 文件中。同时,脚本保存所有发生的错误并将它们输出到错误日志中。该脚本将作为每周任务运行。当我运行脚本时,一切都很顺利,直到它到达一个它无限加载的特定服务器。AD-Server (Windows Server_2012_R2) 位于一个普通的 OU 中,该 OU 中的其他服务器工作正常。
我相信还有其他一些问题也会出现,但我不确定到底有多少(大约 150 分之一)。
它不会产生错误。
你知道这里可能是什么问题吗?
代码: