如何从给定的 AWS Powershell cmdlets/alias 检索所有数据?
How can I retrieve all data from a given AWS Powershell cmdlets/alias?
当 运行 像 Get-WKSWorkspaces 这样的 cmdlet 时,它将 return 一组关于您的工作区的属性(例如 WorkspaceID、用户名、SubnetID、 BundleID 等),但不是您在 AWS GUI 中看到的所有内容。我还专门尝试提取 运行 模式、计算类型和创建时间等内容,但似乎无法找到提取它的位置。
在我的研究中,我达到了使用 $AWSHistory 尝试更深入地挖掘从我以前的 cmdlet 编辑的数据 return 的地步,但肯定碰壁了,不能似乎绕过了它。
我确实有一个部分命令可以提供我需要的大部分输出:
$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}}
后代更新:实际上这里有一些像样的东西。它很慢,但它以 table 格式呈现得很好,并且在 select 您的 AWS 区域的开头包含了一些内容。
改进建议包括:
- 自动切换区域 select 以从中获取所有工作区
我们使用的主要区域
- 清理线路以便更容易
阅读
- 让区域自动附加文件名,这样它
不会每次都覆盖你的文件(它在那里但在
那一刻...仍然弹出一个带有 'workspace_properties.csv' 的文件
作为名字)
正在优化脚本,因为它很慢
$lastuserconnect = Get-WKSWorkspacesConnectionStatus -ProfileName $profile
$defaultregion = Get-DefaultAWSRegion
$showallregions = 获取 AWSRegion
$exportpath = "" + $env:USERPROFILE + "\workspace_properties" +
$defaultregion.Region + ".csv"
$showallregions |格式-Table
$setregion = 读取主机提示 'AWS Region'
清除默认AWSRegion
设置默认 AWSRegion $setregion
Get-WKSWorkspace -ProfileName $profile | Select WorkspaceID, UserName, BundleID, DirectoryID, @{Name="ComputeType";表达式={$.WorkspaceProperties.ComputeTypeName}}, @{Name="RunningMode";表达式={$.WorkspaceProperties.RunningMode}}, @{Name="Region";表达式={$defaultregion.Region}},@{名称="LastKnownUserConnect";表达式={$_ | foreach {$lastuserconnect = Get-WKSWorkspacesConnectionStatus -ProfileName $profile -WorkspaceId $_.WorkspaceId;回声$lastuserconnect.LastKnownUserConnectionTimestamp}}} |导出 CSV $exportpath
通过查看文档,您可以在具有以下属性的 属性 WorkspaceProperties
which contains an Amazon.WorkSpaces.Model.WorkspaceProperties
对象中找到您要查找的内容:
ComputeTypeName Amazon.WorkSpaces.Compute
RootVolumeSizeGib System.Int32
RunningMode Amazon.WorkSpaces.RunningMode
RunningModeAutoStopTimeoutInMinutes System.Int32
UserVolumeSizeGib System.Int32
虽然不确定 CreationTime...
以下是获取您要查找的属性的示例:
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)"
}
我也没有在控制台的工作区上看到 'Creation Time'。
[编辑]
我相信您正在寻找一种导出这些信息的方法,下面的代码可能会有所帮助:
[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
当 运行 像 Get-WKSWorkspaces 这样的 cmdlet 时,它将 return 一组关于您的工作区的属性(例如 WorkspaceID、用户名、SubnetID、 BundleID 等),但不是您在 AWS GUI 中看到的所有内容。我还专门尝试提取 运行 模式、计算类型和创建时间等内容,但似乎无法找到提取它的位置。
在我的研究中,我达到了使用 $AWSHistory 尝试更深入地挖掘从我以前的 cmdlet 编辑的数据 return 的地步,但肯定碰壁了,不能似乎绕过了它。
我确实有一个部分命令可以提供我需要的大部分输出:
$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}}
后代更新:实际上这里有一些像样的东西。它很慢,但它以 table 格式呈现得很好,并且在 select 您的 AWS 区域的开头包含了一些内容。
改进建议包括:
- 自动切换区域 select 以从中获取所有工作区 我们使用的主要区域
- 清理线路以便更容易 阅读
- 让区域自动附加文件名,这样它 不会每次都覆盖你的文件(它在那里但在 那一刻...仍然弹出一个带有 'workspace_properties.csv' 的文件 作为名字)
正在优化脚本,因为它很慢
$lastuserconnect = Get-WKSWorkspacesConnectionStatus -ProfileName $profile $defaultregion = Get-DefaultAWSRegion $showallregions = 获取 AWSRegion $exportpath = "" + $env:USERPROFILE + "\workspace_properties" + $defaultregion.Region + ".csv"
$showallregions |格式-Table
$setregion = 读取主机提示 'AWS Region'
清除默认AWSRegion 设置默认 AWSRegion $setregion
Get-WKSWorkspace -ProfileName $profile | Select WorkspaceID, UserName, BundleID, DirectoryID, @{Name="ComputeType";表达式={$.WorkspaceProperties.ComputeTypeName}}, @{Name="RunningMode";表达式={$.WorkspaceProperties.RunningMode}}, @{Name="Region";表达式={$defaultregion.Region}},@{名称="LastKnownUserConnect";表达式={$_ | foreach {$lastuserconnect = Get-WKSWorkspacesConnectionStatus -ProfileName $profile -WorkspaceId $_.WorkspaceId;回声$lastuserconnect.LastKnownUserConnectionTimestamp}}} |导出 CSV $exportpath
通过查看文档,您可以在具有以下属性的 属性 WorkspaceProperties
which contains an Amazon.WorkSpaces.Model.WorkspaceProperties
对象中找到您要查找的内容:
ComputeTypeName Amazon.WorkSpaces.Compute
RootVolumeSizeGib System.Int32
RunningMode Amazon.WorkSpaces.RunningMode
RunningModeAutoStopTimeoutInMinutes System.Int32
UserVolumeSizeGib System.Int32
虽然不确定 CreationTime...
以下是获取您要查找的属性的示例:
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)"
}
我也没有在控制台的工作区上看到 'Creation Time'。
[编辑] 我相信您正在寻找一种导出这些信息的方法,下面的代码可能会有所帮助:
[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