Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何从给定的AWS Powershell cmdlet/别名检索所有数据?_Amazon Web Services_Powershell_Aws Powershell_Amazon Workspaces - Fatal编程技术网

Amazon web services 如何从给定的AWS Powershell 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

运行Get-WKSWorkspaces之类的cmdlet时,它将返回一组有关工作空间的属性(例如工作空间ID、用户名、子网ID、BundleID等),但不会返回您在AWS GUI中看到的所有内容。我特别尝试拉运行模式、计算类型和创建时间之类的东西,但似乎找不到拉它的地方

在我的研究中,我使用$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区域

改进建议包括:

  • 自动切换区域选择以从中获取所有工作空间 我们使用的主要区域
  • 清理管线,以便更轻松地 阅读
  • 让区域自动附加文件名,以便 不会每次都覆盖您的文件(文件在其中,但在 现在…仍然弹出一个带有“workspace\u properties.csv”的文件 (姓名)
  • 优化脚本,因为它非常慢

    $lastuserconnect=Get-WKSWorkspacesConnectionStatus-ProfileName$profile $defaultregion=获取DefaultAWSRegion $showallregions=获取AWSRegion $exportpath=”“+$env:USERPROFILE+“\workspace\u properties”+ $defaultregion.Region+“.csv”

    $showallregions |格式表

    $setregion=读取主机-提示“AWS区域”

    清除默认区域 设置DefaultAWSRegion$setregion

    获取WKSWorkspace-ProfileName$profile |选择工作空间ID、用户名、BundleID、目录ID、{Name=“ComputeType”表达式={$.WorkspaceProperties.ComputeTypeName}}、{{Name=“RunningMode”表达式={$.WorkspaceProperties.RunningMode}、@{Name=“Region”表达式={$defaultregion.Region}、@{Name=“lastnownuserconnect={${u124; foreach{$lastuserconnect=Get-WKSWorkspacesConnectionStatus-ProfileName$profile-WorkspaceId${.WorkspaceId;echo$lastuserconnect.LastKnownUserConnectionTimestamp}}}}}导出Csv$exportpath


  • 通过查看文档,可以看到您在包含具有以下属性的对象的属性中查找的内容:

    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}我必须回去解释它不可用。他们很可能正在寻找“工作区年龄”,所以我想知道我们是否可以在标签中放置初始创建日期或其他东西,以便以这种方式跟踪。当然,这之所以有效,是因为我们会不时重建它们。无论如何,感谢您的帮助!