Amazon web services 如何从给定的AWS Powershell cmdlet/别名检索所有数据?
运行Get-WKSWorkspaces之类的cmdlet时,它将返回一组有关工作空间的属性(例如工作空间ID、用户名、子网ID、BundleID等),但不会返回您在AWS GUI中看到的所有内容。我特别尝试拉运行模式、计算类型和创建时间之类的东西,但似乎找不到拉它的地方 在我的研究中,我使用$AWSHistory尝试深入挖掘从以前的cmdlet返回的数据,但确实遇到了问题,似乎无法回避 我确实有一个局部命令,它提供了我所需的大部分输出:Amazon web services 如何从给定的AWS Powershell cmdlet/别名检索所有数据?,amazon-web-services,powershell,aws-powershell,amazon-workspaces,Amazon Web Services,Powershell,Aws Powershell,Amazon Workspaces,运行Get-WKSWorkspaces之类的cmdlet时,它将返回一组有关工作空间的属性(例如工作空间ID、用户名、子网ID、BundleID等),但不会返回您在AWS GUI中看到的所有内容。我特别尝试拉运行模式、计算类型和创建时间之类的东西,但似乎找不到拉它的地方 在我的研究中,我使用$AWSHistory尝试深入挖掘从以前的cmdlet返回的数据,但确实遇到了问题,似乎无法回避 我确实有一个局部命令,它提供了我所需的大部分输出: $region = Get-DefaultAWSRegio
$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区域
改进建议包括:
通过查看文档,可以看到您在包含具有以下属性的对象的属性中查找的内容: ComputeTypeNameAmazon.workspace.Compute
RootVolumeSizeGibSystem.Int32
运行模式Amazon.workspace.RunningMode
运行模式AutoStopTimeoutingMinutesSystem.Int32
UserVolumeSizeGibSystem.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)"
}
我在控制台的工作区上也没有看到“创建时间”
[编辑]
我相信您正在寻找一种方法来导出这些信息,下面的代码可能会有所帮助:
[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
你能给我指一下我可以学习从这些对象中提取数据的文档吗?我的Powershell知识在这里有一个明确的差距。应该能够像上次用户连接一样使用点表示法。这里不需要什么特别的东西,$lastuserconnect.LastKnownUserConnectionTimestamp实际上是一堆T没有列出特定工作空间的时间戳的imestamps实际上是我自己在2分钟前发现的。目前正在解决这个问题。很好的解决方案。谢谢!我遇到了麻烦。下面的解决方案没有格式化为CSV,上面的解决方案是,但我无法正确显示$lastuserconnect。有什么提示吗?所以在你上面的代码中e将LastKnowNuserConnection存储为:--是否正确?@{Name=“LastKnowNuserConnection”表达式={$\u124; foreach{$lastuserconnect=Get-WKSWorkspacesConnectionStatus-ProfileName$profile-WorkspaceId$\ u0.WorkspaceId;echo$lastuserconnect.LastKnownUserConnectionTimestamp}我必须回去解释它不可用。他们很可能正在寻找“工作区年龄”,所以我想知道我们是否可以在标签中放置初始创建日期或其他东西,以便以这种方式跟踪。当然,这之所以有效,是因为我们会不时重建它们。无论如何,感谢您的帮助!