도메인에 가입되어 있는 로컬 클라이언트 환경에서 WorkSpaces Client를 자동으로 배포하는 방안

7분 분량
콘텐츠 수준: 중급
2

AWS WorkSpaces 사용 시 WorkSpaces Client 설치 이후 하게되는 Proxy 설정 또는 디렉토리 등록코드 입력과 같은 작업 없이 사용자는 바로 워크스페이스 이용이 가능한 방안을 소개 합니다.

해당 기사에서는 도메인에 가입되어 있는 로컬 클라이언트 디바이스 환경에서 Amazon WorkSpaces Client를 일관된 설정으로 배포하는 방안에 대해서 설명합니다.

AWS WorkSpaces Client는 보통 인터넷 웹페이지(https://clients.amazonworkspaces.com/) 에서 다운받아 설치하여 사용합니다. 하지만 인터넷이 되지 않는 경우나 설치 이후 입력하게 되는 등록코드(Registion Code) 가 여러 개 일 경우 그리고 프록시 설정을 하여 사용 하는 경우에 사용자는 WorkSpaces를 사용하기 전부터 어려움을 느낄수 있습니다.
여기에서는 관리자가 도메인 그룹정책으로 WorkSPaces를 배포하고 이후 사용자가 설정하는 부분을 자동화 하는 방안을 소개 합니다. 이렇게 하면 일괄된 WorkSpaces Client 환경을 구현 할수 있으며 사용자는 보다 편리하게 AWS WorkSpaces를 사용할수 있습니다.

먼저 이 AWS_Workspaces_Repackages.VBS 파일을 실행하기 위해서는 아래와 같은 준비물이 필요합니다. (여기서 소개되는 .VBS 파일 및 .html 파일은 모두 예제 파일임을 알려드리며, 상황에 맞게 수정해서 사용하실 수 있습니다.)

사전 요구 사항

  • 도메인 환경의 로컬 클라이언트에서 도메인 유저들이 접속할 수 있는 공유폴더가 필요합니다.
  • 사용자 바탕화면에 복사 될 WorkSPaces.html 파일이 필요합니다.( 여기서는 예로 업무망 WorkSpaces.html, 인터넷망 WorkSPaces.html 로 작성하였습니다.)
  • AWS WorkSpaces Client 웹페이지(https://clients.amazonworkspaces.com/) 에서 다운 받은 설치 파일이 필요합니다.
  • C:\Users\ %username% \AppData\Local\Amazon Web Services\Amazon WorkSpaces 경로에 있는 RegistrationList.json 파일과 UserSettings.json 파일이 필요합니다. (이 파일들은 등록코드(Registion Code)를 미리 등록할 수 있고 프록시 설정을 미리 저장하여 사용자에 배포 할수 있습니다.)

1. 사용자 바탕화면에 복사 될 WorkSPaces.html 파일 생성하는 방법입니다. (예제로 인터넷망과 업무망 WorkSpaces. html 사용을 가정하였습니다.)

메모장을 열고 아래의 글을 복사합니다. 그후 'workspaces://@wsicn+HHHHH' 부분에서 @뒤 부분을 접속하려고 하는 등록코드(Registion Code) 로 변경합니다. 이름은 '업무망 WorkSpaces.html' 와 같이 WorkSpaces의 사용목적에 맞게 설정합니다.

이렇게 저장된 Workspaces.html을 실행하면 등록코드(Registion Code)가 자동으로 변경되어 WorkSpaces Client가 실행됩니다. (https://docs.aws.amazon.com/workspaces/latest/adminguide/customize-workspaces-user-login.html)

예) 업무망 WorkSpaces.html

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="icon" href="%system32%/AWSWorkspaces.png"/> 
    <link rel="apple-touch-icon" href="%system32%/AWSWorkspaces.png"/> 
    <title> Document </title>
</head>
<body>

<meta http-equiv="refresh" content="0;url=workspaces://@wsicn+HHHHHH">
<script language="JavaScript">

<!--
function auto_close() {
setTimeout('closed()',5000);

}
function closed() {
self.close();
}
auto_close();
//-->
</script>


</body>
</html>

예) 인터넷망 WorkSPaces.html

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="icon" href="%system32%/AWSWorkspaces.png"/> 
    <link rel="apple-touch-icon" href="%system32%/AWSWorkspaces.png"/> 
    <title> Document </title>
</head>
<body>

<meta http-equiv="refresh" content="0;url=workspaces://@wsicn+IIIII">
<script language="JavaScript">

<!--
function auto_close() {
setTimeout('closed()',5000);

}
function closed() {
self.close();
}
auto_close();
//-->
</script>


</body>
</html>

2. RegistrationList.json 파일과 UserSettings.json 파일을 생성하는 방법입니다.

위의 파일들은 C:\Users\ %username% \AppData\Local\Amazon Web Services\Amazon WorkSpaces 경로에 있습니다. 먼저 WorkSpaces Client를 설치한 다음 실행합니다. 그후 등록이 필요한 여러개의 등록코드(Registion Code)를 등록하고 프록시 설정이 필요하다면 프록시 설정도 미리 합니다. 그후 정상적으로 접속되는지 테스트 합니다. 이렇게 테스트를 완료한 파일을 C:\Users\ %username% \AppData\Local\Amazon Web Services\Amazon WorkSpaces 경로에서 복사 한뒤 저장합니다.

참고로 UserSettings.json 파일의 아래 부분이 Proxy 설정 후 저장되는 부분입니다.

  "Proxy": {
    "UseProxy": true,
    "NoProxy": false,
    "ProxyAddress": "100.100.100.100",
    "ProxyPort": "8080"}

3. 1.번과 2.번에서 준비한 파일 과 WorkSpaces Client 웹페이지에서 다운 받은 Amazon+WorkSpaces.msi 파일 을 공유 폴더에 아래와 같이 저장합니다.

상위 공유폴더

상위 공유폴더

Desktop 폴더

Desktop 폴더

UserSettings 폴더

UserSettings 폴더

WorkSapcesClient 폴더

WorkSapcesClient 폴더

4. 공유 폴더 까지 준비 되면 아래의 스크립트에서 공유 폴더 IP를 변경합니다.

먼저 이 스크립트는 아래와 같이 WorkSpaces Client 파일을 로컬 클라이언트로 복사하고 설치 한뒤 실행합니다. 그후 자동 종료가 되며 바탕화면에 .html 파일을 복사하고 RegistrationList.json 파일과 UserSettings.json 파일 을 덮어쓰는 방식으로 되어 있습니다.

이 스크립트는 중복 실행을 막기 위해 "C:\ProgramData\Amazon+WorkSpaces.msi" 이 있으면 자동으로 종료가 되며, C:\Users\ %useranme% \AppData\Local\Amazon Web Services\Amazon WorkSpaces 폴더가 있으면 워크스페이스를 실행하지 않습니다. 워크스페이스를 최초 1회 실행 후 종료하는 목적은 워크스페이스 Client만 설치하고 실행하지 않으면 C:\Users\ %useranme% \AppData\Local\Amazon Web Services\Amazon WorkSpaces 폴더가 존재하지 않아 기존에 작성한 설정파일들을 덮어쓰기 할수 없기 때문입니다.

Function CopyFiles() : C:\ProgramData 로 워크스페이스 설치 파일을 복사합니다.

Function InstallWorkSpacesClient() : 워크스페이스 설치 파일을 /qn 명령어로 Silent 모드로 설치합니다.

Function ExcuteWorkSpacesClient() : C:\Users\ %useranme% \AppData\Local\Amazon Web Services\Amazon WorkSpaces 폴더를 생성하기 위해 최초 1회 실행한뒤 종료합니다.

Function CopyURL() : 바탕화면에 기존에 작성했던 .html 파일들을 복사합니다. 사용자가 WorkSpaces 에 손쉽게 접근할수 있게 합니다. (최초 1회 브라우저에서 앱실행을 가능하게 보안 설정을 체크 해줄 필요가 있습니다.)

Function CopySettings() : 기존에 등록한 등록코드 및 프록시 설정 파일을 복사합니다.

AWS_Workspaces_Repackages.VBS :

' Option Explicit 부터 시작되며 ReturnError = CopySettings() 가 끝나는 부분입니다.
\\100.100.100.100\AWSWS\ 이 부분이 아래 스크립트에서 참조한 공유폴더 위치이며 실제 공유폴더 IP 및 경로로 변경하여야 스크립트가 동작합니다. 아울러 이 스크립트는 환경에 맞게 얼마든지 수정하여 사용 하실 수 있으며 반드시 사전에 배포 테스트를 한후 적용해 주시기 바랍니다.
특히 WorkSpace Client 를 복사하는 부분에서 동시에 많은 사용자가 로그온 하여 네트워크 대역폭 문제가 발생할 수 있으니 OU 마다 단계적으로 적용을 해주시기 바랍니다. ( WorkSpaces Clinet 크기는 대략 350~400MB 이내 입니다.)

' Option Explicit
On Error Resume Next
' Installs AWS WorkSpaces for Windows
' EnablePreLauch Registration Code
' URL on desktop

'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Function CopyFiles()

   Dim FSO
   Set FSO=CreateObject("Scripting.FileSystemObject")

   If FSO.FileExists("C:\ProgramData\Amazon+WorkSpaces.msi")  Then
   	
   Else
   FSO.CopyFile "\\100.100.100.100\AWSWS\WorkSpacesClient\*", "C:\ProgramData\",True	
     
   End If

   CopyFiles = returnError

End Function
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Function InstallWorkSpacesClient() 

	Dim WshShell, objFSO, strCurrentDirectory, strCommand

	Set WshShell 		= CreateObject("WScript.Shell")
	Set objFSO          	= CreateObject("Scripting.FileSystemObject")
    	strCurrentDirectory 	= objFSO.GetAbsolutePathName(".")
	strCommand 		= chr(34) & "C:\ProgramData\Amazon+WorkSpaces.msi" & Chr(34) & "/qn" & "ALLUSERS=1"
	WshShell.Run strCommand, 0, True 
    
	InstallWorkSpacesClient = "1"

End Function
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Function ExcuteWorkSpacesClient() 

	Dim objNetwork
	Dim userName
	Dim objFSO
	Dim oShell

	Set WshShell 		= CreateObject("WScript.Shell")
	Set objFSO          	= CreateObject("Scripting.FileSystemObject")
	Set oShell		= WScript.CreateObject ("WSCript.shell")
	Set objNetwork 		= CreateObject("WScript.Network")

	userName = objNetwork.userName
	userProfile = oShell.ExpandEnvironmentStrings( "%userprofile%" )

	If NOT (objFSO.FolderExists(userProfile + "\AppData\Local\Amazon Web Services\Amazon WorkSpaces\")) Then
	WshShell.Run """C:\Program Files\Amazon Web Services, Inc\Amazon WorkSpaces\workspaces.exe" 
	WScript.Sleep 20000
	oShell.Run "taskkill /f /im workspaces.exe", 0, True
	Else

	End If

	ExcuteWorkSpacesClient = "1"

End Function

'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Function CopyURL()

    Const OverwriteExisting = True
    Dim returnError, strDesktop, strFavorite, strSystem32
    Dim wshShell, objProcess, objFSO

    returnError = 0

    Set wshShell = CreateObject( "WScript.Shell" )
    Set objProcess = wshShell.Environment("Process")
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    strDesktop = objProcess.Item("UserProfile") & "\Desktop\"
    returnError = objFSO.CopyFile( "\\100.100.100.100\AWSWS\Desktop\*.*", strDesktop, OverwriteExisting)

End Function
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Function CopySettings()
  
    Const OverwriteExisting = True
    Dim oShell 
    Dim returnError, strDesktop
    Dim wshShell, objFSO
    
    returnError = 0

    Set oShell = CreateObject("WScript.Shell")
    Set wshShell = CreateObject( "WScript.Shell" )
    Set objProcess = wshShell.Environment("Process")
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    strDesktop = objProcess.Item("UserProfile") & "\AppData\Local\Amazon Web Services\Amazon WorkSpaces\"
    returnError = objFSO.CopyFile( "\\100.100.100.100\AWSWS\UserSettings\*.*", strDesktop, OverwriteExisting)

End Function
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Dim objFSO, objFile

errorCount = 0

Dim ReturnError
Dim Res
Dim FSO
Set FSO=CreateObject("Scripting.FileSystemObject")


If FSO.FileExists("C:\ProgramData\Amazon+WorkSpaces.msi") Then
	wscript.quit 1

Else

End If

ReturnError = CopyFiles()

ReturnError = InstallWorkSpacesClient()

ReturnError = ExcuteWorkSpacesClient()

ReturnError = CopyURL()

ReturnError = CopySettings()

5. 아래는 이 스크립트를 관리자 권한으로 실행하는 스크립트 입니다. WorkSpaces Client 를 Silent 모드로 설치를 하려면 반드시 관리자 권한이 필요합니다. 아래의 내용을 메모장으로 복사한후 Execute.vbs 파일로 저장합니다.

Set objShell = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
strPath = FSO.GetParentFolderName (WScript.ScriptFullName)
If FSO.FileExists(strPath & "\AWS_Workspaces_Repackages.vbs") Then
     objShell.ShellExecute "wscript.exe", _ 
        Chr(34) & strPath & "\AWS_Workspaces_Repackages.vbs" & Chr(34), "", "runas", 1
Else
     MsgBox "Script file not found"
End If

6. Active Directory 에서 그룹정책을 만들고 스크립트를 적용하는 예제 입니다.

6.1 Active Directory 나 Active Directory를 관리하는 서버에서 gpmc.msc를 실행합니다.

6.2 정책을 적용할 OU를 확인 한 후 새로운 그룹정책을 생섭합니다.

6.3 User Configuration -> Windows Settings -> Script(Logon/Logoff) -> Logon 을 선택합니다.

6.4 Show Files 항목을 클릭하면 파일탐색기에 해당 정책의 Sysvol 하위폴더가 나타납니다. 여기에 아래와 같이 Execute.vbs 과 AWS_Workspaces_Repackages.vbs 파일을 업로드 합니다.

6.1

6.5 Add 버튼을 누른다음 Execute.vbs 파일만 선택한 후 OK 버튼을 클릭합니다. 그리고 다시 OK버튼을 클릭 한후 생성한 그룹정책을 OU에 적용합니다.

6.2

7. 정상적으로 그룹정책이 적용되어 WorkSpaces Client가 설치되는지 확인합니다.

7.1 로그온 정책이므로 로컬 디바이스를 로그오프 한후 도메인 계정으로 로그온 합니다.

7.2 계정으로 로그온 시 5분 내에 바탕화면에 Amazon WorkSpaces 아이콘이 생성됩니다.

7.3 그 후 WorkSpaces Client가 자동 실행되며 Registion Code 를 넣어야 되는 초기 화면이 5초~10초정도 보이다가 사라집니다.

7.4 그 후 바탕화면에 업무망 WorkSpaces 와 인터넷 망 WorkSpaces 바로가기 가 복사되니다.

7.5 바탕화면의 Amazon WorkSpaces 를 실행하면 RegistrationList.json 파일과 UserSettings.json 파일 에 설정된 대로 Registion Code는 입력된 채로 프록시 설정을 하였다면 프록시 설정이 되어 있는 상태로 WorkSpaces Client가 실행됩니다.

7.1

profile pictureAWS
지원 엔지니어
게시됨 5달 전543회 조회