Как получить все данные из заданных командлетов / псевдонимов AWS Powershell? - PullRequest
2 голосов
/ 31 мая 2019

При выполнении командлета, подобного Get-WKSWorkspaces , он возвращает набор свойств для ваших рабочих пространств (например, WorkspaceID, Имя пользователя, SubnetID, BundleID и т. Д.), Но не все, что вы видите в AWS GUI. Я специально пытаюсь вытащить такие вещи, как «Режим работы», «Тип вычислений» и «Время создания», но, похоже, не могу найти, где его можно найти.

В своем исследовании я дошел до того, что я использовал $ AWSHistory, чтобы попытаться глубже вникнуть в данные, возвращенные моими предыдущими командлетами, но определенно натолкнулся на стену и, похоже, не могу обойти ее.

У меня есть частичная команда, которая дает мне большую часть нужного мне результата:

$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 = Get-WKSWorkspacesConnectionStatus -ProfileName $ profile $ defaultregion = Get-DefaultAWSRegion $ showallregions = Get-AWSRegion $ exportpath = "" + $ env: USERPROFILE + "\ workspace_properties" + $ defaultregion.Region + ".csv"

    $ showallregions | Format-Table

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

    Clear-DefaultAWSRegion Set-DefaultAWSRegion $ setregion

    Get-WKSWorkspace -ProfileName $ профиль | Выберите WorkspaceID, UserName, BundleID, DirectoryID, @ {Name = "ComputeType"; Expression = {$ .WorkspaceProperties.ComputeTypeName}}, @ {Name = "RunningMode"; Expression = {$ .WorkspaceProperties.RunningMode}}, @ {Name = "Region"; Выражение = {$ defaultregion.Region}}, @ {Name = "LastKnownUserConnect"; Выражение = {$ _ | foreach {$ lastuserconnect = Get-WKSWorkspacesConnectionStatus -ProfileName $ profile -WorkspaceId $ _. WorkspaceId; echo $ lastuserconnect.LastKnownUserConnectionTimestamp}}} | Export-Csv $ exportpath

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Вот пример получения тех свойств, которые вы ищете:

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
0 голосов
/ 31 мая 2019

При просмотре документов видно, что вы ищете в свойстве WorkspaceProperties, которое содержит объект Amazon.WorkSpaces.Model.WorkspaceProperties со следующими свойствами:

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

Не уверен насчет CreationTime, хотя ...

...