【问题标题】:How can I retrieve all data from a given AWS Powershell cmdlets/alias?如何从给定的 AWS Powershell cmdlet/别名中检索所有数据?
【发布时间】:2019-10-17 06:24:59
【问题描述】:

当运行像 Get-WKSWorkspaces 这样的 cmdlet 时,它将返回一组关于您的工作区的属性(例如 WorkspaceID、用户名、子网 ID、BundleID 等),但不是您在AWS 图形用户界面。我也特别想提取运行模式、计算类型和创建时间等内容,但似乎找不到在哪里提取它。

在我的研究中,我开始使用 $AWSHistory 来尝试更深入地挖掘从我以前的 cmdlet 返回的数据,但肯定碰壁了,似乎无法绕过它。

我确实有一个部分命令可以提供我需要的大部分输出:

$region = Get-DefaultAWSRegion
$lastuserconnect = Get-WKSWorkspacesConnectionStatus | Select LastKnownUserConnectionTimestamp

Get-WKSWorkspace -ProfileName ITSLayer1-053082227562-Profile | Select WorkspaceID, UserName, BundleID, DirectoryID, 
@{Name="Region"; Expression={$region.Region}}, 
@{Name="LastKnownUserConnect"; Expression= 
{$lastuserconnect.LastKnownUserConnectionTimestamp}}

后人更新:实际上这里有一些不错的东西。它很慢,但它以表格格式呈现得非常好,并且在开始时包含一些内容以选择您的 AWS 区域。

改进建议包括:

  1. 自动切换区域选择以获取所有工作区 我们使用的主要地区
  2. 清理线路以便更容易 阅读
  3. 让区域自动附加文件名,以便它 不会每次都覆盖您的文件(它在那里但在 那一刻......仍然会弹出一个带有“workspace_properties.csv”的文件 作为名称)
  4. 优化脚本,因为它很慢

    $lastuserconnect = 获取-WKSWorkspacesConnectionStatus -ProfileName $profile $defaultregion = 获取默认AWSRegion $showallregions = 获取 AWSRegion $exportpath = "" + $env:USERPROFILE + "\workspace_properties" + $defaultregion.Region + ".csv"

    $showallregions |格式表

    $setregion = Read-Host -Prompt 'AWS Region'

    清除-默认AWSRegion 设置默认AWSRegion $setregion

    Get-WKSWorkspace -ProfileName $profile |选择 WorkspaceID、UserName、BundleID、DirectoryID、@{Name="ComputeType";表达式={$.WorkspaceProperties.ComputeTypeName}}, @{Name="RunningMode";表达式={$.WorkspaceProperties.RunningMode}},@{Name="Region";表达式={$defaultregion.Region}},@{Name="LastKnownUserConnect";表达式={$_ | foreach {$lastuserconnect = Get-WKSWorkspacesConnectionStatus -ProfileName $profile -WorkspaceId $_.WorkspaceId; echo $lastuserconnect.LastKnownUserConnectionTimestamp}}} |导出-Csv $exportpath

【问题讨论】:

  • 这里,$lastuserconnect.LastKnownUserConnectionTimestamp其实是一堆Timestamp,没有列出具体工作区的时间戳
  • 2 分钟前我自己刚刚发现了这一点。目前正在解决。接得好。谢谢!
  • 我碰壁了。下面的解决方案没有格式化为 CSV,我上面的解决方案是,但我无法让 $lastuserconnect 正确显示。有什么建议吗?
  • 所以在你上面的代码中.. 我看到你存储 LastKnownUserConnect 是这样的:- 对吗? @{Name="LastKnownUserConnect";表达式={$_ | foreach {$lastuserconnect = Get-WKSWorkspacesConnectionStatus -ProfileName $profile -WorkspaceId $_.WorkspaceId; echo $lastuserconnect.LastKnownUserConnectionTimestamp}}

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


【解决方案1】:

通过查看文档,您可以在属性 WorkspaceProperties 中查找您要查找的内容,该属性包含具有以下属性的 Amazon.WorkSpaces.Model.WorkspaceProperties 对象:

ComputeTypeName Amazon.WorkSpaces.Compute
RootVolumeSizeGib System.Int32
RunningMode Amazon.WorkSpaces.RunningMode
RunningModeAutoStopTimeoutInMinutes System.Int32
UserVolumeSizeGib System.Int32

虽然不确定 CreationTime...

【讨论】:

  • 你能指出我可以学习从这些对象中提取数据的文档吗?我的 Powershell 知识在这里有一定的差距。
  • 应该能够使用点表示法,就像您已经对上次用户连接所做的那样。没有什么花哨的要求
【解决方案2】:

以下是获取您要查找的属性的示例:

Get-WKSWorkspace | foreach {
    $connectionStatus = Get-WKSWorkspacesConnectionStatus -WorkspaceId $_.WorkspaceId; 
    echo "";
    echo "==> About $($_.WorkspaceId)";
    echo "Last State Check: $($connectionStatus.ConnectionStateCheckTimestamp)"; 
    echo "User Last Active: $($connectionStatus.LastKnownUserConnectionTimestamp)";
    echo "Directory: $($_.DirectoryId)";
    echo "Compute: $($_.WorkspaceProperties.ComputeTypeName)"; 
    echo "Running mode $($_.WorkspaceProperties.RunningMode)";
    echo "State $($_.State)"
}

我也没有在控制台的工作区上看到“创建时间”。

[编辑] 我相信您正在寻找一种导出这些信息的方法,下面的代码可能会有所帮助:

[System.Collections.ArrayList]$output=@()
Get-WKSWorkspace | foreach {
    $connectionStatus = Get-WKSWorkspacesConnectionStatus -WorkspaceId $_.WorkspaceId; 
    $bunch = [pscustomobject]@{
        WorkspaceId = $_.WorkspaceId
        LastStateCheck=$connectionStatus.ConnectionStateCheckTimestamp
        UserLastActive=$connectionStatus.LastKnownUserConnectionTimestamp
        Directory= $_.DirectoryId
        Compute=$_.WorkspaceProperties.ComputeTypeName
        Runningmode= $_.WorkspaceProperties.RunningMode
        State= $_.State
    }
    $output.Add($bunch)|Out-Null
}

$output | Export-Csv -NoType c:\dd.csv

【讨论】:

  • 我将不得不回去解释它不可用。他们很可能在寻找“工作空间年龄”,所以我想知道我们是否可以将初始创建日期放在标签或其他东西中,以便以这种方式进行跟踪。当然,这只是如此有效,因为我们不时重建它们。无论如何,感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2013-08-09
相关资源
最近更新 更多