【问题标题】:Converting Powershell Array to Text so it can be exported to CSV or HTML将 Powershell 数组转换为文本,以便将其导出为 CSV 或 HTML
【发布时间】:2020-04-25 07:31:24
【问题描述】:

我正在尝试将 powershell(AWS 工具)命令的输出转换为字符串,以便可以将它们导出为 CSV 或 HTML。我这辈子都想不通。我已经在哈希表、命名元素等方面看到了 cmets。似乎没有什么能帮助我。 (我是个新手)。

这就是我得到的。 这个命令

(Get-IAMAccountAuthorizationDetail).UserDetailList | Select UserName, Grouplist

会输出这个(间距更好):

用户名组列表
-------- ---------
用户 1 {管理员,测试}
用户 2 {管理员}

我似乎不知道如何获取这些数据以便将其转换为 CSV 或 HTML。这些括号表示它是一个对象、数组或其他东西。谁能告诉我将其转换为文本的代码或 Convertto-CVS o Convertto-HTML 命令可以使用的代码。

Get-Member 命令的输出(子集)是这样的:

类型名称:Amazon.IdentityManagement.Model.UserDetail 名称:等于 成员类型:方法 定义:bool Equals(System.Object obj)

类型名称:Amazon.IdentityManagement.Model.UserDetail 名称:GetHashCode 成员类型:方法 定义:int GetHashCode()

类型名称:Amazon.IdentityManagement.Model.UserDetail 名称:组列表 成员类型:属性 定义:System.Collections.Generic.List[string] GroupList {get;set;}

谢谢

【问题讨论】:

  • (Get-IAMAccountAuthorizationDetail).UserDetailList |选择用户名、组列表 | ConvertTo-Csv -NoTypeInformation 不起作用?我没有 Get-IAMAccountAuthorizationDetail 命令,但使用 Get-ChildItem 进行了尝试,它工作正常。
  • 您可以执行以下操作,这将在GroupList 单元格中创建一个以分号分隔的列表:(Get-IAMAccountAuthorizationDetail).UserDetailList | Select UserName,@{n='GroupList';e={$_.Grouplist -join ';'}}
  • 不,GroupList 字段的输出是 ""System.Collections.Generic.List`1[System.String]""
  • 你尝试了什么?
  • 管理事务——做到了! - 几乎我曾根据通用示例尝试过类似的事情,但它们从未奏效,所以谢谢!现在......它仍然将所有项目 int grouplist 保存在一组 Quotes 下,并将其视为 1 个项目。我怎样才能使 grouplist 中的每个项目都有自己的:)

标签: amazon-web-services powershell aws-powershell


【解决方案1】:

您可以执行以下操作,这将在 GroupList 单元格中创建一个以分号分隔的列表:

(Get-IAMAccountAuthorizationDetail).UserDetailList |
    Select-Object UserName,@{n='GroupList';e={$_.Grouplist -join ';'}}

说明:

语法@{n='Name';e={Expression}} 称为计算属性,如Select-Object 所述。以下是有关计算属性的一些信息:

  • 这是一个具有自定义属性的哈希表。
  • 第一个属性是Name,它是表达式输出的标签。 nNamellabel 都是该属性可接受的属性名称。
  • 传递给n 的值只是您正在创建的字符串。它是将显示在您的输出中的属性名称,并且它不需要已经存在于您的对象中。您的实际财产称为GroupList。以您的输出中的 n='All The Groups', the property name would becomeAll The Groups 为例。重复使用当前属性的同名并没有错。
  • Expressione 是脚本块,这就是它被{} 包围的原因。 ScriptBlock 负责在您的自定义属性中生成值。
  • $_ 是传递给 ScriptBlock 的当前管道对象。这意味着如果您有一个集合(就像您的情况一样),$_ 将按顺序代表这些项目中的每一个。
  • 如果要添加另一个计算属性,只需在最后一个后添加一个逗号并使用计算属性语法,如下所示:

    Select-Object @{n='CustomProperty1';e={$_.ObjectProperty1}},@{n='CustomProperty2';e={$_.ObjectProperty2}}
    

【讨论】:

    猜你喜欢
    • 2021-10-10
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多