Skip to content

aws-samples/euc-toolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Table of contents

Solution Overview

The EUC Toolkit was created to provide additional features for admins managing Amazon WorkSpaces and Amazon AppStream 2.0 environments. The current build offers the listed functionality below. For additional information, please see our launch announcement.

Amazon WorkSpaces

  • Search by any attribute
    • First name, last name, computer name, WorkSpace ID, bundle ID, running mode, email, username, Region, and/or directory ID
  • Bulk or single calls for start, stop, migrate, rebuild, restore, enable and disable admin maintenance (APIs optimized).
  • Global WorkSpaces inventory visibility
  • Export WorkSpaces report (CSV)
  • Optional functionality:
    • Amazon CloudWatch metrics (service and OS level metrics)
    • AWS CloudTrail modification history
    • WorkSpaces access history
    • Windows Remote Assistance
    • Remote backup
    • Remote server-side log gathering

Amazon AppStream 2.0

  • Query and display active sessions
  • Filter active sessions by:
    • Stack, connected state, userId, session state, IP address, and/or Region
  • View in-use IP of active sessions
  • Terminate active sessions
  • Export AppStream 2.0 report (CSV)
  • Optional functionality:
    • Windows Remote Assistance

Overall Toolkit

  • API logging
  • Source permissions identifier (supports instance profiles)

Getting Started

For information on getting the solution setup, along with the steps for optional features, see our launch announcement.

Customizing the Solution

The solution can be completely customized to meet business needs. The EUC toolkit is built on PowerShell using the Windows Presentation Framework (WPF) to display a graphical user interface (GUI) on Windows machines. In addition, the solution has been modularized to to allow for changes and customizations. As is, the toolkit is licensed as MIT-0, meaning it is an 'as-is' example. Any changes made to the project are owned by the modifier.

Customizing the PowerShell GUI

The GUI for the application is built using XML. To add additional buttons, labels, etc., open up the EUCToolkit-MainGUI.xml and make modifications there. Below is a sample button that is defined for changing the running mode of a WorkSpace. From there, the button can be referenced in your PowerShell script and have invocation actions configured.

"Button Name="btnChangeRunningMode" Content="Change RunningMode" HorizontalAlignment="Left" Height="24" Margin="41,575,0,0" VerticalAlignment="Top" Width="124" RenderTransformOrigin="0.671,0.467" Grid.Column="1" Grid.ColumnSpan="2"

Creating / Customizing Functions

The Powershell script is divided into 2 files, both can be customized to add additional functionality or used as a reference for other automation.

EUCToolkit-Main.ps1

Contains all of the code that interacts with the GUI. The functions in this script will call actions in the EUCToolkit-Helper.psm1 to perform calls against WorkSpaces and on AppStream 2.0.

EUCToolkit-Helper.psm1

Contains all of the functions that interact with WorkSpaces and AppStream 2.0.

Updating CloudWatch Images

Included in the EUC toolkit are several JSON files that are used to generate images from CloudWatch. These can be customized, see this documentation for additional information.

File structure

|-Assets/
  |-CWHelper/
    |-SelectedWSMetrics/
    |-WorkSpaceHistoricalLatency-Start.png
    |-WorkSpaceHistoricalLatencyTemplate.JSON
    |-WorkSpaceLatency-Start.png
    |-WorkSpaceLatencyTemplate.JSON
    |-WorkSpacesSessionLaunch.png
    |-WorkSpacesSessionLaunchTemplate.JSON
    |-WorkSpacesCPU-Start.png
    |-WorkSpacesCPUTemplate.JSON
    |-WorkSpacesDisk.png
    |-WorkSpacesDiskTemplate.json
    |-WorkSpacesMemory.png
    |-WorkSpacesMemoryTemplate.json
  |-EUCToolkit-Helper.psm1
  |-EUCToolkit-MainGUI.xml
|-EUCToolkit-Main.ps1
|-CONTRIBUTING.md
|-LICENSE.txt
|-NOTICE.txt
|-README.md

################################################

License

This library is licensed under the MIT-0 License. See the LICENSE file. See license here.