powershell - 使PowerShell认为对象不可枚举

标签 powershell

我一直在研究一些PowerShell函数,以管理在我们创建的程序集中实现的对象。我一直在使用的一种类实现IEnumerable。不幸的是,这会导致PowerShell每次机会都展开对象。 (我无法更改该类实现IEnumerable的事实。)

我通过创建PSObject并将自定义对象的属性复制到PSObject,然后返回该属性而不是自定义对象来解决此问题。但是我真的很想返回我们的自定义对象。

是否可以通过某种方式(大概使用我的types.ps1xml文件)在PowerShell中隐藏此类的GetEnumerator()方法(否则,请告知PowerShell永远不要展开它)。

最佳答案

包装 PSObject 可能是最好的方法。

您也可以将其显式包装在另一个集合中-PowerShell仅解开一个级别。

同样,在C#/VB/...中编写cmdlet时,当您调用 WriteObject 时,请使用带有第二个参数的重载:如果为false,则PowerShell将不会枚举作为第一个参数传递的对象。

关于powershell - 使PowerShell认为对象不可枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3934930/

相关文章:

正则表达式拆分csv,值被引号包围,值有引号

loops - 脚本的循环部分

powershell - 屏蔽字段重复

powershell - 导入 CSV 和 Foreach

json - 将嵌套 JSON 数组转换为 CSV 文件中的单独列

powershell - SSRS 和 PowerShell : Get report as Excel

xml - 如何使用 Powershell 添加/删除对 csproj 的引用?

visual-studio - 删除 Visual Studio 终端中的 "Visual Studio 2022 Developer PowerShell" header

Powershell 脚本完成但退出并显示错误代码 1

powershell - PowerShell GraphQL突变解析错误