问题标签 [select-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.

0 投票
4 回答
1927 浏览

powershell - 选择不存在的属性时没有错误

我希望 PowerShell 在尝试选择不存在的属性时抛出错误,但我得到的是空列作为输出。例子:

我编写了一个通过 导入多个文本文件的脚本Import-Csv,但是这些文件中的标题可能会更改,并且我最终会将空列加载到系统中。

编辑:这就是我检查标题是否匹配的方式:

我知道这就是 PowerShell 的工作方式,但Set-StrictMode正如@Matt 所提到的,文档对我来说确实有点误导。我只是希望Select-Object有某种“-NoNewImplicitProps”或“-ReadOnlyPipeline”开关可以为我完成这项工作:)。感谢您的回答。

0 投票
0 回答
903 浏览

powershell - Powershell 选择对象为空

我尝试获取FolderPath这样的 Exchange 邮箱:

这给了我以下输出:

这很好,但是当我尝试获取FolderPath单个邮箱时,它返回空输出。

Format-Table 返回正确的输出:

我可以使用Select-Objectcmdlet 获得正确的输出吗?有什么区别?

0 投票
1 回答
70 浏览

powershell - 在powershell中将表格变成自定义对象

我有一个特定格式的变量表(类似于 csv)

关于如何将其转换为对象数组的任何建议?我试过 select-object 但并没有真正做到。

谢谢

0 投票
5 回答
69275 浏览

regex - 如何从 Select-String 中获取捕获的组?

我正在尝试使用 Powershell(版本 4)从 Windows 上的一组文件中提取文本:

到目前为止,一切都很好。这给出了一组很好的MatchInfo对象:

接下来,我看到捕获在matches 成员中,所以我将它们取出:

这使:

或作为列表| Format-List

这就是我停下来的地方,我不知道如何进一步获取捕获的组元素列表。

我试过添加另一个| ForEach-Object -MemberName Groups,但它似乎返回与上面相同。

我得到的最接近的是 with | Select-Object -Property Groups,这确实给了我我所期望的(一组列表):

但是后来我无法从每个组中提取捕获的组,我尝试| Select-Object -Index 1只得到其中一组。


更新:一个可能的解决方案

似乎通过添加| ForEach-Object { $_.Groups.Groups[1].Value }我得到了我想要的东西,但我不明白为什么 - 所以我不能确定在将这种方法扩展到整套文件时我是否能够得到正确的结果。

为什么它有效?

作为旁注,这| ForEach-Object { $_.Groups[1].Value }(即没有第二个.Groups)给出了相同的结果。

我想补充一点,在进一步尝试后,似乎可以通过删除 piped 来缩短命令| Select-Object -Property Groups

0 投票
2 回答
801 浏览

powershell - 哈希表过滤器/选择

我今晚正在重新编写现有的服务器运行状况检查脚本以将其值存储在哈希表中,并且该部分工作正常。但是,我希望结果转到一个 CSV 文件,并且该文件仅填充有我已将它们标记为需要操作的服务器。目前,这些正在生成事件 ID 7011,或通过Test-Connection.

这是代码:

最后我需要正确的代码,就目前而言,脚本可以很好地收集/存储哈希表数组中的数据$CheckServer,但我只想选择那些需要操作的服务器。所以,如果我正在扫描 100 台服务器,其中 2 台处于 ping 失败状态,我只想要那些被选中并发送到Export-Csv.

0 投票
4 回答
1859 浏览

powershell - 如何选择某些哈希表值但在 powershell 脚本中内联更改其他值

使用管道或其他类型的内联表示法,我想在哈希表中“选择”某些值直接到结果,同时更改或设置其他值。

哈希表

我从一个哈希表开始(坦率地说,它就像一个对象一样使用),如下所示:

有没有办法使用 Select-Object cmdlet(或类似的东西)来设置某些属性的值并传递其他属性?我想结束这个:

如果我不需要/不希望它是内联的,我只需设置以下值Result

对于内联解决方案,我总是可以这样使用Foreach-Object

或者直接在子表达式中引用 $hash:

但是,当我只处理一个哈希表时使用它似乎很荒谬Foreach-Object,并且非常冗长地提及两次我只想通过的属性,然后如果我的$hash变量是$aSignificantlyLongerHashTableVariableName.

如果我使用的是 Powershell 对象...

如果我使用这样的对象:

我会select-object像这样使用 Cmdlet:

这将导致

Hashtable 和 PSObject 有一些相似的方面(以命名方式包含其他东西的东西),但是 AFAIK,它们是不兼容的 - 有没有更接近Select-Object我在这里尝试做的事情的替代方案?

0 投票
1 回答
56 浏览

powershell - Select-Object -Unique 和 MemberTypes

作为更大脚本的一部分,我正在制作一个服务器名称的引用列表,其中应该包含我们基础架构中的所有服务器。为此,我有 4 个阵列,其服务器名称来自不同的系统(AD、SQL 等),我计划使用以下方法将它们连接在一起:

尽管这主要完成了这项工作,但我仍然在结果列表中看到一些重复项,并且据我所知,这是因为 SQL $var 中 .Name 属性的 MemberType 是 Property 而其他变量中 Name 的 MemberType 是 NoteProperty .

这是导致重复的原因吗?如果是这样,我该如何解决这个问题?

谢谢。

0 投票
2 回答
1109 浏览

powershell - 使用 Select-Object 从导入的服务器列表中设置变量

目前我有下面的脚本可以工作,但是我有超过 30 台服务器并且它们经常更改,所以我很好奇是否有更简单的方法可以$ServerList使用我的每台服务器的导入数据更新变量。服务器路径是相同的,我可以维护一个Server.txt包含所有服务器名称的文件。关于如何简化它以使用更大的服务器列表的任何想法,我可以在需要时更新而无需向 powershell 脚本添加行?

0 投票
2 回答
4629 浏览

powershell - Powershell:将自定义对象导出到 CSV 文件 - 使用 Select-Object 提取单个属性值

我编写了一个构建自定义对象并将其导出到 CSV 文件的脚本:

生成的 CSV 文件中的数据行是:

"@{AgentVersion=9.4.112.22}","@{$ .LastWriteTime=5/6/2016 6:02:32 AM}","@{$ .LastWriteTime=7/5/2016 8:34:01 PM }"

是否有可能摆脱不需要的@{<name>=...}包装?

0 投票
2 回答
1279 浏览

powershell - 在 PowerShell 中选择带有变量的属性或参数

使用此代码,我得到了想要的结果:

但是下面的代码就不行了,你知道为什么吗?我希望用户选择他自己的属性选择。我将属性存储在一个变量中,如下所示。但它不会工作: