PoshCode Archive  Hex Artifact Content

Artifact 3731f3178a9770b56d4f0222c2417862d016c4af012c56f9bd2aa69c9654e7b6:

  • File TSRemoteApp.ps1 — part of check-in [3a93297aac] at 2018-06-10 13:09:22 on branch trunk — Module gives functions for managing RemoteApp on Windows 2008 and Windows 2008 R2. (user: unknown size: 23066)

0000: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 61 73 63 69  # encoding: asci
0010: 69 0d 0a 23 20 61 70 69 3a 20 70 6f 77 65 72 73  i..# api: powers
0020: 68 65 6c 6c 0d 0a 23 20 74 69 74 6c 65 3a 20 54  hell..# title: T
0030: 53 52 65 6d 6f 74 65 41 70 70 0d 0a 23 20 64 65  SRemoteApp..# de
0040: 73 63 72 69 70 74 69 6f 6e 3a 20 4d 6f 64 75 6c  scription: Modul
0050: 65 20 67 69 76 65 73 20 66 75 6e 63 74 69 6f 6e  e gives function
0060: 73 20 66 6f 72 20 6d 61 6e 61 67 69 6e 67 20 52  s for managing R
0070: 65 6d 6f 74 65 41 70 70 20 6f 6e 20 57 69 6e 64  emoteApp on Wind
0080: 6f 77 73 20 32 30 30 38 20 61 6e 64 20 57 69 6e  ows 2008 and Win
0090: 64 6f 77 73 20 32 30 30 38 20 52 32 2e 0d 0a 23  dows 2008 R2...#
00a0: 20 76 65 72 73 69 6f 6e 3a 20 36 2e 31 0d 0a 23   version: 6.1..#
00b0: 20 74 79 70 65 3a 20 66 75 6e 63 74 69 6f 6e 0d   type: function.
00c0: 0a 23 20 6c 69 63 65 6e 73 65 3a 20 43 43 30 0d  .# license: CC0.
00d0: 0a 23 20 66 75 6e 63 74 69 6f 6e 3a 20 4e 65 77  .# function: New
00e0: 2d 54 53 52 65 6d 6f 74 65 41 70 70 0d 0a 23 20  -TSRemoteApp..# 
00f0: 78 2d 70 6f 73 68 63 6f 64 65 2d 69 64 3a 20 32  x-poshcode-id: 2
0100: 33 38 32 0d 0a 23 20 78 2d 61 72 63 68 69 76 65  382..# x-archive
0110: 64 3a 20 32 30 31 30 2d 31 31 2d 33 30 54 31 36  d: 2010-11-30T16
0120: 3a 34 33 3a 30 32 0d 0a 23 0d 0a 23 20 59 6f 75  :43:02..#..# You
0130: 20 63 61 6e 20 43 72 65 61 74 65 2c 52 65 6d 6f   can Create,Remo
0140: 76 65 20 61 6e 64 20 6c 69 73 74 20 52 65 6d 6f  ve and list Remo
0150: 74 65 41 70 70 73 2e 20 41 6c 73 6f 20 59 6f 75  teApps. Also You
0160: 20 63 61 6e 20 49 6d 70 6f 72 74 20 61 6e 64 20   can Import and 
0170: 45 78 70 6f 72 74 20 53 65 74 74 69 6e 67 73 20  Export Settings 
0180: 61 6e 64 20 52 65 6d 6f 74 65 41 70 70 73 2c 20  and RemoteApps, 
0190: 75 73 69 6e 67 20 54 53 50 55 42 2d 66 69 6c 65  using TSPUB-file
01a0: 2c 20 77 68 69 63 68 20 75 73 65 64 20 69 6e 20  , which used in 
01b0: 54 65 72 6d 69 6e 61 6c 20 53 65 72 76 69 63 65  Terminal Service
01c0: 73 2e 0d 0a 23 0d 0a 66 75 6e 63 74 69 6f 6e 20  s...#..function 
01d0: 4e 65 77 2d 54 53 52 65 6d 6f 74 65 41 70 70 20  New-TSRemoteApp 
01e0: 7b 0d 0a 3c 23 0d 0a 2e 53 59 4e 4f 50 53 49 53  {..<#...SYNOPSIS
01f0: 0d 0a 43 72 65 61 74 65 73 20 61 20 6e 65 77 20  ..Creates a new 
0200: 52 65 6d 6f 74 65 41 70 70 20 6f 6e 20 57 69 6e  RemoteApp on Win
0210: 64 6f 77 73 20 53 65 72 76 65 72 20 32 30 30 38  dows Server 2008
0220: 20 54 65 72 6d 69 6e 61 6c 20 53 65 72 76 65 72   Terminal Server
0230: 2e 0d 0a 2e 44 45 53 43 52 49 50 54 49 4f 4e 0d  ....DESCRIPTION.
0240: 0a 43 72 65 61 74 65 73 20 61 20 6e 65 77 20 52  .Creates a new R
0250: 65 6d 6f 74 65 41 70 70 20 75 73 69 6e 67 20 74  emoteApp using t
0260: 68 65 20 73 75 70 70 6c 69 65 64 20 70 61 72 61  he supplied para
0270: 6d 65 74 65 72 73 2e 0d 0a 2e 50 41 52 41 4d 45  meters....PARAME
0280: 54 45 52 20 41 6c 69 61 73 0d 0a 41 6c 69 61 73  TER Alias..Alias
0290: 20 66 6f 72 20 74 68 65 20 6e 65 77 20 52 65 6d   for the new Rem
02a0: 6f 74 65 41 70 70 2e 20 41 63 63 65 70 74 73 20  oteApp. Accepts 
02b0: 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e  ValueFromPipelin
02c0: 65 20 61 6e 64 20 56 61 6c 75 65 46 72 6f 6d 50  e and ValueFromP
02d0: 69 70 65 6c 69 6e 65 42 79 50 72 6f 70 65 72 74  ipelineByPropert
02e0: 79 4e 61 6d 65 2e 0d 0a 2e 50 41 52 41 4d 45 54  yName....PARAMET
02f0: 45 52 20 41 70 70 6c 69 63 61 74 69 6f 6e 70 61  ER Applicationpa
0300: 74 68 0d 0a 50 61 74 68 20 74 6f 20 74 68 65 20  th..Path to the 
0310: 65 78 65 63 75 74 61 62 6c 65 20 66 69 6c 65 20  executable file 
0320: 66 6f 72 20 66 6f 72 20 74 68 65 20 6e 65 77 20  for for the new 
0330: 52 65 6d 6f 74 65 41 70 70 2e 20 54 68 69 73 20  RemoteApp. This 
0340: 66 69 6c 65 20 6d 75 73 74 20 65 78 69 73 74 20  file must exist 
0350: 62 65 66 6f 72 65 20 63 72 65 61 74 69 6e 67 20  before creating 
0360: 74 68 65 20 6e 65 77 20 52 65 6d 6f 74 65 41 70  the new RemoteAp
0370: 70 2e 0d 0a 41 63 63 65 70 74 73 20 56 61 6c 75  p...Accepts Valu
0380: 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 20 61 6e  eFromPipeline an
0390: 64 20 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c  d ValueFromPipel
03a0: 69 6e 65 42 79 50 72 6f 70 65 72 74 79 4e 61 6d  ineByPropertyNam
03b0: 65 2e 0d 0a 2e 50 41 52 41 4d 45 54 45 52 20 44  e....PARAMETER D
03c0: 69 73 70 6c 61 79 6e 61 6d 65 0d 0a 44 69 73 70  isplayname..Disp
03d0: 6c 61 79 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  layname for the 
03e0: 6e 65 77 20 52 65 6d 6f 74 65 41 70 70 2e 20 54  new RemoteApp. T
03f0: 68 69 73 20 69 73 20 74 68 65 20 61 70 70 6c 69  his is the appli
0400: 63 61 74 69 6f 6e 20 6e 61 6d 65 20 74 68 65 20  cation name the 
0410: 75 73 65 72 73 20 77 69 6c 6c 20 73 65 65 2e 20  users will see. 
0420: 41 63 63 65 70 74 73 20 56 61 6c 75 65 46 72 6f  Accepts ValueFro
0430: 6d 50 69 70 65 6c 69 6e 65 20 61 6e 64 20 56 61  mPipeline and Va
0440: 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 42  lueFromPipelineB
0450: 79 50 72 6f 70 65 72 74 79 4e 61 6d 65 2e 0d 0a  yPropertyName...
0460: 2e 50 41 52 41 4d 45 54 45 52 20 53 68 6f 77 69  .PARAMETER Showi
0470: 6e 52 44 57 65 62 41 63 63 65 73 73 0d 0a 54 72  nRDWebAccess..Tr
0480: 75 65 20 6f 72 20 66 61 6c 73 65 2e 20 44 65 74  ue or false. Det
0490: 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 52  ermines if the R
04a0: 65 6d 6f 74 65 41 70 70 20 73 68 6f 75 6c 64 20  emoteApp should 
04b0: 62 65 20 76 69 73 69 62 6c 65 20 69 6e 20 52 44  be visible in RD
04c0: 20 57 65 62 20 41 63 63 65 73 73 2e 20 44 65 66   Web Access. Def
04d0: 61 75 6c 74 73 20 74 6f 20 74 72 75 65 20 69 66  aults to true if
04e0: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 69   the parameter i
04f0: 73 20 6f 6d 69 74 74 65 64 2e 20 41 63 63 65 70  s omitted. Accep
0500: 74 73 20 56 61 6c 75 65 46 72 6f 6d 50 69 70 65  ts ValueFromPipe
0510: 6c 69 6e 65 20 61 6e 64 20 56 61 6c 75 65 46 72  line and ValueFr
0520: 6f 6d 50 69 70 65 6c 69 6e 65 42 79 50 72 6f 70  omPipelineByProp
0530: 65 72 74 79 4e 61 6d 65 2e 0d 0a 2e 50 41 52 41  ertyName....PARA
0540: 4d 45 54 45 52 20 43 6f 6d 6d 61 6e 64 6c 69 6e  METER Commandlin
0550: 65 53 65 74 74 69 6e 67 0d 0a 30 20 3d 20 44 6f  eSetting..0 = Do
0560: 20 6e 6f 74 20 61 6c 6c 6f 77 20 63 6f 6d 6d 61   not allow comma
0570: 6e 64 2d 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74  nd-line argument
0580: 73 2c 20 31 20 3d 20 41 6c 6c 6f 77 20 61 6e 79  s, 1 = Allow any
0590: 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 61 72   command-line ar
05a0: 67 75 6d 65 6e 74 73 20 28 6e 6f 74 20 72 65 63  guments (not rec
05b0: 6f 6d 6d 65 6e 64 65 64 29 2c 20 32 20 3d 20 41  ommended), 2 = A
05c0: 6c 77 61 79 73 20 75 73 65 20 74 68 65 20 66 6f  lways use the fo
05d0: 6c 6c 6f 77 69 6e 67 20 63 6f 6d 6d 61 6e 64 2d  llowing command-
05e0: 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74 73 0d 0a  line arguments..
05f0: 2e 50 41 52 41 4d 45 54 45 52 20 43 6f 6d 6d 61  .PARAMETER Comma
0600: 6e 64 6c 69 6e 65 41 72 67 75 6d 65 6e 74 73 0d  ndlineArguments.
0610: 0a 43 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 20 61  .Command-line  a
0620: 72 67 75 6d 65 6e 74 20 74 6f 20 62 65 20 75 73  rgument to be us
0630: 65 64 20 77 68 65 6e 20 73 74 61 72 74 69 6e 67  ed when starting
0640: 20 74 68 65 20 6e 65 77 20 52 65 6d 6f 74 65 41   the new RemoteA
0650: 70 70 0d 0a 2e 45 58 41 4d 50 4c 45 0d 0a 4e 65  pp...EXAMPLE..Ne
0660: 77 2d 54 53 52 65 6d 6f 74 65 41 70 70 20 2d 41  w-TSRemoteApp -A
0670: 6c 69 61 73 20 4e 6f 74 65 70 61 64 20 2d 41 70  lias Notepad -Ap
0680: 70 6c 69 63 61 74 69 6f 6e 70 61 74 68 20 22 25  plicationpath "%
0690: 77 69 6e 64 69 72 25 5c 73 79 73 74 65 6d 33 32  windir%\system32
06a0: 5c 6e 6f 74 65 70 61 64 2e 65 78 65 22 20 2d 44  \notepad.exe" -D
06b0: 69 73 70 6c 61 79 6e 61 6d 65 20 4e 6f 74 65 70  isplayname Notep
06c0: 61 64 20 2d 53 68 6f 77 69 6e 52 44 57 65 62 41  ad -ShowinRDWebA
06d0: 63 63 65 73 73 20 24 66 61 6c 73 65 0d 0a 2e 45  ccess $false...E
06e0: 58 41 4d 50 4c 45 0d 0a 4e 65 77 2d 54 53 52 65  XAMPLE..New-TSRe
06f0: 6d 6f 74 65 41 70 70 20 2d 41 6c 69 61 73 20 43  moteApp -Alias C
0700: 61 6c 63 20 2d 41 70 70 6c 69 63 61 74 69 6f 6e  alc -Application
0710: 70 61 74 68 20 22 25 77 69 6e 64 69 72 25 5c 73  path "%windir%\s
0720: 79 73 74 65 6d 33 32 5c 63 61 6c 63 2e 65 78 65  ystem32\calc.exe
0730: 22 20 2d 44 69 73 70 6c 61 79 6e 61 6d 65 20 43  " -Displayname C
0740: 61 6c 63 75 6c 61 74 6f 72 20 2d 43 6f 6d 6d 61  alculator -Comma
0750: 6e 64 4c 69 6e 65 41 72 67 75 6d 65 6e 74 4d 6f  ndLineArgumentMo
0760: 64 65 20 32 20 2d 43 6f 6d 6d 61 6e 64 6c 69 6e  de 2 -Commandlin
0770: 65 41 72 67 75 6d 65 6e 74 73 20 27 2f 4d 79 43  eArguments '/MyC
0780: 75 73 74 6f 6d 50 61 72 61 6d 65 74 65 72 27 0d  ustomParameter'.
0790: 0a 2e 4e 4f 54 45 53 0d 0a 41 55 54 48 4f 52 3a  ..NOTES..AUTHOR:
07a0: 20 20 20 20 57 69 7a 61 72 64 65 6e 0d 0a 4c 41      Wizarden..LA
07b0: 53 54 45 44 49 54 3a 20 20 32 30 2e 31 31 2e 32  STEDIT:  20.11.2
07c0: 30 31 30 20 0d 0a 53 4f 55 52 43 45 3a 20 20 20  010 ..SOURCE:   
07d0: 20 42 61 73 65 64 20 6f 6e 20 53 63 72 69 70 74   Based on Script
07e0: 20 62 79 20 4a 61 6e 20 45 67 69 6c 20 52 69 6e   by Jan Egil Rin
07f0: 67 20 61 6e 64 20 52 65 62 75 69 6c 64 65 64 20  g and Rebuilded 
0800: 66 6f 72 20 57 69 6e 64 6f 77 73 20 32 30 30 38  for Windows 2008
0810: 20 53 65 72 76 65 72 0d 0a 23 3e 0d 0a 0d 0a 5b   Server..#>....[
0820: 43 6d 64 6c 65 74 42 69 6e 64 69 6e 67 28 29 5d  CmdletBinding()]
0830: 0d 0a 20 20 20 20 70 61 72 61 6d 20 28 0d 0a 20  ..    param (.. 
0840: 20 20 20 20 20 20 20 5b 70 61 72 61 6d 65 74 65         [paramete
0850: 72 28 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75  r(Mandatory=$tru
0860: 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c  e,ValueFromPipel
0870: 69 6e 65 3d 24 74 72 75 65 2c 56 61 6c 75 65 46  ine=$true,ValueF
0880: 72 6f 6d 50 69 70 65 6c 69 6e 65 42 79 50 72 6f  romPipelineByPro
0890: 70 65 72 74 79 4e 61 6d 65 3d 24 74 72 75 65 29  pertyName=$true)
08a0: 5d 0d 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69  ]..        [stri
08b0: 6e 67 5d 24 41 6c 69 61 73 2c 0d 0a 20 20 20 20  ng]$Alias,..    
08c0: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 5b       ..        [
08d0: 70 61 72 61 6d 65 74 65 72 28 4d 61 6e 64 61 74  parameter(Mandat
08e0: 6f 72 79 3d 24 74 72 75 65 2c 56 61 6c 75 65 46  ory=$true,ValueF
08f0: 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24 74 72 75  romPipeline=$tru
0900: 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c  e,ValueFromPipel
0910: 69 6e 65 42 79 50 72 6f 70 65 72 74 79 4e 61 6d  ineByPropertyNam
0920: 65 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20 20 20  e=$true)]..     
0930: 20 20 20 5b 73 74 72 69 6e 67 5d 24 41 70 70 6c     [string]$Appl
0940: 69 63 61 74 69 6f 6e 70 61 74 68 2c 0d 0a 20 20  icationpath,..  
0950: 20 20 20 20 20 20 5b 70 61 72 61 6d 65 74 65 72        [parameter
0960: 28 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69  (ValueFromPipeli
0970: 6e 65 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72  ne=$true,ValueFr
0980: 6f 6d 50 69 70 65 6c 69 6e 65 42 79 50 72 6f 70  omPipelineByProp
0990: 65 72 74 79 4e 61 6d 65 3d 24 74 72 75 65 29 5d  ertyName=$true)]
09a0: 0d 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e  ..        [strin
09b0: 67 5d 24 44 69 73 70 6c 61 79 6e 61 6d 65 2c 0d  g]$Displayname,.
09c0: 0a 20 20 20 20 20 20 20 20 5b 70 61 72 61 6d 65  .        [parame
09d0: 74 65 72 28 56 61 6c 75 65 46 72 6f 6d 50 69 70  ter(ValueFromPip
09e0: 65 6c 69 6e 65 3d 24 74 72 75 65 2c 56 61 6c 75  eline=$true,Valu
09f0: 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 42 79 50  eFromPipelineByP
0a00: 72 6f 70 65 72 74 79 4e 61 6d 65 3d 24 74 72 75  ropertyName=$tru
0a10: 65 29 5d 0d 0a 20 20 20 20 20 20 20 20 5b 62 6f  e)]..        [bo
0a20: 6f 6c 65 61 6e 5d 24 53 68 6f 77 69 6e 52 44 57  olean]$ShowinRDW
0a30: 65 62 41 63 63 65 73 73 20 3d 20 24 74 72 75 65  ebAccess = $true
0a40: 2c 0d 0a 20 20 20 20 20 20 20 20 5b 70 61 72 61  ,..        [para
0a50: 6d 65 74 65 72 28 56 61 6c 75 65 46 72 6f 6d 50  meter(ValueFromP
0a60: 69 70 65 6c 69 6e 65 3d 24 74 72 75 65 2c 56 61  ipeline=$true,Va
0a70: 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 42  lueFromPipelineB
0a80: 79 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d 24 74  yPropertyName=$t
0a90: 72 75 65 29 5d 0d 0a 20 20 20 20 20 20 20 20 5b  rue)]..        [
0aa0: 69 6e 74 5d 24 43 6f 6d 6d 61 6e 64 6c 69 6e 65  int]$Commandline
0ab0: 53 65 74 74 69 6e 67 2c 0d 0a 20 20 20 20 20 20  Setting,..      
0ac0: 20 20 5b 70 61 72 61 6d 65 74 65 72 28 56 61 6c    [parameter(Val
0ad0: 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24  ueFromPipeline=$
0ae0: 74 72 75 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69  true,ValueFromPi
0af0: 70 65 6c 69 6e 65 42 79 50 72 6f 70 65 72 74 79  pelineByProperty
0b00: 4e 61 6d 65 3d 24 74 72 75 65 29 5d 0d 0a 20 20  Name=$true)]..  
0b10: 20 20 20 20 20 20 24 43 6f 6d 6d 61 6e 64 6c 69        $Commandli
0b20: 6e 65 41 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  neArguments..   
0b30: 20 20 20 20 20 20 0d 0a 20 20 20 20 29 0d 0a 0d        ..    )...
0b40: 0a 23 43 68 65 63 6b 20 41 70 70 6c 69 63 61 74  .#Check Applicat
0b50: 69 6f 6e 20 66 6f 72 20 45 78 69 73 74 61 6e 63  ion for Existanc
0b60: 65 0d 0a 69 66 20 28 28 47 65 74 2d 57 6d 69 4f  e..if ((Get-WmiO
0b70: 62 6a 65 63 74 20 2d 4e 61 6d 65 73 70 61 63 65  bject -Namespace
0b80: 20 22 72 6f 6f 74 5c 43 49 4d 56 32 5c 54 65 72   "root\CIMV2\Ter
0b90: 6d 69 6e 61 6c 53 65 72 76 69 63 65 73 22 20 2d  minalServices" -
0ba0: 51 75 65 72 79 20 22 73 65 6c 65 63 74 20 2a 20  Query "select * 
0bb0: 66 72 6f 6d 20 57 69 6e 33 32 5f 54 53 50 75 62  from Win32_TSPub
0bc0: 6c 69 73 68 65 64 41 70 70 6c 69 63 61 74 69 6f  lishedApplicatio
0bd0: 6e 20 77 68 65 72 65 20 61 6c 69 61 73 20 3d 20  n where alias = 
0be0: 27 24 41 6c 69 61 73 27 22 29 20 2d 6e 65 20 24  '$Alias'") -ne $
0bf0: 6e 75 6c 6c 29 20 7b 0d 0a 09 57 72 69 74 65 2d  null) {...Write-
0c00: 57 61 72 6e 69 6e 67 20 22 54 68 65 20 61 70 70  Warning "The app
0c10: 6c 69 63 61 74 69 6f 6e 20 24 61 6c 69 61 73 20  lication $alias 
0c20: 61 6c 72 65 61 64 79 20 65 78 69 73 74 21 22 0d  already exist!".
0c30: 0a 09 72 65 74 75 72 6e 0d 0a 7d 0d 0a 0d 0a 23  ..return..}....#
0c40: 43 72 65 61 74 65 20 6e 65 77 20 4f 62 6a 65 63  Create new Objec
0c50: 74 0d 0a 24 6e 65 77 61 70 70 20 3d 20 28 5b 77  t..$newapp = ([w
0c60: 6d 69 63 6c 61 73 73 5d 22 52 4f 4f 54 5c 43 49  miclass]"ROOT\CI
0c70: 4d 56 32 5c 54 65 72 6d 69 6e 61 6c 53 65 72 76  MV2\TerminalServ
0c80: 69 63 65 73 3a 57 69 6e 33 32 5f 54 53 50 75 62  ices:Win32_TSPub
0c90: 6c 69 73 68 65 64 41 70 70 6c 69 63 61 74 69 6f  lishedApplicatio
0ca0: 6e 22 29 2e 43 72 65 61 74 65 49 6e 73 74 61 6e  n").CreateInstan
0cb0: 63 65 28 29 0d 0a 24 6e 65 77 61 70 70 2e 41 6c  ce()..$newapp.Al
0cc0: 69 61 73 20 3d 20 24 41 6c 69 61 73 0d 0a 24 6e  ias = $Alias..$n
0cd0: 65 77 61 70 70 2e 50 61 74 68 20 3d 20 5b 53 79  ewapp.Path = [Sy
0ce0: 73 74 65 6d 2e 45 6e 76 69 72 6f 6e 6d 65 6e 74  stem.Environment
0cf0: 5d 3a 3a 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e  ]::ExpandEnviron
0d00: 6d 65 6e 74 56 61 72 69 61 62 6c 65 73 28 24 41  mentVariables($A
0d10: 70 70 6c 69 63 61 74 69 6f 6e 70 61 74 68 29 0d  pplicationpath).
0d20: 0a 24 6e 65 77 61 70 70 2e 56 50 61 74 68 20 3d  .$newapp.VPath =
0d30: 20 24 41 70 70 6c 69 63 61 74 69 6f 6e 70 61 74   $Applicationpat
0d40: 68 0d 0a 0d 0a 23 43 6f 6e 66 69 67 75 72 65 20  h....#Configure 
0d50: 52 44 20 57 65 62 20 41 63 63 65 73 73 20 76 69  RD Web Access vi
0d60: 73 69 62 69 6c 69 74 79 0d 0a 24 6e 65 77 61 70  sibility..$newap
0d70: 70 2e 53 68 6f 77 49 6e 50 6f 72 74 61 6c 20 3d  p.ShowInPortal =
0d80: 20 24 53 68 6f 77 69 6e 52 44 57 65 62 41 63 63   $ShowinRDWebAcc
0d90: 65 73 73 0d 0a 0d 0a 23 43 6f 6e 66 69 67 75 72  ess....#Configur
0da0: 65 20 44 69 73 70 6c 61 79 6e 61 6d 65 0d 0a 69  e Displayname..i
0db0: 66 20 28 24 44 69 73 70 6c 61 79 6e 61 6d 65 29  f ($Displayname)
0dc0: 20 7b 0d 0a 09 24 6e 65 77 61 70 70 2e 4e 61 6d   {...$newapp.Nam
0dd0: 65 20 3d 20 24 44 69 73 70 6c 61 79 6e 61 6d 65  e = $Displayname
0de0: 0d 0a 7d 20 65 6c 73 65 20 7b 0d 0a 09 69 66 20  ..} else {...if 
0df0: 28 54 65 73 74 2d 50 61 74 68 20 24 41 70 70 6c  (Test-Path $Appl
0e00: 69 63 61 74 69 6f 6e 70 61 74 68 29 20 7b 0d 0a  icationpath) {..
0e10: 09 09 69 66 20 28 28 47 65 74 2d 49 74 65 6d 20  ..if ((Get-Item 
0e20: 24 41 70 70 6c 69 63 61 74 69 6f 6e 70 61 74 68  $Applicationpath
0e30: 29 2e 56 65 72 73 69 6f 6e 49 6e 66 6f 2e 46 69  ).VersionInfo.Fi
0e40: 6c 65 44 65 73 63 72 69 70 74 69 6f 6e 20 2d 6e  leDescription -n
0e50: 65 20 22 22 29 20 7b 0d 0a 09 09 09 24 6e 65 77  e "") {.....$new
0e60: 61 70 70 2e 4e 61 6d 65 20 3d 20 28 47 65 74 2d  app.Name = (Get-
0e70: 49 74 65 6d 20 24 41 70 70 6c 69 63 61 74 69 6f  Item $Applicatio
0e80: 6e 70 61 74 68 29 2e 56 65 72 73 69 6f 6e 49 6e  npath).VersionIn
0e90: 66 6f 2e 46 69 6c 65 44 65 73 63 72 69 70 74 69  fo.FileDescripti
0ea0: 6f 6e 0d 0a 09 09 7d 20 65 6c 73 65 20 7b 24 6e  on....} else {$n
0eb0: 65 77 61 70 70 2e 4e 61 6d 65 20 3d 20 28 47 65  ewapp.Name = (Ge
0ec0: 74 2d 49 74 65 6d 20 24 41 70 70 6c 69 63 61 74  t-Item $Applicat
0ed0: 69 6f 6e 70 61 74 68 29 2e 4e 61 6d 65 7d 0d 0a  ionpath).Name}..
0ee0: 09 7d 20 65 6c 73 65 20 7b 24 6e 65 77 61 70 70  .} else {$newapp
0ef0: 2e 4e 61 6d 65 20 3d 20 5b 53 79 73 74 65 6d 2e  .Name = [System.
0f00: 49 4f 2e 50 61 74 68 5d 3a 3a 47 65 74 46 69 6c  IO.Path]::GetFil
0f10: 65 4e 61 6d 65 57 69 74 68 6f 75 74 45 78 74 65  eNameWithoutExte
0f20: 6e 73 69 6f 6e 28 24 41 70 70 6c 69 63 61 74 69  nsion($Applicati
0f30: 6f 6e 70 61 74 68 29 7d 0d 0a 7d 0d 0a 0d 0a 23  onpath)}..}....#
0f40: 43 6f 6e 66 69 67 75 72 65 20 43 6f 6d 6d 61 6e  Configure Comman
0f50: 64 4c 69 6e 65 53 65 74 74 69 6e 67 0d 0a 69 66  dLineSetting..if
0f60: 20 28 24 43 6f 6d 6d 61 6e 64 6c 69 6e 65 53 65   ($CommandlineSe
0f70: 74 74 69 6e 67 20 2d 6e 65 20 24 6e 75 6c 6c 20  tting -ne $null 
0f80: 2d 61 6e 64 20 24 43 6f 6d 6d 61 6e 64 6c 69 6e  -and $Commandlin
0f90: 65 53 65 74 74 69 6e 67 20 2d 6e 65 20 32 29 20  eSetting -ne 2) 
0fa0: 7b 0d 0a 09 24 6e 65 77 61 70 70 2e 43 6f 6d 6d  {...$newapp.Comm
0fb0: 61 6e 64 4c 69 6e 65 53 65 74 74 69 6e 67 20 3d  andLineSetting =
0fc0: 20 24 43 6f 6d 6d 61 6e 64 6c 69 6e 65 53 65 74   $CommandlineSet
0fd0: 74 69 6e 67 0d 0a 7d 20 65 6c 73 65 20 7b 24 6e  ting..} else {$n
0fe0: 65 77 61 70 70 2e 43 6f 6d 6d 61 6e 64 4c 69 6e  ewapp.CommandLin
0ff0: 65 53 65 74 74 69 6e 67 20 3d 20 30 7d 0d 0a 0d  eSetting = 0}...
1000: 0a 23 43 6f 6e 66 69 67 75 72 65 20 43 6f 6d 6d  .#Configure Comm
1010: 61 6e 64 4c 69 6e 65 41 72 67 75 6d 65 6e 74 73  andLineArguments
1020: 0d 0a 69 66 20 28 24 43 6f 6d 6d 61 6e 64 6c 69  ..if ($Commandli
1030: 6e 65 41 72 67 75 6d 65 6e 74 73 20 2d 61 6e 64  neArguments -and
1040: 20 28 24 43 6f 6d 6d 61 6e 64 6c 69 6e 65 53 65   ($CommandlineSe
1050: 74 74 69 6e 67 20 2d 65 71 20 32 29 29 20 7b 0d  tting -eq 2)) {.
1060: 0a 09 69 66 20 28 24 43 6f 6d 6d 61 6e 64 6c 69  ..if ($Commandli
1070: 6e 65 41 72 67 75 6d 65 6e 74 73 2e 52 65 71 75  neArguments.Requ
1080: 69 72 65 64 43 6f 6d 6d 61 6e 64 6c 69 6e 65 29  iredCommandline)
1090: 20 7b 0d 0a 09 09 24 43 6f 6d 6d 61 6e 64 6c 69   {....$Commandli
10a0: 6e 65 41 72 67 75 6d 65 6e 74 73 20 3d 20 24 43  neArguments = $C
10b0: 6f 6d 6d 61 6e 64 6c 69 6e 65 41 72 67 75 6d 65  ommandlineArgume
10c0: 6e 74 73 2e 52 65 71 75 69 72 65 64 43 6f 6d 6d  nts.RequiredComm
10d0: 61 6e 64 6c 69 6e 65 0d 0a 09 7d 0d 0a 09 24 6e  andline...}...$n
10e0: 65 77 61 70 70 2e 43 6f 6d 6d 61 6e 64 4c 69 6e  ewapp.CommandLin
10f0: 65 53 65 74 74 69 6e 67 20 3d 20 24 43 6f 6d 6d  eSetting = $Comm
1100: 61 6e 64 6c 69 6e 65 53 65 74 74 69 6e 67 0d 0a  andlineSetting..
1110: 09 24 6e 65 77 61 70 70 2e 52 65 71 75 69 72 65  .$newapp.Require
1120: 64 43 6f 6d 6d 61 6e 64 4c 69 6e 65 20 3d 20 24  dCommandLine = $
1130: 43 6f 6d 6d 61 6e 64 6c 69 6e 65 41 72 67 75 6d  CommandlineArgum
1140: 65 6e 74 73 0d 0a 7d 0d 0a 0d 0a 23 43 6f 6e 66  ents..}....#Conf
1150: 69 67 75 72 65 20 49 63 6f 6e 73 0d 0a 24 6e 65  igure Icons..$ne
1160: 77 61 70 70 2e 49 63 6f 6e 49 6e 64 65 78 20 3d  wapp.IconIndex =
1170: 20 30 0d 0a 24 6e 65 77 61 70 70 2e 49 63 6f 6e   0..$newapp.Icon
1180: 50 61 74 68 20 3d 20 24 41 70 70 6c 69 63 61 74  Path = $Applicat
1190: 69 6f 6e 70 61 74 68 0d 0a 0d 0a 23 43 72 65 61  ionpath....#Crea
11a0: 74 65 20 44 65 66 61 75 6c 74 20 52 44 50 46 69  te Default RDPFi
11b0: 6c 65 43 6f 6e 74 65 6e 74 73 0d 0a 24 6e 65 77  leContents..$new
11c0: 61 70 70 2e 52 44 50 46 69 6c 65 43 6f 6e 74 65  app.RDPFileConte
11d0: 6e 74 73 3d 28 47 65 74 2d 57 6d 69 4f 62 6a 65  nts=(Get-WmiObje
11e0: 63 74 20 2d 43 6c 61 73 73 20 22 57 69 6e 33 32  ct -Class "Win32
11f0: 5f 54 53 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74  _TSDeploymentSet
1200: 74 69 6e 67 73 22 20 2d 4e 61 6d 65 73 70 61 63  tings" -Namespac
1210: 65 20 22 72 6f 6f 74 5c 43 49 4d 56 32 5c 54 65  e "root\CIMV2\Te
1220: 72 6d 69 6e 61 6c 53 65 72 76 69 63 65 73 22 29  rminalServices")
1230: 2e 44 65 70 6c 6f 79 6d 65 6e 74 52 44 50 53 65  .DeploymentRDPSe
1240: 74 74 69 6e 67 73 0d 0a 24 6e 65 77 61 70 70 2e  ttings..$newapp.
1250: 52 44 50 46 69 6c 65 43 6f 6e 74 65 6e 74 73 2b  RDPFileContents+
1260: 3d 22 72 65 6d 6f 74 65 61 70 70 6c 69 63 61 74  ="remoteapplicat
1270: 69 6f 6e 6d 6f 64 65 3a 69 3a 31 22 0d 0a 24 6e  ionmode:i:1"..$n
1280: 65 77 61 70 70 2e 52 44 50 46 69 6c 65 43 6f 6e  ewapp.RDPFileCon
1290: 74 65 6e 74 73 2b 3d 22 61 6c 74 65 72 6e 61 74  tents+="alternat
12a0: 65 20 73 68 65 6c 6c 3a 73 3a 7c 7c 24 41 6c 69  e shell:s:||$Ali
12b0: 61 73 22 0d 0a 24 6e 65 77 61 70 70 2e 52 44 50  as"..$newapp.RDP
12c0: 46 69 6c 65 43 6f 6e 74 65 6e 74 73 2b 3d 22 72  FileContents+="r
12d0: 65 6d 6f 74 65 61 70 70 6c 69 63 61 74 69 6f 6e  emoteapplication
12e0: 70 72 6f 67 72 61 6d 3a 73 3a 7c 7c 24 41 6c 69  program:s:||$Ali
12f0: 61 73 22 0d 0a 24 6e 65 77 61 70 70 2e 52 44 50  as"..$newapp.RDP
1300: 46 69 6c 65 43 6f 6e 74 65 6e 74 73 2b 3d 22 72  FileContents+="r
1310: 65 6d 6f 74 65 61 70 70 6c 69 63 61 74 69 6f 6e  emoteapplication
1320: 6e 61 6d 65 3a 73 3a 24 6e 65 77 61 70 70 2e 4e  name:s:$newapp.N
1330: 61 6d 65 22 0d 0a 24 6e 65 77 61 70 70 2e 52 44  ame"..$newapp.RD
1340: 50 46 69 6c 65 43 6f 6e 74 65 6e 74 73 2b 3d 22  PFileContents+="
1350: 72 65 6d 6f 74 65 61 70 70 6c 69 63 61 74 69 6f  remoteapplicatio
1360: 6e 63 6d 64 6c 69 6e 65 3a 73 3a 24 6e 65 77 61  ncmdline:s:$newa
1370: 70 70 2e 43 6f 6d 6d 61 6e 64 4c 69 6e 65 53 65  pp.CommandLineSe
1380: 74 74 69 6e 67 22 0d 0a 0d 0a 23 43 72 65 61 74  tting"....#Creat
1390: 65 20 6e 65 77 20 52 65 6d 6f 74 65 41 70 70 0d  e new RemoteApp.
13a0: 0a 24 6e 65 77 61 70 70 2e 50 75 74 28 29 20 7c  .$newapp.Put() |
13b0: 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 69 66 20 28 24   Out-Null..if ($
13c0: 3f 29 20 7b 57 72 69 74 65 2d 48 6f 73 74 20 22  ?) {Write-Host "
13d0: 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  The application 
13e0: 24 61 6c 69 61 73 20 77 61 73 20 73 75 63 63 65  $alias was succe
13f0: 73 66 75 6c 6c 79 20 63 72 65 61 74 65 64 22 20  sfully created" 
1400: 2d 46 6f 72 65 67 72 6f 75 6e 64 43 6f 6c 6f 72  -ForegroundColor
1410: 20 79 65 6c 6c 6f 77 7d 0d 0a 0d 0a 7d 0d 0a 0d   yellow}....}...
1420: 0a 66 75 6e 63 74 69 6f 6e 20 52 65 6d 6f 76 65  .function Remove
1430: 2d 54 53 52 65 6d 6f 74 65 41 70 70 20 7b 0d 0a  -TSRemoteApp {..
1440: 3c 23 0d 0a 2e 53 59 4e 4f 50 53 49 53 0d 0a 52  <#...SYNOPSIS..R
1450: 65 6d 6f 76 65 73 20 74 68 65 20 73 70 65 63 69  emoves the speci
1460: 66 69 65 64 20 52 65 6d 6f 74 65 41 70 70 20 66  fied RemoteApp f
1470: 72 6f 6d 20 74 68 65 20 57 69 6e 64 6f 77 73 20  rom the Windows 
1480: 32 30 30 38 20 54 65 72 6d 69 6e 61 6c 20 53 65  2008 Terminal Se
1490: 72 76 65 72 2e 0d 0a 2e 44 45 53 43 52 49 50 54  rver....DESCRIPT
14a0: 49 4f 4e 0d 0a 52 65 6d 6f 76 65 73 20 74 68 65  ION..Removes the
14b0: 20 73 70 65 63 69 66 69 65 64 20 52 65 6d 6f 74   specified Remot
14c0: 65 41 70 70 20 66 72 6f 6d 20 74 68 65 20 57 69  eApp from the Wi
14d0: 6e 64 6f 77 73 20 32 30 30 38 20 54 65 72 6d 69  ndows 2008 Termi
14e0: 6e 61 6c 20 53 65 72 76 65 72 2e 20 4f 6e 65 20  nal Server. One 
14f0: 6d 61 6e 64 61 74 6f 72 79 20 70 61 72 61 6d 65  mandatory parame
1500: 74 65 72 3a 20 41 6c 69 61 73 0d 0a 2e 50 41 52  ter: Alias...PAR
1510: 41 4d 45 54 45 52 20 41 6c 69 61 73 0d 0a 54 68  AMETER Alias..Th
1520: 65 20 61 6c 69 61 73 20 6f 66 20 74 68 65 20 61  e alias of the a
1530: 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 20 62 65  pplication to be
1540: 20 72 65 6d 6f 76 65 64 0d 0a 2e 45 58 41 4d 50   removed...EXAMP
1550: 4c 45 0d 0a 52 65 6d 6f 76 65 2d 54 53 52 65 6d  LE..Remove-TSRem
1560: 6f 74 65 41 70 70 20 2d 41 6c 69 61 73 20 43 61  oteApp -Alias Ca
1570: 6c 63 0d 0a 52 65 6d 6f 76 65 73 20 74 68 65 20  lc..Removes the 
1580: 43 61 6c 63 20 52 65 6d 6f 74 65 41 70 70 2e 0d  Calc RemoteApp..
1590: 0a 2e 45 58 41 4d 50 4c 45 0d 0a 47 65 74 2d 54  ..EXAMPLE..Get-T
15a0: 53 52 65 6d 6f 74 65 41 70 70 20 7c 20 46 6f 72  SRemoteApp | For
15b0: 65 61 63 68 2d 4f 62 6a 65 63 74 20 7b 52 65 6d  each-Object {Rem
15c0: 6f 76 65 2d 54 53 52 65 6d 6f 74 65 41 70 70 20  ove-TSRemoteApp 
15d0: 24 5f 2e 41 6c 69 61 73 7d 0d 0a 52 65 6d 6f 76  $_.Alias}..Remov
15e0: 65 73 20 61 6c 6c 20 52 65 6d 6f 74 65 41 70 70  es all RemoteApp
15f0: 73 2e 0d 0a 2e 4e 4f 54 45 53 0d 0a 41 55 54 48  s....NOTES..AUTH
1600: 4f 52 3a 20 20 20 20 57 69 7a 61 72 64 65 6e 0d  OR:    Wizarden.
1610: 0a 4c 41 53 54 45 44 49 54 3a 20 20 32 30 2e 31  .LASTEDIT:  20.1
1620: 31 2e 32 30 31 30 20 0d 0a 53 4f 55 52 43 45 3a  1.2010 ..SOURCE:
1630: 20 20 20 20 42 61 73 65 64 20 6f 6e 20 53 63 72      Based on Scr
1640: 69 70 74 20 62 79 20 4a 61 6e 20 45 67 69 6c 20  ipt by Jan Egil 
1650: 52 69 6e 67 20 61 6e 64 20 52 65 62 75 69 6c 64  Ring and Rebuild
1660: 65 64 20 66 6f 72 20 57 69 6e 64 6f 77 73 20 32  ed for Windows 2
1670: 30 30 38 20 53 65 72 76 65 72 0d 0a 23 3e 0d 0a  008 Server..#>..
1680: 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e 64 69 6e 67  ..[CmdletBinding
1690: 28 29 5d 0d 0a 20 20 20 20 70 61 72 61 6d 20 28  ()]..    param (
16a0: 0d 0a 20 20 20 20 20 20 20 20 5b 70 61 72 61 6d  ..        [param
16b0: 65 74 65 72 28 4d 61 6e 64 61 74 6f 72 79 3d 24  eter(Mandatory=$
16c0: 74 72 75 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69  true,ValueFromPi
16d0: 70 65 6c 69 6e 65 3d 24 74 72 75 65 2c 56 61 6c  peline=$true,Val
16e0: 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 42 79  ueFromPipelineBy
16f0: 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d 24 74 72  PropertyName=$tr
1700: 75 65 29 5d 0d 0a 20 20 20 20 20 20 20 20 5b 73  ue)]..        [s
1710: 74 72 69 6e 67 5d 24 41 6c 69 61 73 0d 0a 20 20  tring]$Alias..  
1720: 20 20 29 0d 0a 0d 0a 23 52 65 6d 6f 76 65 20 74    )....#Remove t
1730: 68 65 20 73 70 65 63 69 66 69 65 64 20 52 65 6d  he specified Rem
1740: 6f 74 65 41 70 70 0d 0a 24 41 70 70 73 20 3d 20  oteApp..$Apps = 
1750: 47 65 74 2d 57 6d 69 4f 62 6a 65 63 74 20 2d 43  Get-WmiObject -C
1760: 6c 61 73 73 20 22 57 69 6e 33 32 5f 54 53 50 75  lass "Win32_TSPu
1770: 62 6c 69 73 68 65 64 41 70 70 6c 69 63 61 74 69  blishedApplicati
1780: 6f 6e 22 20 2d 4e 61 6d 65 73 70 61 63 65 20 22  on" -Namespace "
1790: 72 6f 6f 74 5c 43 49 4d 56 32 5c 54 65 72 6d 69  root\CIMV2\Termi
17a0: 6e 61 6c 53 65 72 76 69 63 65 73 22 20 2d 46 69  nalServices" -Fi
17b0: 6c 74 65 72 20 22 41 6c 69 61 73 20 3d 20 27 24  lter "Alias = '$
17c0: 41 6c 69 61 73 27 22 0d 0a 0d 0a 69 66 20 28 2d  Alias'"....if (-
17d0: 6e 6f 74 20 24 41 70 70 73 29 20 7b 0d 0a 09 57  not $Apps) {...W
17e0: 72 69 74 65 2d 57 61 72 6e 69 6e 67 20 22 54 68  rite-Warning "Th
17f0: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 24 61  e application $a
1800: 6c 69 61 73 20 64 6f 65 73 6e 27 74 20 65 78 69  lias doesn't exi
1810: 73 74 21 22 3b 72 65 74 75 72 6e 0d 0a 7d 20 65  st!";return..} e
1820: 6c 73 65 20 7b 0d 0a 09 24 41 70 70 73 2e 44 65  lse {...$Apps.De
1830: 6c 65 74 65 28 29 20 7c 20 4f 75 74 2d 4e 75 6c  lete() | Out-Nul
1840: 6c 0d 0a 09 69 66 20 28 2d 6e 6f 74 20 28 47 65  l...if (-not (Ge
1850: 74 2d 57 6d 69 4f 62 6a 65 63 74 20 2d 43 6c 61  t-WmiObject -Cla
1860: 73 73 20 22 57 69 6e 33 32 5f 54 53 50 75 62 6c  ss "Win32_TSPubl
1870: 69 73 68 65 64 41 70 70 6c 69 63 61 74 69 6f 6e  ishedApplication
1880: 22 20 2d 4e 61 6d 65 73 70 61 63 65 20 22 72 6f  " -Namespace "ro
1890: 6f 74 5c 43 49 4d 56 32 5c 54 65 72 6d 69 6e 61  ot\CIMV2\Termina
18a0: 6c 53 65 72 76 69 63 65 73 22 20 2d 46 69 6c 74  lServices" -Filt
18b0: 65 72 20 22 41 6c 69 61 73 20 3d 20 27 24 41 6c  er "Alias = '$Al
18c0: 69 61 73 27 22 29 29 20 7b 0d 0a 09 09 57 72 69  ias'")) {....Wri
18d0: 74 65 2d 48 6f 73 74 20 22 54 68 65 20 61 70 70  te-Host "The app
18e0: 6c 69 63 61 74 69 6f 6e 20 24 61 6c 69 61 73 20  lication $alias 
18f0: 77 61 73 20 73 75 63 63 65 73 73 66 75 6c 6c 79  was successfully
1900: 20 72 65 6d 6f 76 65 64 22 20 2d 46 6f 72 65 67   removed" -Foreg
1910: 72 6f 75 6e 64 43 6f 6c 6f 72 20 79 65 6c 6c 6f  roundColor yello
1920: 77 0d 0a 09 7d 0d 0a 7d 0d 0a 0d 0a 7d 0d 0a 0d  w...}..}....}...
1930: 0a 66 75 6e 63 74 69 6f 6e 20 47 65 74 2d 54 53  .function Get-TS
1940: 52 65 6d 6f 74 65 41 70 70 20 7b 0d 0a 3c 23 0d  RemoteApp {..<#.
1950: 0a 2e 53 59 4e 4f 50 53 49 53 0d 0a 52 65 74 72  ..SYNOPSIS..Retr
1960: 69 65 76 65 73 20 69 6e 66 6f 20 61 62 6f 75 74  ieves info about
1970: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 52   the specified R
1980: 65 6d 6f 74 65 41 70 70 20 66 72 6f 6d 20 74 68  emoteApp from th
1990: 65 20 57 69 6e 64 6f 77 73 20 32 30 30 38 20 54  e Windows 2008 T
19a0: 65 72 6d 69 6e 61 6c 20 53 65 72 76 65 72 2e 0d  erminal Server..
19b0: 0a 2e 44 45 53 43 52 49 50 54 49 4f 4e 0d 0a 52  ..DESCRIPTION..R
19c0: 65 74 72 69 65 76 65 73 20 69 6e 66 6f 20 61 62  etrieves info ab
19d0: 6f 75 74 20 73 70 65 63 69 66 69 65 64 20 52 65  out specified Re
19e0: 6d 6f 74 65 41 70 70 20 66 72 6f 6d 20 74 68 65  moteApp from the
19f0: 20 57 69 6e 64 6f 77 73 20 32 30 30 38 20 54 65   Windows 2008 Te
1a00: 72 6d 69 6e 61 6c 20 53 65 72 76 65 72 2e 20 4f  rminal Server. O
1a10: 6e 65 20 6f 70 74 69 6f 6e 61 6c 20 70 61 72 61  ne optional para
1a20: 6d 65 74 65 72 3a 20 41 6c 69 61 73 0d 0a 49 66  meter: Alias..If
1a30: 20 41 6c 69 61 73 20 69 73 20 6f 6d 69 74 74 65   Alias is omitte
1a40: 64 2c 20 61 6c 6c 20 52 65 6d 6f 74 65 41 70 70  d, all RemoteApp
1a50: 73 20 61 72 65 20 72 65 74 75 72 6e 65 64 2e 0d  s are returned..
1a60: 0a 2e 50 41 52 41 4d 45 54 45 52 20 41 6c 69 61  ..PARAMETER Alia
1a70: 73 0d 0a 54 68 65 20 61 6c 69 61 73 20 6f 66 20  s..The alias of 
1a80: 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
1a90: 74 6f 20 62 65 20 72 65 74 69 72 69 76 65 64 0d  to be retirived.
1aa0: 0a 2e 45 58 41 4d 50 4c 45 0d 0a 47 65 74 2d 54  ..EXAMPLE..Get-T
1ab0: 53 52 65 6d 6f 74 65 41 70 70 20 2d 41 6c 69 61  SRemoteApp -Alia
1ac0: 73 20 43 61 6c 63 0d 0a 2e 4e 4f 54 45 53 0d 0a  s Calc...NOTES..
1ad0: 41 55 54 48 4f 52 3a 20 20 20 20 57 69 7a 61 72  AUTHOR:    Wizar
1ae0: 64 65 6e 0d 0a 4c 41 53 54 45 44 49 54 3a 20 20  den..LASTEDIT:  
1af0: 32 30 2e 31 31 2e 32 30 31 30 20 0d 0a 53 4f 55  20.11.2010 ..SOU
1b00: 52 43 45 3a 20 20 20 20 42 61 73 65 64 20 6f 6e  RCE:    Based on
1b10: 20 53 63 72 69 70 74 20 62 79 20 4a 61 6e 20 45   Script by Jan E
1b20: 67 69 6c 20 52 69 6e 67 20 61 6e 64 20 52 65 62  gil Ring and Reb
1b30: 75 69 6c 64 65 64 20 66 6f 72 20 57 69 6e 64 6f  uilded for Windo
1b40: 77 73 20 32 30 30 38 20 53 65 72 76 65 72 0d 0a  ws 2008 Server..
1b50: 23 3e 0d 0a 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e  #>....[CmdletBin
1b60: 64 69 6e 67 28 29 5d 0d 0a 20 20 20 20 70 61 72  ding()]..    par
1b70: 61 6d 20 28 0d 0a 20 20 20 20 20 20 20 20 5b 70  am (..        [p
1b80: 61 72 61 6d 65 74 65 72 28 4d 61 6e 64 61 74 6f  arameter(Mandato
1b90: 72 79 3d 24 66 61 6c 73 65 29 5d 0d 0a 20 20 20  ry=$false)]..   
1ba0: 20 20 20 20 20 5b 73 74 72 69 6e 67 5d 24 41 6c       [string]$Al
1bb0: 69 61 73 0d 0a 20 20 20 20 29 0d 0a 0d 0a 69 66  ias..    )....if
1bc0: 20 28 24 41 6c 69 61 73 29 20 7b 0d 0a 09 69 66   ($Alias) {...if
1bd0: 20 28 2d 6e 6f 74 20 28 47 65 74 2d 57 6d 69 4f   (-not (Get-WmiO
1be0: 62 6a 65 63 74 20 2d 43 6c 61 73 73 20 22 57 69  bject -Class "Wi
1bf0: 6e 33 32 5f 54 53 50 75 62 6c 69 73 68 65 64 41  n32_TSPublishedA
1c00: 70 70 6c 69 63 61 74 69 6f 6e 22 20 2d 4e 61 6d  pplication" -Nam
1c10: 65 73 70 61 63 65 20 22 72 6f 6f 74 5c 43 49 4d  espace "root\CIM
1c20: 56 32 5c 54 65 72 6d 69 6e 61 6c 53 65 72 76 69  V2\TerminalServi
1c30: 63 65 73 22 20 2d 46 69 6c 74 65 72 20 22 41 6c  ces" -Filter "Al
1c40: 69 61 73 20 3d 20 27 24 41 6c 69 61 73 27 22 29  ias = '$Alias'")
1c50: 29 20 0d 0a 09 7b 0d 0a 09 09 57 72 69 74 65 2d  ) ...{....Write-
1c60: 57 61 72 6e 69 6e 67 20 22 54 68 65 20 61 70 70  Warning "The app
1c70: 6c 69 63 61 74 69 6f 6e 20 24 61 6c 69 61 73 20  lication $alias 
1c80: 64 6f 65 73 6e 27 74 20 65 78 69 73 74 21 22 3b  doesn't exist!";
1c90: 72 65 74 75 72 6e 0d 0a 09 7d 0d 0a 09 47 65 74  return...}...Get
1ca0: 2d 57 6d 69 4f 62 6a 65 63 74 20 2d 43 6c 61 73  -WmiObject -Clas
1cb0: 73 20 22 57 69 6e 33 32 5f 54 53 50 75 62 6c 69  s "Win32_TSPubli
1cc0: 73 68 65 64 41 70 70 6c 69 63 61 74 69 6f 6e 22  shedApplication"
1cd0: 20 2d 4e 61 6d 65 73 70 61 63 65 20 22 72 6f 6f   -Namespace "roo
1ce0: 74 5c 43 49 4d 56 32 5c 54 65 72 6d 69 6e 61 6c  t\CIMV2\Terminal
1cf0: 53 65 72 76 69 63 65 73 22 20 2d 46 69 6c 74 65  Services" -Filte
1d00: 72 20 22 41 6c 69 61 73 20 3d 20 27 24 41 6c 69  r "Alias = '$Ali
1d10: 61 73 27 22 20 7c 20 53 65 6c 65 63 74 2d 4f 62  as'" | Select-Ob
1d20: 6a 65 63 74 20 40 7b 22 4e 61 6d 65 22 3d 22 44  ject @{"Name"="D
1d30: 69 73 70 6c 61 79 6e 61 6d 65 22 3b 22 45 78 70  isplayname";"Exp
1d40: 72 65 73 73 69 6f 6e 22 3d 7b 24 5f 2e 4e 61 6d  ression"={$_.Nam
1d50: 65 7d 7d 2c 40 7b 22 4e 61 6d 65 22 3d 22 41 6c  e}},@{"Name"="Al
1d60: 69 61 73 22 3b 22 45 78 70 72 65 73 73 69 6f 6e  ias";"Expression
1d70: 22 3d 7b 24 5f 2e 41 6c 69 61 73 7d 7d 2c 40 7b  "={$_.Alias}},@{
1d80: 22 4e 61 6d 65 22 3d 22 50 61 74 68 22 3b 22 45  "Name"="Path";"E
1d90: 78 70 72 65 73 73 69 6f 6e 22 3d 7b 24 5f 2e 56  xpression"={$_.V
1da0: 50 61 74 68 7d 7d 0d 0a 7d 20 65 6c 73 65 20 7b  Path}}..} else {
1db0: 0d 0a 09 47 65 74 2d 57 6d 69 4f 62 6a 65 63 74  ...Get-WmiObject
1dc0: 20 2d 43 6c 61 73 73 20 22 57 69 6e 33 32 5f 54   -Class "Win32_T
1dd0: 53 50 75 62 6c 69 73 68 65 64 41 70 70 6c 69 63  SPublishedApplic
1de0: 61 74 69 6f 6e 22 20 2d 4e 61 6d 65 73 70 61 63  ation" -Namespac
1df0: 65 20 22 72 6f 6f 74 5c 43 49 4d 56 32 5c 54 65  e "root\CIMV2\Te
1e00: 72 6d 69 6e 61 6c 53 65 72 76 69 63 65 73 22 20  rminalServices" 
1e10: 7c 20 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74 20  | Select-Object 
1e20: 40 7b 22 4e 61 6d 65 22 3d 22 44 69 73 70 6c 61  @{"Name"="Displa
1e30: 79 6e 61 6d 65 22 3b 22 45 78 70 72 65 73 73 69  yname";"Expressi
1e40: 6f 6e 22 3d 7b 24 5f 2e 4e 61 6d 65 7d 7d 2c 40  on"={$_.Name}},@
1e50: 7b 22 4e 61 6d 65 22 3d 22 41 6c 69 61 73 22 3b  {"Name"="Alias";
1e60: 22 45 78 70 72 65 73 73 69 6f 6e 22 3d 7b 24 5f  "Expression"={$_
1e70: 2e 41 6c 69 61 73 7d 7d 2c 40 7b 22 4e 61 6d 65  .Alias}},@{"Name
1e80: 22 3d 22 50 61 74 68 22 3b 22 45 78 70 72 65 73  "="Path";"Expres
1e90: 73 69 6f 6e 22 3d 7b 24 5f 2e 56 50 61 74 68 7d  sion"={$_.VPath}
1ea0: 7d 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74  }..}..}....funct
1eb0: 69 6f 6e 20 49 6d 70 6f 72 74 2d 54 53 52 65 6d  ion Import-TSRem
1ec0: 6f 74 65 41 70 70 73 53 65 74 20 7b 0d 0a 3c 23  oteAppsSet {..<#
1ed0: 0d 0a 2e 53 59 4e 4f 50 53 49 53 0d 0a 49 6d 70  ...SYNOPSIS..Imp
1ee0: 6f 72 74 73 20 61 6c 6c 20 54 53 20 52 65 6d 6f  orts all TS Remo
1ef0: 74 65 41 70 70 73 20 53 65 74 74 69 6e 67 73 20  teApps Settings 
1f00: 66 72 6f 6d 20 74 68 65 20 70 72 6f 76 69 64 65  from the provide
1f10: 64 20 54 53 50 55 42 2d 66 69 6c 65 2e 0d 0a 2e  d TSPUB-file....
1f20: 44 45 53 43 52 49 50 54 49 4f 4e 0d 0a 49 6d 70  DESCRIPTION..Imp
1f30: 6f 72 74 73 20 61 6c 6c 20 54 53 20 52 65 6d 6f  orts all TS Remo
1f40: 74 65 41 70 70 73 20 66 72 6f 6d 20 74 68 65 20  teApps from the 
1f50: 70 72 6f 76 69 64 65 64 20 54 53 50 55 42 2d 66  provided TSPUB-f
1f60: 69 6c 65 2e 20 41 63 63 65 70 74 73 20 56 61 6c  ile. Accepts Val
1f70: 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 20 61  ueFromPipeline a
1f80: 6e 64 20 56 61 6c 75 65 46 72 6f 6d 50 69 70 65  nd ValueFromPipe
1f90: 6c 69 6e 65 42 79 50 72 6f 70 65 72 74 79 4e 61  lineByPropertyNa
1fa0: 6d 65 2e 0d 0a 4f 6e 65 20 6d 61 6e 64 61 74 6f  me...One mandato
1fb0: 72 79 20 70 61 72 61 6d 65 74 65 72 3a 20 50 61  ry parameter: Pa
1fc0: 74 68 0d 0a 2e 50 41 52 41 4d 45 54 45 52 20 50  th...PARAMETER P
1fd0: 61 74 68 0d 0a 50 61 74 68 20 74 6f 20 74 68 65  ath..Path to the
1fe0: 20 54 53 50 55 42 2d 66 69 6c 65 20 74 6f 20 62   TSPUB-file to b
1ff0: 65 20 69 6d 70 6f 72 74 65 64 2e 20 41 63 63 65  e imported. Acce
2000: 70 74 73 20 56 61 6c 75 65 46 72 6f 6d 50 69 70  pts ValueFromPip
2010: 65 6c 69 6e 65 20 61 6e 64 20 56 61 6c 75 65 46  eline and ValueF
2020: 72 6f 6d 50 69 70 65 6c 69 6e 65 42 79 50 72 6f  romPipelineByPro
2030: 70 65 72 74 79 4e 61 6d 65 2e 0d 0a 50 61 72 61  pertyName...Para
2040: 6d 65 74 65 72 20 54 79 70 65 3a 20 4d 61 6e 64  meter Type: Mand
2050: 61 74 6f 72 79 0d 0a 2e 50 41 52 41 4d 45 54 45  atory...PARAMETE
2060: 52 20 52 65 70 6c 61 63 65 0d 0a 44 65 6c 65 74  R Replace..Delet
2070: 65 73 20 61 6c 6c 20 65 78 69 73 74 69 6e 67 20  es all existing 
2080: 52 65 6d 6f 74 65 41 70 70 73 20 61 6e 64 20 69  RemoteApps and i
2090: 6e 73 65 72 74 20 6e 65 77 20 66 72 6f 6d 20 66  nsert new from f
20a0: 69 6c 65 2e 20 45 6e 61 62 6c 65 64 20 62 79 20  ile. Enabled by 
20b0: 44 65 66 61 75 6c 74 2e 0d 0a 50 61 72 61 6d 65  Default...Parame
20c0: 74 65 72 20 54 79 70 65 3a 20 4f 70 74 69 6f 6e  ter Type: Option
20d0: 61 6c 0d 0a 2e 50 41 52 41 4d 45 54 45 52 20 54  al...PARAMETER T
20e0: 53 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69  SDeploymentSetti
20f0: 6e 67 73 0d 0a 52 65 70 6c 61 63 65 20 54 65 72  ngs..Replace Ter
2100: 6d 69 6e 61 6c 20 53 65 72 76 65 72 20 73 65 74  minal Server set
2110: 74 69 6e 67 73 2e 20 45 6e 61 62 6c 65 64 20 62  tings. Enabled b
2120: 79 20 44 65 66 61 75 6c 74 2e 0d 0a 50 61 72 61  y Default...Para
2130: 6d 65 74 65 72 20 54 79 70 65 3a 20 4f 70 74 69  meter Type: Opti
2140: 6f 6e 61 6c 0d 0a 2e 45 58 41 4d 50 4c 45 0d 0a  onal...EXAMPLE..
2150: 49 6d 70 6f 72 74 2d 54 53 52 65 6d 6f 74 65 41  Import-TSRemoteA
2160: 70 70 73 20 2d 50 61 74 68 20 43 3a 5c 74 65 6d  pps -Path C:\tem
2170: 70 5c 52 65 6d 6f 74 65 41 70 70 73 2e 74 73 70  p\RemoteApps.tsp
2180: 75 62 0d 0a 49 6d 70 6f 72 74 73 20 61 6c 6c 20  ub..Imports all 
2190: 52 65 6d 6f 74 65 41 70 70 73 20 66 72 6f 6d 20  RemoteApps from 
21a0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 54 53  the specified TS
21b0: 50 55 42 2d 66 69 6c 65 2e 0d 0a 2e 4e 4f 54 45  PUB-file....NOTE
21c0: 53 0d 0a 41 55 54 48 4f 52 3a 20 20 20 20 57 69  S..AUTHOR:    Wi
21d0: 7a 61 72 64 65 6e 0d 0a 4c 41 53 54 45 44 49 54  zarden..LASTEDIT
21e0: 3a 20 20 32 31 2e 31 31 2e 32 30 31 30 20 0d 0a  :  21.11.2010 ..
21f0: 23 3e 0d 0a 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e  #>....[CmdletBin
2200: 64 69 6e 67 28 29 5d 0d 0a 20 20 20 20 70 61 72  ding()]..    par
2210: 61 6d 20 28 0d 0a 20 20 20 20 20 20 20 20 5b 70  am (..        [p
2220: 61 72 61 6d 65 74 65 72 28 4d 61 6e 64 61 74 6f  arameter(Mandato
2230: 72 79 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72  ry=$true,ValueFr
2240: 6f 6d 50 69 70 65 6c 69 6e 65 3d 24 74 72 75 65  omPipeline=$true
2250: 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69  ,ValueFromPipeli
2260: 6e 65 42 79 50 72 6f 70 65 72 74 79 4e 61 6d 65  neByPropertyName
2270: 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20 20 20 20  =$true)]..      
2280: 20 20 5b 73 74 72 69 6e 67 5d 24 50 61 74 68 2c    [string]$Path,
2290: 0d 0a 20 20 20 20 20 20 20 20 5b 70 61 72 61 6d  ..        [param
22a0: 65 74 65 72 28 56 61 6c 75 65 46 72 6f 6d 50 69  eter(ValueFromPi
22b0: 70 65 6c 69 6e 65 3d 24 74 72 75 65 2c 56 61 6c  peline=$true,Val
22c0: 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 42 79  ueFromPipelineBy
22d0: 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d 24 74 72  PropertyName=$tr
22e0: 75 65 29 5d 0d 0a 20 20 20 20 20 20 20 20 5b 73  ue)]..        [s
22f0: 77 69 74 63 68 5d 24 4e 6f 74 52 65 70 6c 61 63  witch]$NotReplac
2300: 65 20 3d 20 24 74 72 75 65 2c 0d 0a 20 20 20 20  e = $true,..    
2310: 20 20 20 20 5b 70 61 72 61 6d 65 74 65 72 28 56      [parameter(V
2320: 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65  alueFromPipeline
2330: 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72 6f 6d  =$true,ValueFrom
2340: 50 69 70 65 6c 69 6e 65 42 79 50 72 6f 70 65 72  PipelineByProper
2350: 74 79 4e 61 6d 65 3d 24 74 72 75 65 29 5d 0d 0a  tyName=$true)]..
2360: 20 20 20 20 20 20 20 20 5b 73 77 69 74 63 68 5d          [switch]
2370: 24 54 53 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74  $TSDeploymentSet
2380: 74 69 6e 67 73 20 3d 20 24 74 72 75 65 0d 0a 20  tings = $true.. 
2390: 20 20 20 29 0d 0a 0d 0a 24 43 6f 6e 66 69 67 46     )....$ConfigF
23a0: 69 6c 65 20 3d 20 5b 78 6d 6c 5d 28 47 65 74 2d  ile = [xml](Get-
23b0: 43 6f 6e 74 65 6e 74 20 24 50 61 74 68 20 2d 45  Content $Path -E
23c0: 6e 63 6f 64 69 6e 67 20 55 54 46 38 29 0d 0a 0d  ncoding UTF8)...
23d0: 0a 69 66 20 28 24 52 65 70 6c 61 63 65 29 20 7b  .if ($Replace) {
23e0: 0d 0a 09 47 65 74 2d 57 6d 69 4f 62 6a 65 63 74  ...Get-WmiObject
23f0: 20 2d 43 6c 61 73 73 20 22 57 69 6e 33 32 5f 54   -Class "Win32_T
2400: 53 50 75 62 6c 69 73 68 65 64 41 70 70 6c 69 63  SPublishedApplic
2410: 61 74 69 6f 6e 22 20 2d 4e 61 6d 65 73 70 61 63  ation" -Namespac
2420: 65 20 22 72 6f 6f 74 5c 43 49 4d 56 32 5c 54 65  e "root\CIMV2\Te
2430: 72 6d 69 6e 61 6c 53 65 72 76 69 63 65 73 22 20  rminalServices" 
2440: 7c 20 46 6f 72 45 61 63 68 2d 4f 62 6a 65 63 74  | ForEach-Object
2450: 20 7b 24 5f 2e 44 65 6c 65 74 65 28 29 20 7c 20   {$_.Delete() | 
2460: 4f 75 74 2d 4e 75 6c 6c 7d 0d 0a 7d 0d 0a 0d 0a  Out-Null}..}....
2470: 69 66 20 28 24 54 53 44 65 70 6c 6f 79 6d 65 6e  if ($TSDeploymen
2480: 74 53 65 74 74 69 6e 67 73 29 20 7b 0d 0a 0d 0a  tSettings) {....
2490: 09 24 57 69 6e 33 32 5f 54 53 50 75 62 6c 69 73  .$Win32_TSPublis
24a0: 68 65 64 41 70 70 6c 69 63 61 74 69 6f 6e 4c 69  hedApplicationLi
24b0: 73 74 20 3d 20 47 65 74 2d 57 6d 69 4f 62 6a 65  st = Get-WmiObje
24c0: 63 74 20 2d 4e 61 6d 65 73 70 61 63 65 20 22 72  ct -Namespace "r
24d0: 6f 6f 74 5c 43 49 4d 56 32 5c 54 65 72 6d 69 6e  oot\CIMV2\Termin
24e0: 61 6c 53 65 72 76 69 63 65 73 22 20 2d 43 6c 61  alServices" -Cla
24f0: 73 73 20 57 69 6e 33 32 5f 54 53 50 75 62 6c 69  ss Win32_TSPubli
2500: 73 68 65 64 41 70 70 6c 69 63 61 74 69 6f 6e 4c  shedApplicationL
2510: 69 73 74 0d 0a 09 24 57 69 6e 33 32 5f 54 53 50  ist...$Win32_TSP
2520: 75 62 6c 69 73 68 65 64 41 70 70 6c 69 63 61 74  ublishedApplicat
2530: 69 6f 6e 4c 69 73 74 2e 44 69 73 61 62 6c 65 64  ionList.Disabled
2540: 20 3d 20 28 24 43 6f 6e 66 69 67 46 69 6c 65 2e   = ($ConfigFile.
2550: 52 65 6d 6f 74 65 50 72 6f 67 72 61 6d 73 2e 55  RemotePrograms.U
2560: 73 65 41 6c 6c 6f 77 4c 69 73 74 20 2d 65 71 20  seAllowList -eq 
2570: 22 4e 6f 22 29 0d 0a 09 24 57 69 6e 33 32 5f 54  "No")...$Win32_T
2580: 53 50 75 62 6c 69 73 68 65 64 41 70 70 6c 69 63  SPublishedApplic
2590: 61 74 69 6f 6e 4c 69 73 74 2e 50 75 74 28 29 20  ationList.Put() 
25a0: 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 0d 0a 09  | Out-Null......
25b0: 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69  $DeploymentSetti
25c0: 6e 67 73 20 3d 20 47 65 74 2d 57 6d 69 4f 62 6a  ngs = Get-WmiObj
25d0: 65 63 74 20 2d 43 6c 61 73 73 20 22 57 69 6e 33  ect -Class "Win3
25e0: 32 5f 54 53 44 65 70 6c 6f 79 6d 65 6e 74 53 65  2_TSDeploymentSe
25f0: 74 74 69 6e 67 73 22 20 2d 4e 61 6d 65 73 70 61  ttings" -Namespa
2600: 63 65 20 22 72 6f 6f 74 5c 43 49 4d 56 32 5c 54  ce "root\CIMV2\T
2610: 65 72 6d 69 6e 61 6c 53 65 72 76 69 63 65 73 22  erminalServices"
2620: 0d 0a 0d 0a 09 24 44 65 70 6c 6f 79 6d 65 6e 74  .....$Deployment
2630: 52 44 50 53 65 74 74 69 6e 67 73 20 3d 20 24 44  RDPSettings = $D
2640: 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67  eploymentSetting
2650: 73 2e 44 65 70 6c 6f 79 6d 65 6e 74 52 44 50 53  s.DeploymentRDPS
2660: 65 74 74 69 6e 67 73 2e 53 70 6c 69 74 28 22 60  ettings.Split("`
2670: 6e 22 29 0d 0a 09 24 76 61 6c 75 65 73 20 3d 20  n")...$values = 
2680: 40 7b 7d 0d 0a 09 0d 0a 09 46 6f 72 45 61 63 68  @{}......ForEach
2690: 20 28 24 76 61 6c 20 69 6e 20 24 44 65 70 6c 6f   ($val in $Deplo
26a0: 79 6d 65 6e 74 52 44 50 53 65 74 74 69 6e 67 73  ymentRDPSettings
26b0: 29 20 7b 0d 0a 09 09 69 66 20 28 24 76 61 6c 20  ) {....if ($val 
26c0: 2d 6e 65 20 22 22 29 20 7b 24 76 61 6c 75 65 73  -ne "") {$values
26d0: 20 2b 3d 20 40 7b 28 5b 72 65 67 65 78 5d 3a 3a   += @{([regex]::
26e0: 4d 61 74 63 68 28 24 76 61 6c 2c 22 28 5e 2e 2b  Match($val,"(^.+
26f0: 3f 3a 5c 77 3f 29 3a 28 2e 2a 29 22 29 29 2e 67  ?:\w?):(.*)")).g
2700: 72 6f 75 70 73 5b 31 5d 2e 76 61 6c 75 65 20 3d  roups[1].value =
2710: 20 28 5b 72 65 67 65 78 5d 3a 3a 4d 61 74 63 68   ([regex]::Match
2720: 28 24 76 61 6c 2c 22 28 5e 2e 2b 3f 3a 5c 77 3f  ($val,"(^.+?:\w?
2730: 29 3a 28 2e 2a 29 22 29 29 2e 67 72 6f 75 70 73  ):(.*)")).groups
2740: 5b 32 5d 2e 76 61 6c 75 65 7d 7d 0d 0a 09 7d 0d  [2].value}}...}.
2750: 0a 09 0d 0a 09 24 76 61 6c 75 65 73 5b 22 73 65  .....$values["se
2760: 72 76 65 72 20 70 6f 72 74 3a 69 22 5d 20 3d 20  rver port:i"] = 
2770: 24 43 6f 6e 66 69 67 46 69 6c 65 2e 52 65 6d 6f  $ConfigFile.Remo
2780: 74 65 50 72 6f 67 72 61 6d 73 2e 44 65 70 6c 6f  tePrograms.Deplo
2790: 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 50 6f  ymentSettings.Po
27a0: 72 74 0d 0a 09 24 76 61 6c 75 65 73 5b 22 66 75  rt...$values["fu
27b0: 6c 6c 20 61 64 64 72 65 73 73 3a 73 22 5d 20 3d  ll address:s"] =
27c0: 20 24 43 6f 6e 66 69 67 46 69 6c 65 2e 52 65 6d   $ConfigFile.Rem
27d0: 6f 74 65 50 72 6f 67 72 61 6d 73 2e 44 65 70 6c  otePrograms.Depl
27e0: 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 46  oymentSettings.F
27f0: 61 72 6d 4e 61 6d 65 0d 0a 09 24 76 61 6c 75 65  armName...$value
2800: 73 5b 22 67 61 74 65 77 61 79 68 6f 73 74 6e 61  s["gatewayhostna
2810: 6d 65 3a 73 22 5d 20 3d 20 24 43 6f 6e 66 69 67  me:s"] = $Config
2820: 46 69 6c 65 2e 52 65 6d 6f 74 65 50 72 6f 67 72  File.RemoteProgr
2830: 61 6d 73 2e 44 65 70 6c 6f 79 6d 65 6e 74 53 65  ams.DeploymentSe
2840: 74 74 69 6e 67 73 2e 47 61 74 65 77 61 79 53 65  ttings.GatewaySe
2850: 74 74 69 6e 67 73 2e 47 61 74 65 77 61 79 4e 61  ttings.GatewayNa
2860: 6d 65 0d 0a 09 24 76 61 6c 75 65 73 5b 22 67 61  me...$values["ga
2870: 74 65 77 61 79 63 72 65 64 65 6e 74 69 61 6c 73  tewaycredentials
2880: 73 6f 75 72 63 65 3a 69 22 5d 20 3d 20 24 43 6f  source:i"] = $Co
2890: 6e 66 69 67 46 69 6c 65 2e 52 65 6d 6f 74 65 50  nfigFile.RemoteP
28a0: 72 6f 67 72 61 6d 73 2e 44 65 70 6c 6f 79 6d 65  rograms.Deployme
28b0: 6e 74 53 65 74 74 69 6e 67 73 2e 47 61 74 65 77  ntSettings.Gatew
28c0: 61 79 53 65 74 74 69 6e 67 73 2e 47 61 74 65 77  aySettings.Gatew
28d0: 61 79 41 75 74 68 4d 6f 64 65 0d 0a 09 24 76 61  ayAuthMode...$va
28e0: 6c 75 65 73 5b 22 70 72 6f 6d 70 74 63 72 65 64  lues["promptcred
28f0: 65 6e 74 69 61 6c 6f 6e 63 65 3a 69 22 5d 20 3d  entialonce:i"] =
2900: 20 5b 69 6e 74 5d 5b 53 79 73 74 65 6d 2e 43 6f   [int][System.Co
2910: 6e 76 65 72 74 5d 3a 3a 54 6f 42 6f 6f 6c 65 61  nvert]::ToBoolea
2920: 6e 28 24 43 6f 6e 66 69 67 46 69 6c 65 2e 52 65  n($ConfigFile.Re
2930: 6d 6f 74 65 50 72 6f 67 72 61 6d 73 2e 44 65 70  motePrograms.Dep
2940: 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e  loymentSettings.
2950: 47 61 74 65 77 61 79 53 65 74 74 69 6e 67 73 2e  GatewaySettings.
2960: 55 73 65 43 61 63 68 65 64 43 72 65 64 73 29 0d  UseCachedCreds).
2970: 0a 09 24 76 61 6c 75 65 73 5b 22 61 6c 6c 6f 77  ..$values["allow
2980: 20 66 6f 6e 74 20 73 6d 6f 6f 74 68 69 6e 67 3a   font smoothing:
2990: 69 22 5d 20 3d 20 5b 69 6e 74 5d 5b 53 79 73 74  i"] = [int][Syst
29a0: 65 6d 2e 43 6f 6e 76 65 72 74 5d 3a 3a 54 6f 42  em.Convert]::ToB
29b0: 6f 6f 6c 65 61 6e 28 24 43 6f 6e 66 69 67 46 69  oolean($ConfigFi
29c0: 6c 65 2e 52 65 6d 6f 74 65 50 72 6f 67 72 61 6d  le.RemoteProgram
29d0: 73 2e 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74  s.DeploymentSett
29e0: 69 6e 67 73 2e 43 65 72 74 69 66 69 63 61 74 65  ings.Certificate
29f0: 53 65 74 74 69 6e 67 73 2e 41 6c 6c 6f 77 46 6f  Settings.AllowFo
2a00: 6e 74 53 6d 6f 6f 74 68 69 6e 67 29 0d 0a 09 24  ntSmoothing)...$
2a10: 76 61 6c 75 65 73 5b 22 73 65 73 73 69 6f 6e 20  values["session 
2a20: 62 70 70 3a 69 22 5d 20 3d 20 24 43 6f 6e 66 69  bpp:i"] = $Confi
2a30: 67 46 69 6c 65 2e 52 65 6d 6f 74 65 50 72 6f 67  gFile.RemoteProg
2a40: 72 61 6d 73 2e 44 65 70 6c 6f 79 6d 65 6e 74 53  rams.DeploymentS
2a50: 65 74 74 69 6e 67 73 2e 43 65 72 74 69 66 69 63  ettings.Certific
2a60: 61 74 65 53 65 74 74 69 6e 67 73 2e 43 6f 6c 6f  ateSettings.Colo
2a70: 72 42 69 74 44 65 70 74 68 0d 0a 09 24 76 61 6c  rBitDepth...$val
2a80: 75 65 73 5b 22 75 73 65 20 6d 75 6c 74 69 6d 6f  ues["use multimo
2a90: 6e 3a 69 22 5d 20 3d 20 5b 69 6e 74 5d 5b 53 79  n:i"] = [int][Sy
2aa0: 73 74 65 6d 2e 43 6f 6e 76 65 72 74 5d 3a 3a 54  stem.Convert]::T
2ab0: 6f 42 6f 6f 6c 65 61 6e 28 24 43 6f 6e 66 69 67  oBoolean($Config
2ac0: 46 69 6c 65 2e 52 65 6d 6f 74 65 50 72 6f 67 72  File.RemoteProgr
2ad0: 61 6d 73 2e 44 65 70 6c 6f 79 6d 65 6e 74 53 65  ams.DeploymentSe
2ae0: 74 74 69 6e 67 73 2e 43 65 72 74 69 66 69 63 61  ttings.Certifica
2af0: 74 65 53 65 74 74 69 6e 67 73 2e 55 73 65 4d 75  teSettings.UseMu
2b00: 6c 74 69 6d 6f 6e 29 0d 0a 09 24 76 61 6c 75 65  ltimon)...$value
2b10: 73 5b 22 61 75 74 68 65 6e 74 69 63 61 74 69 6f  s["authenticatio
2b20: 6e 20 6c 65 76 65 6c 3a 69 22 5d 20 3d 20 24 43  n level:i"] = $C
2b30: 6f 6e 66 69 67 46 69 6c 65 2e 52 65 6d 6f 74 65  onfigFile.Remote
2b40: 50 72 6f 67 72 61 6d 73 2e 44 65 70 6c 6f 79 6d  Programs.Deploym
2b50: 65 6e 74 53 65 74 74 69 6e 67 73 2e 53 65 72 76  entSettings.Serv
2b60: 65 72 41 75 74 68 0d 0a 09 0d 0a 09 73 77 69 74  erAuth......swit
2b70: 63 68 20 28 24 43 6f 6e 66 69 67 46 69 6c 65 2e  ch ($ConfigFile.
2b80: 52 65 6d 6f 74 65 50 72 6f 67 72 61 6d 73 2e 44  RemotePrograms.D
2b90: 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67  eploymentSetting
2ba0: 73 2e 47 61 74 65 77 61 79 53 65 74 74 69 6e 67  s.GatewaySetting
2bb0: 73 2e 47 61 74 65 77 61 79 55 73 61 67 65 29 09  s.GatewayUsage).
2bc0: 7b 0d 0a 09 09 30 20 7b 24 76 61 6c 75 65 73 5b  {....0 {$values[
2bd0: 22 67 61 74 65 77 61 79 75 73 61 67 65 6d 65 74  "gatewayusagemet
2be0: 68 6f 64 3a 69 22 5d 20 3d 20 30 3b 24 76 61 6c  hod:i"] = 0;$val
2bf0: 75 65 73 5b 22 67 61 74 65 77 61 79 70 72 6f 66  ues["gatewayprof
2c00: 69 6c 65 75 73 61 67 65 6d 65 74 68 6f 64 3a 69  ileusagemethod:i
2c10: 22 5d 20 3d 20 31 7d 0d 0a 09 09 31 20 7b 24 76  "] = 1}....1 {$v
2c20: 61 6c 75 65 73 5b 22 67 61 74 65 77 61 79 75 73  alues["gatewayus
2c30: 61 67 65 6d 65 74 68 6f 64 3a 69 22 5d 20 3d 20  agemethod:i"] = 
2c40: 32 3b 24 76 61 6c 75 65 73 5b 22 67 61 74 65 77  2;$values["gatew
2c50: 61 79 70 72 6f 66 69 6c 65 75 73 61 67 65 6d 65  ayprofileusageme
2c60: 74 68 6f 64 3a 69 22 5d 20 3d 20 31 7d 0d 0a 09  thod:i"] = 1}...
2c70: 09 32 20 7b 24 76 61 6c 75 65 73 5b 22 67 61 74  .2 {$values["gat
2c80: 65 77 61 79 75 73 61 67 65 6d 65 74 68 6f 64 3a  ewayusagemethod:
2c90: 69 22 5d 20 3d 20 31 3b 24 76 61 6c 75 65 73 5b  i"] = 1;$values[
2ca0: 22 67 61 74 65 77 61 79 70 72 6f 66 69 6c 65 75  "gatewayprofileu
2cb0: 73 61 67 65 6d 65 74 68 6f 64 3a 69 22 5d 20 3d  sagemethod:i"] =
2cc0: 20 31 7d 0d 0a 09 09 33 20 7b 24 76 61 6c 75 65   1}....3 {$value
2cd0: 73 5b 22 67 61 74 65 77 61 79 75 73 61 67 65 6d  s["gatewayusagem
2ce0: 65 74 68 6f 64 3a 69 22 5d 20 3d 20 32 3b 24 76  ethod:i"] = 2;$v
2cf0: 61 6c 75 65 73 5b 22 67 61 74 65 77 61 79 70 72  alues["gatewaypr
2d00: 6f 66 69 6c 65 75 73 61 67 65 6d 65 74 68 6f 64  ofileusagemethod
2d10: 3a 69 22 5d 20 3d 20 30 7d 0d 0a 09 09 64 65 66  :i"] = 0}....def
2d20: 61 75 6c 74 09 7b 24 76 61 6c 75 65 73 5b 22 67  ault.{$values["g
2d30: 61 74 65 77 61 79 75 73 61 67 65 6d 65 74 68 6f  atewayusagemetho
2d40: 64 3a 69 22 5d 20 3d 20 30 3b 24 76 61 6c 75 65  d:i"] = 0;$value
2d50: 73 5b 22 67 61 74 65 77 61 79 70 72 6f 66 69 6c  s["gatewayprofil
2d60: 65 75 73 61 67 65 6d 65 74 68 6f 64 3a 69 22 5d  eusagemethod:i"]
2d70: 20 3d 20 31 7d 0d 0a 09 7d 0d 0a 0d 0a 09 73 77   = 1}...}.....sw
2d80: 69 74 63 68 20 28 24 43 6f 6e 66 69 67 46 69 6c  itch ($ConfigFil
2d90: 65 2e 52 65 6d 6f 74 65 50 72 6f 67 72 61 6d 73  e.RemotePrograms
2da0: 2e 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69  .DeploymentSetti
2db0: 6e 67 73 2e 43 65 72 74 69 66 69 63 61 74 65 53  ngs.CertificateS
2dc0: 65 74 74 69 6e 67 73 2e 52 65 64 69 72 65 63 74  ettings.Redirect
2dd0: 69 6f 6e 53 65 74 74 69 6e 67 73 29 09 7b 0d 0a  ionSettings).{..
2de0: 09 09 7b 24 5f 20 2d 62 61 6e 64 20 31 7d 20 7b  ..{$_ -band 1} {
2df0: 24 76 61 6c 75 65 73 5b 22 72 65 64 69 72 65 63  $values["redirec
2e00: 74 64 72 69 76 65 73 3a 69 22 5d 20 3d 20 31 3b  tdrives:i"] = 1;
2e10: 24 76 61 6c 75 65 73 5b 22 64 72 69 76 65 73 74  $values["drivest
2e20: 6f 72 65 64 69 72 65 63 74 3a 73 22 5d 20 3d 20  oredirect:s"] = 
2e30: 22 2a 22 7d 0d 0a 09 09 7b 24 5f 20 2d 62 61 6e  "*"}....{$_ -ban
2e40: 64 20 32 7d 20 7b 24 76 61 6c 75 65 73 5b 22 72  d 2} {$values["r
2e50: 65 64 69 72 65 63 74 70 72 69 6e 74 65 72 73 3a  edirectprinters:
2e60: 69 22 5d 20 3d 20 31 7d 0d 0a 09 09 7b 24 5f 20  i"] = 1}....{$_ 
2e70: 2d 62 61 6e 64 20 34 7d 20 7b 24 76 61 6c 75 65  -band 4} {$value
2e80: 73 5b 22 72 65 64 69 72 65 63 74 63 6c 69 70 62  s["redirectclipb
2e90: 6f 61 72 64 3a 69 22 5d 20 3d 20 31 7d 0d 0a 09  oard:i"] = 1}...
2ea0: 09 7b 24 5f 20 2d 62 61 6e 64 20 38 7d 20 7b 24  .{$_ -band 8} {$
2eb0: 76 61 6c 75 65 73 5b 22 64 65 76 69 63 65 73 74  values["devicest
2ec0: 6f 72 65 64 69 72 65 63 74 3a 73 22 5d 20 3d 20  oredirect:s"] = 
2ed0: 22 2a 22 7d 0d 0a 09 09 7b 24 5f 20 2d 62 61 6e  "*"}....{$_ -ban
2ee0: 64 20 31 36 7d 20 7b 24 76 61 6c 75 65 73 5b 22  d 16} {$values["
2ef0: 72 65 64 69 72 65 63 74 73 6d 61 72 74 63 61 72  redirectsmartcar
2f00: 64 73 3a 69 22 5d 20 3d 20 31 7d 0d 0a 09 7d 0d  ds:i"] = 1}...}.
2f10: 0a 0d 0a 09 24 44 65 70 6c 6f 79 6d 65 6e 74 53  ....$DeploymentS
2f20: 65 74 74 69 6e 67 73 2e 44 65 70 6c 6f 79 6d 65  ettings.Deployme
2f30: 6e 74 52 44 50 53 65 74 74 69 6e 67 73 20 3d 20  ntRDPSettings = 
2f40: 5b 73 74 72 69 6e 67 5d 3a 3a 4a 6f 69 6e 28 22  [string]::Join("
2f50: 60 6e 22 2c 28 24 76 61 6c 75 65 73 2e 4b 65 79  `n",($values.Key
2f60: 73 20 7c 20 46 6f 72 45 61 63 68 2d 4f 62 6a 65  s | ForEach-Obje
2f70: 63 74 20 7b 24 5f 20 2b 20 22 3a 22 20 2b 20 24  ct {$_ + ":" + $
2f80: 76 61 6c 75 65 73 5b 24 5f 5d 7d 29 29 0d 0a 09  values[$_]}))...
2f90: 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69  $DeploymentSetti
2fa0: 6e 67 73 2e 43 75 73 74 6f 6d 52 44 50 53 65 74  ngs.CustomRDPSet
2fb0: 74 69 6e 67 73 20 3d 20 5b 53 79 73 74 65 6d 2e  tings = [System.
2fc0: 43 6f 6e 76 65 72 74 5d 3a 3a 54 6f 53 74 72 69  Convert]::ToStri
2fd0: 6e 67 28 24 43 6f 6e 66 69 67 46 69 6c 65 2e 52  ng($ConfigFile.R
2fe0: 65 6d 6f 74 65 50 72 6f 67 72 61 6d 73 2e 44 65  emotePrograms.De
2ff0: 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73  ploymentSettings
3000: 2e 43 65 72 74 69 66 69 63 61 74 65 53 65 74 74  .CertificateSett
3010: 69 6e 67 73 2e 43 75 73 74 6f 6d 52 44 50 53 65  ings.CustomRDPSe
3020: 74 74 69 6e 67 73 29 0d 0a 09 24 44 65 70 6c 6f  ttings)...$Deplo
3030: 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 43 65  ymentSettings.Ce
3040: 72 74 69 66 69 63 61 74 65 45 78 70 69 72 65 73  rtificateExpires
3050: 4f 6e 20 3d 20 5b 69 6e 74 36 34 5d 24 43 6f 6e  On = [int64]$Con
3060: 66 69 67 46 69 6c 65 2e 52 65 6d 6f 74 65 50 72  figFile.RemotePr
3070: 6f 67 72 61 6d 73 2e 44 65 70 6c 6f 79 6d 65 6e  ograms.Deploymen
3080: 74 53 65 74 74 69 6e 67 73 2e 43 65 72 74 69 66  tSettings.Certif
3090: 69 63 61 74 65 53 65 74 74 69 6e 67 73 2e 43 65  icateSettings.Ce
30a0: 72 74 69 66 69 63 61 74 65 45 78 70 69 72 65 73  rtificateExpires
30b0: 4f 6e 0d 0a 09 24 44 65 70 6c 6f 79 6d 65 6e 74  On...$Deployment
30c0: 53 65 74 74 69 6e 67 73 2e 43 65 72 74 69 66 69  Settings.Certifi
30d0: 63 61 74 65 49 73 73 75 65 64 54 6f 20 3d 20 5b  cateIssuedTo = [
30e0: 53 79 73 74 65 6d 2e 43 6f 6e 76 65 72 74 5d 3a  System.Convert]:
30f0: 3a 54 6f 53 74 72 69 6e 67 28 24 43 6f 6e 66 69  :ToString($Confi
3100: 67 46 69 6c 65 2e 52 65 6d 6f 74 65 50 72 6f 67  gFile.RemoteProg
3110: 72 61 6d 73 2e 44 65 70 6c 6f 79 6d 65 6e 74 53  rams.DeploymentS
3120: 65 74 74 69 6e 67 73 2e 43 65 72 74 69 66 69 63  ettings.Certific
3130: 61 74 65 53 65 74 74 69 6e 67 73 2e 43 65 72 74  ateSettings.Cert
3140: 69 66 69 63 61 74 65 49 73 73 75 65 64 54 6f 29  ificateIssuedTo)
3150: 0d 0a 09 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65  ...$DeploymentSe
3160: 74 74 69 6e 67 73 2e 43 65 72 74 69 66 69 63 61  ttings.Certifica
3170: 74 65 49 73 73 75 65 64 42 79 20 3d 20 5b 53 79  teIssuedBy = [Sy
3180: 73 74 65 6d 2e 43 6f 6e 76 65 72 74 5d 3a 3a 54  stem.Convert]::T
3190: 6f 53 74 72 69 6e 67 28 24 43 6f 6e 66 69 67 46  oString($ConfigF
31a0: 69 6c 65 2e 52 65 6d 6f 74 65 50 72 6f 67 72 61  ile.RemoteProgra
31b0: 6d 73 2e 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74  ms.DeploymentSet
31c0: 74 69 6e 67 73 2e 43 65 72 74 69 66 69 63 61 74  tings.Certificat
31d0: 65 53 65 74 74 69 6e 67 73 2e 43 65 72 74 69 66  eSettings.Certif
31e0: 69 63 61 74 65 49 73 73 75 65 64 42 79 29 0d 0a  icateIssuedBy)..
31f0: 09 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74  .$DeploymentSett
3200: 69 6e 67 73 2e 48 61 73 43 65 72 74 69 66 69 63  ings.HasCertific
3210: 61 74 65 20 3d 20 5b 53 79 73 74 65 6d 2e 43 6f  ate = [System.Co
3220: 6e 76 65 72 74 5d 3a 3a 54 6f 42 6f 6f 6c 65 61  nvert]::ToBoolea
3230: 6e 28 24 43 6f 6e 66 69 67 46 69 6c 65 2e 52 65  n($ConfigFile.Re
3240: 6d 6f 74 65 50 72 6f 67 72 61 6d 73 2e 44 65 70  motePrograms.Dep
3250: 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e  loymentSettings.
3260: 43 65 72 74 69 66 69 63 61 74 65 53 65 74 74 69  CertificateSetti
3270: 6e 67 73 2e 55 73 65 43 65 72 74 69 66 69 63 61  ngs.UseCertifica
3280: 74 65 29 0d 0a 09 69 66 20 28 24 43 6f 6e 66 69  te)...if ($Confi
3290: 67 46 69 6c 65 2e 52 65 6d 6f 74 65 50 72 6f 67  gFile.RemoteProg
32a0: 72 61 6d 73 2e 44 65 70 6c 6f 79 6d 65 6e 74 53  rams.DeploymentS
32b0: 65 74 74 69 6e 67 73 2e 43 65 72 74 69 66 69 63  ettings.Certific
32c0: 61 74 65 53 65 74 74 69 6e 67 73 2e 43 65 72 74  ateSettings.Cert
32d0: 69 66 69 63 61 74 65 29 7b 24 44 65 70 6c 6f 79  ificate){$Deploy
32e0: 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 43 65 72  mentSettings.Cer
32f0: 74 69 66 69 63 61 74 65 48 61 73 68 20 3d 20 40  tificateHash = @
3300: 28 24 43 6f 6e 66 69 67 46 69 6c 65 2e 52 65 6d  ($ConfigFile.Rem
3310: 6f 74 65 50 72 6f 67 72 61 6d 73 2e 44 65 70 6c  otePrograms.Depl
3320: 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 43  oymentSettings.C
3330: 65 72 74 69 66 69 63 61 74 65 53 65 74 74 69 6e  ertificateSettin
3340: 67 73 2e 43 65 72 74 69 66 69 63 61 74 65 20 2d  gs.Certificate -
3350: 73 70 6c 69 74 20 27 28 5b 61 2d 66 30 2d 39 5d  split '([a-f0-9]
3360: 7b 32 7d 29 27 20 7c 20 66 6f 72 65 61 63 68 2d  {2})' | foreach-
3370: 6f 62 6a 65 63 74 20 7b 20 69 66 20 28 24 5f 29  object { if ($_)
3380: 20 7b 5b 53 79 73 74 65 6d 2e 43 6f 6e 76 65 72   {[System.Conver
3390: 74 5d 3a 3a 54 6f 42 79 74 65 28 24 5f 2c 31 36  t]::ToByte($_,16
33a0: 29 7d 7d 29 7d 0d 0a 09 24 44 65 70 6c 6f 79 6d  )}})}...$Deploym
33b0: 65 6e 74 53 65 74 74 69 6e 67 73 2e 50 75 74 28  entSettings.Put(
33c0: 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 69  ) | Out-Null...i
33d0: 66 20 28 24 3f 29 20 7b 57 72 69 74 65 2d 48 6f  f ($?) {Write-Ho
33e0: 73 74 20 22 54 68 65 20 73 65 74 74 69 6e 67 73  st "The settings
33f0: 20 77 61 73 20 73 75 63 63 65 73 66 75 6c 6c 79   was succesfully
3400: 20 65 6e 74 65 72 65 64 22 20 2d 46 6f 72 65 67   entered" -Foreg
3410: 72 6f 75 6e 64 43 6f 6c 6f 72 20 79 65 6c 6c 6f  roundColor yello
3420: 77 7d 0d 0a 0d 0a 09 69 66 20 28 24 43 6f 6e 66  w}.....if ($Conf
3430: 69 67 46 69 6c 65 2e 52 65 6d 6f 74 65 50 72 6f  igFile.RemotePro
3440: 67 72 61 6d 73 2e 44 65 70 6c 6f 79 6d 65 6e 74  grams.Deployment
3450: 53 65 74 74 69 6e 67 73 2e 43 65 72 74 69 66 69  Settings.Certifi
3460: 63 61 74 65 53 65 74 74 69 6e 67 73 2e 55 73 65  cateSettings.Use
3470: 43 65 72 74 69 66 69 63 61 74 65 2e 53 68 6f 77  Certificate.Show
3480: 52 65 6d 6f 74 65 44 65 73 6b 74 6f 70 29 20 7b  RemoteDesktop) {
3490: 0d 0a 09 09 24 6e 65 77 61 70 70 20 3d 20 28 5b  ....$newapp = ([
34a0: 77 6d 69 63 6c 61 73 73 5d 22 52 4f 4f 54 5c 43  wmiclass]"ROOT\C
34b0: 49 4d 56 32 5c 54 65 72 6d 69 6e 61 6c 53 65 72  IMV2\TerminalSer
34c0: 76 69 63 65 73 3a 57 69 6e 33 32 5f 54 53 52 65  vices:Win32_TSRe
34d0: 6d 6f 74 65 44 65 73 6b 74 6f 70 22 29 2e 43 72  moteDesktop").Cr
34e0: 65 61 74 65 49 6e 73 74 61 6e 63 65 28 29 0d 0a  eateInstance()..
34f0: 09 09 24 6e 65 77 61 70 70 2e 41 6c 69 61 73 20  ..$newapp.Alias 
3500: 3d 20 22 54 53 52 65 6d 6f 74 65 44 65 73 6b 74  = "TSRemoteDeskt
3510: 6f 70 22 0d 0a 09 09 24 6e 65 77 61 70 70 2e 49  op"....$newapp.I
3520: 63 6f 6e 49 6e 64 65 78 20 3d 20 30 0d 0a 09 09  conIndex = 0....
3530: 24 6e 65 77 61 70 70 2e 4e 61 6d 65 20 3d 20 22  $newapp.Name = "
3540: 52 65 6d 6f 74 65 20 44 65 73 6b 74 6f 70 22 0d  Remote Desktop".
3550: 0a 09 09 24 6e 65 77 61 70 70 2e 53 68 6f 77 49  ...$newapp.ShowI
3560: 6e 50 6f 72 74 61 6c 20 3d 20 24 74 72 75 65 0d  nPortal = $true.
3570: 0a 09 09 24 6e 65 77 61 70 70 2e 52 44 50 46 69  ...$newapp.RDPFi
3580: 6c 65 43 6f 6e 74 65 6e 74 73 3d 28 47 65 74 2d  leContents=(Get-
3590: 57 6d 69 4f 62 6a 65 63 74 20 2d 43 6c 61 73 73  WmiObject -Class
35a0: 20 22 57 69 6e 33 32 5f 54 53 44 65 70 6c 6f 79   "Win32_TSDeploy
35b0: 6d 65 6e 74 53 65 74 74 69 6e 67 73 22 20 2d 4e  mentSettings" -N
35c0: 61 6d 65 73 70 61 63 65 20 22 72 6f 6f 74 5c 43  amespace "root\C
35d0: 49 4d 56 32 5c 54 65 72 6d 69 6e 61 6c 53 65 72  IMV2\TerminalSer
35e0: 76 69 63 65 73 22 29 2e 44 65 70 6c 6f 79 6d 65  vices").Deployme
35f0: 6e 74 52 44 50 53 65 74 74 69 6e 67 73 0d 0a 09  ntRDPSettings...
3600: 09 24 6e 65 77 61 70 70 2e 69 63 6f 6e 70 61 74  .$newapp.iconpat
3610: 68 20 3d 20 22 25 53 59 53 54 45 4d 44 52 49 56  h = "%SYSTEMDRIV
3620: 45 25 5c 57 69 6e 64 6f 77 73 5c 73 79 73 74 65  E%\Windows\syste
3630: 6d 33 32 5c 6d 73 74 73 63 2e 65 78 65 22 0d 0a  m32\mstsc.exe"..
3640: 09 09 24 6e 65 77 61 70 70 2e 50 75 74 28 29 20  ..$newapp.Put() 
3650: 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 7d 20 65  | Out-Null...} e
3660: 6c 73 65 20 7b 47 65 74 2d 57 6d 69 4f 62 6a 65  lse {Get-WmiObje
3670: 63 74 20 2d 43 6c 61 73 73 20 22 57 69 6e 33 32  ct -Class "Win32
3680: 5f 54 53 52 65 6d 6f 74 65 44 65 73 6b 74 6f 70  _TSRemoteDesktop
3690: 22 20 2d 4e 61 6d 65 73 70 61 63 65 20 22 72 6f  " -Namespace "ro
36a0: 6f 74 5c 43 49 4d 56 32 5c 54 65 72 6d 69 6e 61  ot\CIMV2\Termina
36b0: 6c 53 65 72 76 69 63 65 73 22 20 7c 20 46 6f 72  lServices" | For
36c0: 45 61 63 68 2d 4f 62 6a 65 63 74 20 7b 24 5f 2e  Each-Object {$_.
36d0: 44 65 6c 65 74 65 28 29 20 7c 20 4f 75 74 2d 4e  Delete() | Out-N
36e0: 75 6c 6c 7d 7d 0d 0a 0d 0a 7d 0d 0a 0d 0a 66 6f  ull}}....}....fo
36f0: 72 65 61 63 68 20 28 24 41 70 70 6c 69 63 61 74  reach ($Applicat
3700: 69 6f 6e 20 69 6e 20 24 43 6f 6e 66 69 67 46 69  ion in $ConfigFi
3710: 6c 65 2e 52 65 6d 6f 74 65 50 72 6f 67 72 61 6d  le.RemoteProgram
3720: 73 2e 41 70 70 6c 69 63 61 74 69 6f 6e 29 20 7b  s.Application) {
3730: 0d 0a 09 69 66 20 28 28 47 65 74 2d 57 6d 69 4f  ...if ((Get-WmiO
3740: 62 6a 65 63 74 20 2d 4e 61 6d 65 73 70 61 63 65  bject -Namespace
3750: 20 22 72 6f 6f 74 5c 43 49 4d 56 32 5c 54 65 72   "root\CIMV2\Ter
3760: 6d 69 6e 61 6c 53 65 72 76 69 63 65 73 22 20 2d  minalServices" -
3770: 51 75 65 72 79 20 22 73 65 6c 65 63 74 20 2a 20  Query "select * 
3780: 66 72 6f 6d 20 57 69 6e 33 32 5f 54 53 50 75 62  from Win32_TSPub
3790: 6c 69 73 68 65 64 41 70 70 6c 69 63 61 74 69 6f  lishedApplicatio
37a0: 6e 20 77 68 65 72 65 20 61 6c 69 61 73 20 3d 20  n where alias = 
37b0: 27 24 41 70 70 6c 69 63 61 74 69 6f 6e 2e 41 6c  '$Application.Al
37c0: 69 61 73 27 22 29 20 2d 6e 65 20 24 6e 75 6c 6c  ias'") -ne $null
37d0: 29 20 7b 0d 0a 09 09 57 72 69 74 65 2d 57 61 72  ) {....Write-War
37e0: 6e 69 6e 67 20 22 54 68 65 20 61 70 70 6c 69 63  ning "The applic
37f0: 61 74 69 6f 6e 20 24 41 70 70 6c 69 63 61 74 69  ation $Applicati
3800: 6f 6e 2e 41 6c 69 61 73 20 61 6c 72 65 61 64 79  on.Alias already
3810: 20 65 78 69 73 74 21 22 0d 0a 09 09 63 6f 6e 74   exist!"....cont
3820: 69 6e 75 65 0d 0a 09 7d 0d 0a 09 24 6e 65 77 61  inue...}...$newa
3830: 70 70 20 3d 20 28 5b 77 6d 69 63 6c 61 73 73 5d  pp = ([wmiclass]
3840: 22 52 4f 4f 54 5c 43 49 4d 56 32 5c 54 65 72 6d  "ROOT\CIMV2\Term
3850: 69 6e 61 6c 53 65 72 76 69 63 65 73 3a 57 69 6e  inalServices:Win
3860: 33 32 5f 54 53 50 75 62 6c 69 73 68 65 64 41 70  32_TSPublishedAp
3870: 70 6c 69 63 61 74 69 6f 6e 22 29 2e 43 72 65 61  plication").Crea
3880: 74 65 49 6e 73 74 61 6e 63 65 28 29 0d 0a 09 24  teInstance()...$
3890: 6e 65 77 61 70 70 2e 41 6c 69 61 73 20 3d 20 24  newapp.Alias = $
38a0: 41 70 70 6c 69 63 61 74 69 6f 6e 2e 41 6c 69 61  Application.Alia
38b0: 73 0d 0a 09 24 6e 65 77 61 70 70 2e 50 61 74 68  s...$newapp.Path
38c0: 20 3d 20 24 41 70 70 6c 69 63 61 74 69 6f 6e 2e   = $Application.
38d0: 50 61 74 68 0d 0a 09 24 6e 65 77 61 70 70 2e 56  Path...$newapp.V
38e0: 50 61 74 68 20 3d 20 24 41 70 70 6c 69 63 61 74  Path = $Applicat
38f0: 69 6f 6e 2e 56 50 61 74 68 0d 0a 09 24 6e 65 77  ion.VPath...$new
3900: 61 70 70 2e 53 68 6f 77 49 6e 50 6f 72 74 61 6c  app.ShowInPortal
3910: 20 3d 20 28 24 41 70 70 6c 69 63 61 74 69 6f 6e   = ($Application
3920: 2e 53 68 6f 77 49 6e 54 53 57 41 20 2d 65 71 20  .ShowInTSWA -eq 
3930: 22 59 65 73 22 29 0d 0a 09 24 6e 65 77 61 70 70  "Yes")...$newapp
3940: 2e 4e 61 6d 65 20 3d 20 24 41 70 70 6c 69 63 61  .Name = $Applica
3950: 74 69 6f 6e 2e 4e 61 6d 65 0d 0a 09 24 6e 65 77  tion.Name...$new
3960: 61 70 70 2e 43 6f 6d 6d 61 6e 64 4c 69 6e 65 53  app.CommandLineS
3970: 65 74 74 69 6e 67 20 3d 20 24 41 70 70 6c 69 63  etting = $Applic
3980: 61 74 69 6f 6e 2e 43 6f 6d 6d 61 6e 64 4c 69 6e  ation.CommandLin
3990: 65 53 65 74 74 69 6e 67 0d 0a 09 24 6e 65 77 61  eSetting...$newa
39a0: 70 70 2e 52 65 71 75 69 72 65 64 43 6f 6d 6d 61  pp.RequiredComma
39b0: 6e 64 4c 69 6e 65 20 3d 20 24 41 70 70 6c 69 63  ndLine = $Applic
39c0: 61 74 69 6f 6e 2e 52 65 71 75 69 72 65 64 43 6f  ation.RequiredCo
39d0: 6d 6d 61 6e 64 4c 69 6e 65 0d 0a 09 24 6e 65 77  mmandLine...$new
39e0: 61 70 70 2e 49 63 6f 6e 49 6e 64 65 78 20 3d 20  app.IconIndex = 
39f0: 24 41 70 70 6c 69 63 61 74 69 6f 6e 2e 49 63 6f  $Application.Ico
3a00: 6e 49 6e 64 65 78 0d 0a 09 24 6e 65 77 61 70 70  nIndex...$newapp
3a10: 2e 49 63 6f 6e 50 61 74 68 20 3d 20 24 41 70 70  .IconPath = $App
3a20: 6c 69 63 61 74 69 6f 6e 2e 49 63 6f 6e 50 61 74  lication.IconPat
3a30: 68 0d 0a 09 24 6e 65 77 61 70 70 2e 52 44 50 46  h...$newapp.RDPF
3a40: 69 6c 65 43 6f 6e 74 65 6e 74 73 20 3d 20 24 41  ileContents = $A
3a50: 70 70 6c 69 63 61 74 69 6f 6e 2e 52 44 50 43 6f  pplication.RDPCo
3a60: 6e 74 65 6e 74 73 0d 0a 09 69 66 20 28 28 47 65  ntents...if ((Ge
3a70: 74 2d 57 6d 69 4f 62 6a 65 63 74 20 2d 43 6c 61  t-WmiObject -Cla
3a80: 73 73 20 57 69 6e 33 32 5f 4f 70 65 72 61 74 69  ss Win32_Operati
3a90: 6e 67 53 79 73 74 65 6d 29 2e 56 65 72 73 69 6f  ngSystem).Versio
3aa0: 6e 20 2d 67 65 20 36 2e 31 29 7b 24 6e 65 77 61  n -ge 6.1){$newa
3ab0: 70 70 2e 53 65 63 75 72 69 74 79 44 65 73 63 72  pp.SecurityDescr
3ac0: 69 70 74 6f 72 20 3d 20 24 41 70 70 6c 69 63 61  iptor = $Applica
3ad0: 74 69 6f 6e 2e 53 65 63 75 72 69 74 79 44 65 73  tion.SecurityDes
3ae0: 63 72 69 70 74 6f 72 7d 0d 0a 09 24 6e 65 77 61  criptor}...$newa
3af0: 70 70 2e 50 75 74 28 29 20 7c 20 4f 75 74 2d 4e  pp.Put() | Out-N
3b00: 75 6c 6c 0d 0a 09 69 66 20 28 24 3f 29 20 7b 57  ull...if ($?) {W
3b10: 72 69 74 65 2d 48 6f 73 74 20 22 54 68 65 20 61  rite-Host "The a
3b20: 70 70 6c 69 63 61 74 69 6f 6e 20 24 28 24 41 70  pplication $($Ap
3b30: 70 6c 69 63 61 74 69 6f 6e 2e 41 6c 69 61 73 29  plication.Alias)
3b40: 20 77 61 73 20 73 75 63 63 65 73 66 75 6c 6c 79   was succesfully
3b50: 20 63 72 65 61 74 65 64 22 20 2d 46 6f 72 65 67   created" -Foreg
3b60: 72 6f 75 6e 64 43 6f 6c 6f 72 20 79 65 6c 6c 6f  roundColor yello
3b70: 77 7d 0d 0a 7d 0d 0a 0d 0a 7d 0d 0a 0d 0a 66 75  w}..}....}....fu
3b80: 6e 63 74 69 6f 6e 20 45 78 70 6f 72 74 2d 54 53  nction Export-TS
3b90: 52 65 6d 6f 74 65 41 70 70 73 53 65 74 20 7b 0d  RemoteAppsSet {.
3ba0: 0a 3c 23 0d 0a 2e 53 59 4e 4f 50 53 49 53 0d 0a  .<#...SYNOPSIS..
3bb0: 45 78 70 6f 72 74 73 20 61 6c 6c 20 54 53 20 52  Exports all TS R
3bc0: 65 6d 6f 74 65 41 70 70 73 20 66 72 6f 6d 20 74  emoteApps from t
3bd0: 68 65 20 57 69 6e 64 6f 77 73 20 32 30 30 38 20  he Windows 2008 
3be0: 54 65 72 6d 69 6e 61 6c 20 53 65 72 76 65 72 2e  Terminal Server.
3bf0: 0d 0a 2e 44 45 53 43 52 49 50 54 49 4f 4e 0d 0a  ...DESCRIPTION..
3c00: 45 78 70 6f 72 74 73 20 61 6c 6c 20 54 53 20 52  Exports all TS R
3c10: 65 6d 6f 74 65 41 70 70 73 20 66 72 6f 6d 20 74  emoteApps from t
3c20: 68 65 20 57 69 6e 64 6f 77 73 20 32 30 30 38 20  he Windows 2008 
3c30: 54 65 72 6d 69 6e 61 6c 20 53 65 72 76 65 72 20  Terminal Server 
3c40: 74 6f 20 61 20 54 53 50 55 42 2d 66 69 6c 65 2e  to a TSPUB-file.
3c50: 0d 0a 4f 6e 65 20 6d 61 6e 64 61 74 6f 72 79 20  ..One mandatory 
3c60: 70 61 72 61 6d 65 74 65 72 3a 20 50 61 74 68 0d  parameter: Path.
3c70: 0a 2e 50 41 52 41 4d 45 54 45 52 20 70 61 74 68  ..PARAMETER path
3c80: 0d 0a 50 61 74 68 20 74 6f 20 74 68 65 20 54 53  ..Path to the TS
3c90: 50 55 42 2d 66 69 6c 65 20 74 6f 20 62 65 20 65  PUB-file to be e
3ca0: 78 70 6f 72 74 65 64 0d 0a 2e 45 58 41 4d 50 4c  xported...EXAMPL
3cb0: 45 0d 0a 45 78 70 6f 72 74 2d 54 53 52 65 6d 6f  E..Export-TSRemo
3cc0: 74 65 41 70 70 73 20 2d 50 61 74 68 20 43 3a 5c  teApps -Path C:\
3cd0: 74 65 6d 70 5c 52 65 6d 6f 74 65 41 70 70 73 2e  temp\RemoteApps.
3ce0: 74 73 70 75 62 0d 0a 45 78 70 6f 72 74 73 20 61  tspub..Exports a
3cf0: 6c 6c 20 52 65 6d 6f 74 65 41 70 70 73 20 74 6f  ll RemoteApps to
3d00: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 54   the specified T
3d10: 53 50 55 42 2d 66 69 6c 65 2e 0d 0a 2e 4e 4f 54  SPUB-file....NOT
3d20: 45 53 0d 0a 41 55 54 48 4f 52 3a 20 20 20 20 57  ES..AUTHOR:    W
3d30: 69 7a 61 72 64 65 6e 0d 0a 4c 41 53 54 45 44 49  izarden..LASTEDI
3d40: 54 3a 20 20 32 32 2e 31 31 2e 32 30 31 30 20 0d  T:  22.11.2010 .
3d50: 0a 23 3e 0d 0a 0d 0a 5b 43 6d 64 6c 65 74 42 69  .#>....[CmdletBi
3d60: 6e 64 69 6e 67 28 29 5d 0d 0a 20 20 20 20 70 61  nding()]..    pa
3d70: 72 61 6d 20 28 0d 0a 20 20 20 20 20 20 20 20 5b  ram (..        [
3d80: 70 61 72 61 6d 65 74 65 72 28 4d 61 6e 64 61 74  parameter(Mandat
3d90: 6f 72 79 3d 24 74 72 75 65 2c 56 61 6c 75 65 46  ory=$true,ValueF
3da0: 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24 74 72 75  romPipeline=$tru
3db0: 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c  e,ValueFromPipel
3dc0: 69 6e 65 42 79 50 72 6f 70 65 72 74 79 4e 61 6d  ineByPropertyNam
3dd0: 65 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20 20 20  e=$true)]..     
3de0: 20 20 20 5b 73 74 72 69 6e 67 5d 24 50 61 74 68     [string]$Path
3df0: 0d 0a 20 20 20 20 29 0d 0a 0d 0a 24 78 6d 6c 64  ..    )....$xmld
3e00: 61 74 61 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74  ata = New-Object
3e10: 20 78 6d 6c 0d 0a 24 6e 65 77 65 6c 65 6d 65 6e   xml..$newelemen
3e20: 74 20 3d 20 24 78 6d 6c 64 61 74 61 2e 43 72 65  t = $xmldata.Cre
3e30: 61 74 65 58 6d 6c 44 65 63 6c 61 72 61 74 69 6f  ateXmlDeclaratio
3e40: 6e 28 22 31 2e 30 22 2c 20 24 6e 75 6c 6c 2c 20  n("1.0", $null, 
3e50: 24 6e 75 6c 6c 29 0d 0a 24 78 6d 6c 64 61 74 61  $null)..$xmldata
3e60: 2e 41 70 70 65 6e 64 43 68 69 6c 64 28 24 6e 65  .AppendChild($ne
3e70: 77 65 6c 65 6d 65 6e 74 29 20 7c 20 4f 75 74 2d  welement) | Out-
3e80: 4e 75 6c 6c 0d 0a 24 6e 65 77 65 6c 65 6d 65 6e  Null..$newelemen
3e90: 74 20 3d 20 24 78 6d 6c 64 61 74 61 2e 43 72 65  t = $xmldata.Cre
3ea0: 61 74 65 45 6c 65 6d 65 6e 74 28 22 52 65 6d 6f  ateElement("Remo
3eb0: 74 65 50 72 6f 67 72 61 6d 73 22 29 0d 0a 0d 0a  tePrograms")....
3ec0: 24 6e 65 77 65 6c 65 6d 65 6e 74 2e 49 6e 6e 65  $newelement.Inne
3ed0: 72 58 6d 6c 20 3d 20 22 3c 55 73 65 41 6c 6c 6f  rXml = "<UseAllo
3ee0: 77 4c 69 73 74 20 2f 3e 22 0d 0a 0d 0a 24 57 69  wList />"....$Wi
3ef0: 6e 33 32 5f 54 53 50 75 62 6c 69 73 68 65 64 41  n32_TSPublishedA
3f00: 70 70 6c 69 63 61 74 69 6f 6e 4c 69 73 74 20 3d  pplicationList =
3f10: 20 47 65 74 2d 57 6d 69 4f 62 6a 65 63 74 20 2d   Get-WmiObject -
3f20: 4e 61 6d 65 73 70 61 63 65 20 22 72 6f 6f 74 5c  Namespace "root\
3f30: 43 49 4d 56 32 5c 54 65 72 6d 69 6e 61 6c 53 65  CIMV2\TerminalSe
3f40: 72 76 69 63 65 73 22 20 2d 43 6c 61 73 73 20 57  rvices" -Class W
3f50: 69 6e 33 32 5f 54 53 50 75 62 6c 69 73 68 65 64  in32_TSPublished
3f60: 41 70 70 6c 69 63 61 74 69 6f 6e 4c 69 73 74 0d  ApplicationList.
3f70: 0a 69 66 20 28 24 57 69 6e 33 32 5f 54 53 50 75  .if ($Win32_TSPu
3f80: 62 6c 69 73 68 65 64 41 70 70 6c 69 63 61 74 69  blishedApplicati
3f90: 6f 6e 4c 69 73 74 2e 44 69 73 61 62 6c 65 64 29  onList.Disabled)
3fa0: 7b 24 6e 65 77 65 6c 65 6d 65 6e 74 2e 55 73 65  {$newelement.Use
3fb0: 41 6c 6c 6f 77 4c 69 73 74 20 3d 20 22 4e 6f 22  AllowList = "No"
3fc0: 7d 20 65 6c 73 65 20 7b 24 6e 65 77 65 6c 65 6d  } else {$newelem
3fd0: 65 6e 74 2e 55 73 65 41 6c 6c 6f 77 4c 69 73 74  ent.UseAllowList
3fe0: 20 3d 20 22 59 65 73 22 7d 0d 0a 0d 0a 24 78 6d   = "Yes"}....$xm
3ff0: 6c 64 61 74 61 2e 41 70 70 65 6e 64 43 68 69 6c  ldata.AppendChil
4000: 64 28 24 6e 65 77 65 6c 65 6d 65 6e 74 29 20 7c  d($newelement) |
4010: 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 0d 0a 24 44 65   Out-Null....$De
4020: 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73  ploymentSettings
4030: 45 6c 65 6d 65 6e 74 20 3d 20 24 78 6d 6c 64 61  Element = $xmlda
4040: 74 61 2e 43 72 65 61 74 65 45 6c 65 6d 65 6e 74  ta.CreateElement
4050: 28 22 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74  ("DeploymentSett
4060: 69 6e 67 73 22 29 0d 0a 24 47 61 74 65 77 61 79  ings")..$Gateway
4070: 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74 20  SettingsElement 
4080: 3d 20 24 78 6d 6c 64 61 74 61 2e 43 72 65 61 74  = $xmldata.Creat
4090: 65 45 6c 65 6d 65 6e 74 28 22 47 61 74 65 77 61  eElement("Gatewa
40a0: 79 53 65 74 74 69 6e 67 73 22 29 0d 0a 24 43 65  ySettings")..$Ce
40b0: 72 74 69 66 69 63 61 74 65 53 65 74 74 69 6e 67  rtificateSetting
40c0: 73 45 6c 65 6d 65 6e 74 20 3d 20 24 78 6d 6c 64  sElement = $xmld
40d0: 61 74 61 2e 43 72 65 61 74 65 45 6c 65 6d 65 6e  ata.CreateElemen
40e0: 74 28 22 43 65 72 74 69 66 69 63 61 74 65 53 65  t("CertificateSe
40f0: 74 74 69 6e 67 73 22 29 0d 0a 23 24 6e 65 77 65  ttings")..#$newe
4100: 6c 65 6d 65 6e 74 2e 49 6e 6e 65 72 58 6d 6c 20  lement.InnerXml 
4110: 3d 20 22 3c 55 73 65 41 6c 6c 6f 77 4c 69 73 74  = "<UseAllowList
4120: 20 2f 3e 3c 44 65 70 6c 6f 79 6d 65 6e 74 53 65   /><DeploymentSe
4130: 74 74 69 6e 67 73 3e 3c 50 6f 72 74 20 2f 3e 3c  ttings><Port /><
4140: 46 61 72 6d 4e 61 6d 65 20 2f 3e 3c 47 61 74 65  FarmName /><Gate
4150: 77 61 79 53 65 74 74 69 6e 67 73 3e 3c 47 61 74  waySettings><Gat
4160: 65 77 61 79 4e 61 6d 65 20 2f 3e 3c 47 61 74 65  ewayName /><Gate
4170: 77 61 79 55 73 61 67 65 20 2f 3e 3c 47 61 74 65  wayUsage /><Gate
4180: 77 61 79 41 75 74 68 4d 6f 64 65 20 2f 3e 0d 0a  wayAuthMode />..
4190: 23 3c 55 73 65 43 61 63 68 65 64 43 72 65 64 73  #<UseCachedCreds
41a0: 20 2f 3e 3c 2f 47 61 74 65 77 61 79 53 65 74 74   /></GatewaySett
41b0: 69 6e 67 73 3e 3c 43 65 72 74 69 66 69 63 61 74  ings><Certificat
41c0: 65 53 65 74 74 69 6e 67 73 3e 3c 55 73 65 43 65  eSettings><UseCe
41d0: 72 74 69 66 69 63 61 74 65 20 2f 3e 3c 43 65 72  rtificate /><Cer
41e0: 74 69 66 69 63 61 74 65 53 69 7a 65 20 2f 3e 3c  tificateSize /><
41f0: 43 65 72 74 69 66 69 63 61 74 65 20 2f 3e 3c 43  Certificate /><C
4200: 65 72 74 69 66 69 63 61 74 65 49 73 73 75 65 64  ertificateIssued
4210: 54 6f 20 2f 3e 0d 0a 23 3c 43 65 72 74 69 66 69  To />..#<Certifi
4220: 63 61 74 65 49 73 73 75 65 64 42 79 20 2f 3e 3c  cateIssuedBy /><
4230: 43 65 72 74 69 66 69 63 61 74 65 45 78 70 69 72  CertificateExpir
4240: 65 73 4f 6e 20 2f 3e 3c 41 6c 6c 6f 77 46 6f 6e  esOn /><AllowFon
4250: 74 53 6d 6f 6f 74 68 69 6e 67 20 2f 3e 3c 55 73  tSmoothing /><Us
4260: 65 4d 75 6c 74 69 6d 6f 6e 20 2f 3e 3c 43 6f 6c  eMultimon /><Col
4270: 6f 72 42 69 74 44 65 70 74 68 20 2f 3e 3c 52 65  orBitDepth /><Re
4280: 64 69 72 65 63 74 69 6f 6e 53 65 74 74 69 6e 67  directionSetting
4290: 73 20 2f 3e 3c 43 75 73 74 6f 6d 52 64 70 53 65  s /><CustomRdpSe
42a0: 74 74 69 6e 67 73 20 2f 3e 0d 0a 23 3c 53 68 6f  ttings />..#<Sho
42b0: 77 52 65 6d 6f 74 65 44 65 73 6b 74 6f 70 20 2f  wRemoteDesktop /
42c0: 3e 3c 52 65 6d 6f 74 65 44 65 73 6b 74 6f 70 53  ><RemoteDesktopS
42d0: 65 63 75 72 69 74 79 44 65 73 63 72 69 70 74 6f  ecurityDescripto
42e0: 72 20 2f 3e 3c 55 73 65 4d 75 6c 74 69 6d 6f 6e  r /><UseMultimon
42f0: 20 2f 3e 3c 2f 43 65 72 74 69 66 69 63 61 74 65   /></Certificate
4300: 53 65 74 74 69 6e 67 73 3e 3c 2f 44 65 70 6c 6f  Settings></Deplo
4310: 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 3e 22 0d  ymentSettings>".
4320: 0a 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74  .$DeploymentSett
4330: 69 6e 67 73 20 3d 20 47 65 74 2d 57 6d 69 4f 62  ings = Get-WmiOb
4340: 6a 65 63 74 20 2d 4e 61 6d 65 73 70 61 63 65 20  ject -Namespace 
4350: 22 72 6f 6f 74 5c 43 49 4d 56 32 5c 54 65 72 6d  "root\CIMV2\Term
4360: 69 6e 61 6c 53 65 72 76 69 63 65 73 22 20 2d 43  inalServices" -C
4370: 6c 61 73 73 20 57 69 6e 33 32 5f 54 53 44 65 70  lass Win32_TSDep
4380: 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 0d  loymentSettings.
4390: 0a 0d 0a 69 66 20 28 24 44 65 70 6c 6f 79 6d 65  ...if ($Deployme
43a0: 6e 74 53 65 74 74 69 6e 67 73 2e 50 6f 72 74 29  ntSettings.Port)
43b0: 7b 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74  {$DeploymentSett
43c0: 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 49 6e 6e 65  ingsElement.Inne
43d0: 72 58 6d 6c 20 2b 3d 20 22 3c 50 6f 72 74 20 2f  rXml += "<Port /
43e0: 3e 22 3b 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65  >";$DeploymentSe
43f0: 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 50 6f  ttingsElement.Po
4400: 72 74 20 3d 20 24 44 65 70 6c 6f 79 6d 65 6e 74  rt = $Deployment
4410: 53 65 74 74 69 6e 67 73 2e 50 6f 72 74 2e 54 6f  Settings.Port.To
4420: 53 74 72 69 6e 67 28 29 7d 0d 0a 24 44 65 70 6c  String()}..$Depl
4430: 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 45 6c  oymentSettingsEl
4440: 65 6d 65 6e 74 2e 49 6e 6e 65 72 58 6d 6c 20 2b  ement.InnerXml +
4450: 3d 20 22 3c 53 65 72 76 65 72 41 75 74 68 20 2f  = "<ServerAuth /
4460: 3e 22 3b 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65  >";$DeploymentSe
4470: 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 53 65  ttingsElement.Se
4480: 72 76 65 72 41 75 74 68 20 3d 20 5b 73 74 72 69  rverAuth = [stri
4490: 6e 67 5d 5b 69 6e 74 5b 5d 5d 28 24 44 65 70 6c  ng][int[]]($Depl
44a0: 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 52  oymentSettings.R
44b0: 65 71 75 69 72 65 53 65 72 76 65 72 41 75 74 68  equireServerAuth
44c0: 29 0d 0a 69 66 20 28 24 44 65 70 6c 6f 79 6d 65  )..if ($Deployme
44d0: 6e 74 53 65 74 74 69 6e 67 73 2e 46 61 72 6d 4e  ntSettings.FarmN
44e0: 61 6d 65 29 7b 24 44 65 70 6c 6f 79 6d 65 6e 74  ame){$Deployment
44f0: 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e  SettingsElement.
4500: 49 6e 6e 65 72 58 6d 6c 20 2b 3d 20 22 3c 46 61  InnerXml += "<Fa
4510: 72 6d 4e 61 6d 65 20 2f 3e 22 3b 24 44 65 70 6c  rmName />";$Depl
4520: 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 45 6c  oymentSettingsEl
4530: 65 6d 65 6e 74 2e 46 61 72 6d 4e 61 6d 65 20 3d  ement.FarmName =
4540: 20 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74   $DeploymentSett
4550: 69 6e 67 73 2e 46 61 72 6d 4e 61 6d 65 2e 54 6f  ings.FarmName.To
4560: 53 74 72 69 6e 67 28 29 7d 0d 0a 0d 0a 69 66 20  String()}....if 
4570: 28 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74  ($DeploymentSett
4580: 69 6e 67 73 2e 47 61 74 65 77 61 79 4e 61 6d 65  ings.GatewayName
4590: 29 7b 24 47 61 74 65 77 61 79 53 65 74 74 69 6e  ){$GatewaySettin
45a0: 67 73 45 6c 65 6d 65 6e 74 2e 49 6e 6e 65 72 58  gsElement.InnerX
45b0: 6d 6c 20 2b 3d 20 22 3c 47 61 74 65 77 61 79 4e  ml += "<GatewayN
45c0: 61 6d 65 20 2f 3e 22 3b 24 47 61 74 65 77 61 79  ame />";$Gateway
45d0: 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e  SettingsElement.
45e0: 47 61 74 65 77 61 79 4e 61 6d 65 20 3d 20 24 44  GatewayName = $D
45f0: 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67  eploymentSetting
4600: 73 2e 47 61 74 65 77 61 79 4e 61 6d 65 2e 54 6f  s.GatewayName.To
4610: 53 74 72 69 6e 67 28 29 7d 0d 0a 24 47 61 74 65  String()}..$Gate
4620: 77 61 79 53 65 74 74 69 6e 67 73 45 6c 65 6d 65  waySettingsEleme
4630: 6e 74 2e 49 6e 6e 65 72 58 6d 6c 20 2b 3d 20 22  nt.InnerXml += "
4640: 3c 47 61 74 65 77 61 79 55 73 61 67 65 20 2f 3e  <GatewayUsage />
4650: 22 3b 24 47 61 74 65 77 61 79 53 65 74 74 69 6e  ";$GatewaySettin
4660: 67 73 45 6c 65 6d 65 6e 74 2e 47 61 74 65 77 61  gsElement.Gatewa
4670: 79 55 73 61 67 65 20 3d 20 24 44 65 70 6c 6f 79  yUsage = $Deploy
4680: 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 47 61 74  mentSettings.Gat
4690: 65 77 61 79 55 73 61 67 65 2e 54 6f 53 74 72 69  ewayUsage.ToStri
46a0: 6e 67 28 29 0d 0a 24 47 61 74 65 77 61 79 53 65  ng()..$GatewaySe
46b0: 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 49 6e  ttingsElement.In
46c0: 6e 65 72 58 6d 6c 20 2b 3d 20 22 3c 47 61 74 65  nerXml += "<Gate
46d0: 77 61 79 41 75 74 68 4d 6f 64 65 20 2f 3e 22 3b  wayAuthMode />";
46e0: 24 47 61 74 65 77 61 79 53 65 74 74 69 6e 67 73  $GatewaySettings
46f0: 45 6c 65 6d 65 6e 74 2e 47 61 74 65 77 61 79 41  Element.GatewayA
4700: 75 74 68 4d 6f 64 65 20 3d 20 24 44 65 70 6c 6f  uthMode = $Deplo
4710: 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 47 61  ymentSettings.Ga
4720: 74 65 77 61 79 41 75 74 68 4d 6f 64 65 2e 54 6f  tewayAuthMode.To
4730: 53 74 72 69 6e 67 28 29 0d 0a 24 47 61 74 65 77  String()..$Gatew
4740: 61 79 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e  aySettingsElemen
4750: 74 2e 49 6e 6e 65 72 58 6d 6c 20 2b 3d 20 22 3c  t.InnerXml += "<
4760: 55 73 65 43 61 63 68 65 64 43 72 65 64 73 20 2f  UseCachedCreds /
4770: 3e 22 3b 24 47 61 74 65 77 61 79 53 65 74 74 69  >";$GatewaySetti
4780: 6e 67 73 45 6c 65 6d 65 6e 74 2e 55 73 65 43 61  ngsElement.UseCa
4790: 63 68 65 64 43 72 65 64 73 20 3d 20 24 44 65 70  chedCreds = $Dep
47a0: 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e  loymentSettings.
47b0: 47 61 74 65 77 61 79 55 73 65 43 61 63 68 65 64  GatewayUseCached
47c0: 43 72 65 64 73 2e 54 6f 53 74 72 69 6e 67 28 29  Creds.ToString()
47d0: 0d 0a 0d 0a 24 43 65 72 74 69 66 69 63 61 74 65  ....$Certificate
47e0: 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e  SettingsElement.
47f0: 49 6e 6e 65 72 58 6d 6c 20 2b 3d 20 22 3c 55 73  InnerXml += "<Us
4800: 65 43 65 72 74 69 66 69 63 61 74 65 20 2f 3e 22  eCertificate />"
4810: 3b 24 43 65 72 74 69 66 69 63 61 74 65 53 65 74  ;$CertificateSet
4820: 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 55 73 65  tingsElement.Use
4830: 43 65 72 74 69 66 69 63 61 74 65 20 3d 20 24 44  Certificate = $D
4840: 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67  eploymentSetting
4850: 73 2e 48 61 73 43 65 72 74 69 66 69 63 61 74 65  s.HasCertificate
4860: 2e 54 6f 53 74 72 69 6e 67 28 29 0d 0a 69 66 20  .ToString()..if 
4870: 28 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74  ($DeploymentSett
4880: 69 6e 67 73 2e 43 65 72 74 69 66 69 63 61 74 65  ings.Certificate
4890: 48 61 73 68 29 7b 0d 0a 09 24 43 65 72 74 69 66  Hash){...$Certif
48a0: 69 63 61 74 65 53 65 74 74 69 6e 67 73 45 6c 65  icateSettingsEle
48b0: 6d 65 6e 74 2e 49 6e 6e 65 72 58 6d 6c 20 2b 3d  ment.InnerXml +=
48c0: 20 22 3c 43 65 72 74 69 66 69 63 61 74 65 53 69   "<CertificateSi
48d0: 7a 65 20 2f 3e 3c 43 65 72 74 69 66 69 63 61 74  ze /><Certificat
48e0: 65 20 2f 3e 22 0d 0a 09 24 43 65 72 74 69 66 69  e />"...$Certifi
48f0: 63 61 74 65 53 65 74 74 69 6e 67 73 45 6c 65 6d  cateSettingsElem
4900: 65 6e 74 2e 43 65 72 74 69 66 69 63 61 74 65 53  ent.CertificateS
4910: 69 7a 65 20 3d 20 24 44 65 70 6c 6f 79 6d 65 6e  ize = $Deploymen
4920: 74 53 65 74 74 69 6e 67 73 2e 43 65 72 74 69 66  tSettings.Certif
4930: 69 63 61 74 65 48 61 73 68 2e 4c 65 6e 67 74 68  icateHash.Length
4940: 2e 54 6f 53 74 72 69 6e 67 28 29 0d 0a 09 24 43  .ToString()...$C
4950: 65 72 74 69 66 69 63 61 74 65 53 65 74 74 69 6e  ertificateSettin
4960: 67 73 45 6c 65 6d 65 6e 74 2e 43 65 72 74 69 66  gsElement.Certif
4970: 69 63 61 74 65 20 3d 20 28 5b 53 79 73 74 65 6d  icate = ([System
4980: 2e 42 69 74 43 6f 6e 76 65 72 74 65 72 5d 3a 3a  .BitConverter]::
4990: 54 6f 53 74 72 69 6e 67 28 24 44 65 70 6c 6f 79  ToString($Deploy
49a0: 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 43 65 72  mentSettings.Cer
49b0: 74 69 66 69 63 61 74 65 48 61 73 68 29 29 2e 52  tificateHash)).R
49c0: 65 70 6c 61 63 65 28 22 2d 22 2c 22 22 29 0d 0a  eplace("-","")..
49d0: 7d 0d 0a 69 66 20 28 24 44 65 70 6c 6f 79 6d 65  }..if ($Deployme
49e0: 6e 74 53 65 74 74 69 6e 67 73 2e 43 65 72 74 69  ntSettings.Certi
49f0: 66 69 63 61 74 65 49 73 73 75 65 64 54 6f 29 7b  ficateIssuedTo){
4a00: 24 43 65 72 74 69 66 69 63 61 74 65 53 65 74 74  $CertificateSett
4a10: 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 49 6e 6e 65  ingsElement.Inne
4a20: 72 58 6d 6c 20 2b 3d 20 22 3c 43 65 72 74 69 66  rXml += "<Certif
4a30: 69 63 61 74 65 49 73 73 75 65 64 54 6f 20 2f 3e  icateIssuedTo />
4a40: 22 3b 24 43 65 72 74 69 66 69 63 61 74 65 53 65  ";$CertificateSe
4a50: 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 43 65  ttingsElement.Ce
4a60: 72 74 69 66 69 63 61 74 65 49 73 73 75 65 64 54  rtificateIssuedT
4a70: 6f 20 3d 20 24 44 65 70 6c 6f 79 6d 65 6e 74 53  o = $DeploymentS
4a80: 65 74 74 69 6e 67 73 2e 43 65 72 74 69 66 69 63  ettings.Certific
4a90: 61 74 65 49 73 73 75 65 64 54 6f 2e 54 6f 53 74  ateIssuedTo.ToSt
4aa0: 72 69 6e 67 28 29 7d 0d 0a 69 66 20 28 24 44 65  ring()}..if ($De
4ab0: 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73  ploymentSettings
4ac0: 2e 43 65 72 74 69 66 69 63 61 74 65 49 73 73 75  .CertificateIssu
4ad0: 65 64 42 79 29 7b 24 43 65 72 74 69 66 69 63 61  edBy){$Certifica
4ae0: 74 65 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e  teSettingsElemen
4af0: 74 2e 49 6e 6e 65 72 58 6d 6c 20 2b 3d 20 22 3c  t.InnerXml += "<
4b00: 43 65 72 74 69 66 69 63 61 74 65 49 73 73 75 65  CertificateIssue
4b10: 64 42 79 20 2f 3e 22 3b 24 43 65 72 74 69 66 69  dBy />";$Certifi
4b20: 63 61 74 65 53 65 74 74 69 6e 67 73 45 6c 65 6d  cateSettingsElem
4b30: 65 6e 74 2e 43 65 72 74 69 66 69 63 61 74 65 49  ent.CertificateI
4b40: 73 73 75 65 64 42 79 20 3d 20 24 44 65 70 6c 6f  ssuedBy = $Deplo
4b50: 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 43 65  ymentSettings.Ce
4b60: 72 74 69 66 69 63 61 74 65 49 73 73 75 65 64 42  rtificateIssuedB
4b70: 79 2e 54 6f 53 74 72 69 6e 67 28 29 7d 0d 0a 69  y.ToString()}..i
4b80: 66 20 28 5b 69 6e 74 36 34 5d 24 44 65 70 6c 6f  f ([int64]$Deplo
4b90: 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 43 65  ymentSettings.Ce
4ba0: 72 74 69 66 69 63 61 74 65 45 78 70 69 72 65 73  rtificateExpires
4bb0: 4f 6e 29 7b 24 43 65 72 74 69 66 69 63 61 74 65  On){$Certificate
4bc0: 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e  SettingsElement.
4bd0: 49 6e 6e 65 72 58 6d 6c 20 2b 3d 20 22 3c 43 65  InnerXml += "<Ce
4be0: 72 74 69 66 69 63 61 74 65 45 78 70 69 72 65 73  rtificateExpires
4bf0: 4f 6e 20 2f 3e 22 3b 24 43 65 72 74 69 66 69 63  On />";$Certific
4c00: 61 74 65 53 65 74 74 69 6e 67 73 45 6c 65 6d 65  ateSettingsEleme
4c10: 6e 74 2e 43 65 72 74 69 66 69 63 61 74 65 45 78  nt.CertificateEx
4c20: 70 69 72 65 73 4f 6e 20 3d 20 24 44 65 70 6c 6f  piresOn = $Deplo
4c30: 79 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 43 65  ymentSettings.Ce
4c40: 72 74 69 66 69 63 61 74 65 45 78 70 69 72 65 73  rtificateExpires
4c50: 4f 6e 2e 54 6f 53 74 72 69 6e 67 28 29 7d 0d 0a  On.ToString()}..
4c60: 24 43 65 72 74 69 66 69 63 61 74 65 53 65 74 74  $CertificateSett
4c70: 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 49 6e 6e 65  ingsElement.Inne
4c80: 72 58 6d 6c 20 2b 3d 20 22 3c 41 6c 6c 6f 77 46  rXml += "<AllowF
4c90: 6f 6e 74 53 6d 6f 6f 74 68 69 6e 67 20 2f 3e 22  ontSmoothing />"
4ca0: 3b 24 43 65 72 74 69 66 69 63 61 74 65 53 65 74  ;$CertificateSet
4cb0: 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 41 6c 6c  tingsElement.All
4cc0: 6f 77 46 6f 6e 74 53 6d 6f 6f 74 68 69 6e 67 20  owFontSmoothing 
4cd0: 3d 20 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74  = $DeploymentSet
4ce0: 74 69 6e 67 73 2e 41 6c 6c 6f 77 46 6f 6e 74 53  tings.AllowFontS
4cf0: 6d 6f 6f 74 68 69 6e 67 2e 54 6f 53 74 72 69 6e  moothing.ToStrin
4d00: 67 28 29 0d 0a 69 66 20 28 24 44 65 70 6c 6f 79  g()..if ($Deploy
4d10: 6d 65 6e 74 53 65 74 74 69 6e 67 73 2e 55 73 65  mentSettings.Use
4d20: 4d 75 6c 74 69 6d 6f 6e 20 2d 6e 65 20 24 6e 75  Multimon -ne $nu
4d30: 6c 6c 29 7b 24 43 65 72 74 69 66 69 63 61 74 65  ll){$Certificate
4d40: 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e  SettingsElement.
4d50: 49 6e 6e 65 72 58 6d 6c 20 2b 3d 20 22 3c 55 73  InnerXml += "<Us
4d60: 65 4d 75 6c 74 69 6d 6f 6e 20 2f 3e 22 3b 24 43  eMultimon />";$C
4d70: 65 72 74 69 66 69 63 61 74 65 53 65 74 74 69 6e  ertificateSettin
4d80: 67 73 45 6c 65 6d 65 6e 74 2e 55 73 65 4d 75 6c  gsElement.UseMul
4d90: 74 69 6d 6f 6e 20 3d 20 24 44 65 70 6c 6f 79 6d  timon = $Deploym
4da0: 65 6e 74 53 65 74 74 69 6e 67 73 2e 55 73 65 4d  entSettings.UseM
4db0: 75 6c 74 69 6d 6f 6e 2e 54 6f 53 74 72 69 6e 67  ultimon.ToString
4dc0: 28 29 7d 0d 0a 24 43 65 72 74 69 66 69 63 61 74  ()}..$Certificat
4dd0: 65 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74  eSettingsElement
4de0: 2e 49 6e 6e 65 72 58 6d 6c 20 2b 3d 20 22 3c 43  .InnerXml += "<C
4df0: 6f 6c 6f 72 42 69 74 44 65 70 74 68 20 2f 3e 22  olorBitDepth />"
4e00: 3b 24 43 65 72 74 69 66 69 63 61 74 65 53 65 74  ;$CertificateSet
4e10: 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 43 6f 6c  tingsElement.Col
4e20: 6f 72 42 69 74 44 65 70 74 68 20 3d 20 24 44 65  orBitDepth = $De
4e30: 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73  ploymentSettings
4e40: 2e 43 6f 6c 6f 72 42 69 74 44 65 70 74 68 2e 54  .ColorBitDepth.T
4e50: 6f 53 74 72 69 6e 67 28 29 0d 0a 24 43 65 72 74  oString()..$Cert
4e60: 69 66 69 63 61 74 65 53 65 74 74 69 6e 67 73 45  ificateSettingsE
4e70: 6c 65 6d 65 6e 74 2e 49 6e 6e 65 72 58 6d 6c 20  lement.InnerXml 
4e80: 2b 3d 20 22 3c 52 65 64 69 72 65 63 74 69 6f 6e  += "<Redirection
4e90: 53 65 74 74 69 6e 67 73 20 2f 3e 22 3b 24 43 65  Settings />";$Ce
4ea0: 72 74 69 66 69 63 61 74 65 53 65 74 74 69 6e 67  rtificateSetting
4eb0: 73 45 6c 65 6d 65 6e 74 2e 52 65 64 69 72 65 63  sElement.Redirec
4ec0: 74 69 6f 6e 53 65 74 74 69 6e 67 73 20 3d 20 24  tionSettings = $
4ed0: 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e  DeploymentSettin
4ee0: 67 73 2e 52 65 64 69 72 65 63 74 69 6f 6e 4f 70  gs.RedirectionOp
4ef0: 74 69 6f 6e 73 2e 54 6f 53 74 72 69 6e 67 28 29  tions.ToString()
4f00: 0d 0a 69 66 20 28 24 44 65 70 6c 6f 79 6d 65 6e  ..if ($Deploymen
4f10: 74 53 65 74 74 69 6e 67 73 2e 43 75 73 74 6f 6d  tSettings.Custom
4f20: 52 44 50 53 65 74 74 69 6e 67 73 29 7b 24 43 65  RDPSettings){$Ce
4f30: 72 74 69 66 69 63 61 74 65 53 65 74 74 69 6e 67  rtificateSetting
4f40: 73 45 6c 65 6d 65 6e 74 2e 49 6e 6e 65 72 58 6d  sElement.InnerXm
4f50: 6c 20 2b 3d 20 22 3c 43 75 73 74 6f 6d 52 64 70  l += "<CustomRdp
4f60: 53 65 74 74 69 6e 67 73 20 2f 3e 22 3b 24 43 65  Settings />";$Ce
4f70: 72 74 69 66 69 63 61 74 65 53 65 74 74 69 6e 67  rtificateSetting
4f80: 73 45 6c 65 6d 65 6e 74 2e 43 75 73 74 6f 6d 52  sElement.CustomR
4f90: 64 70 53 65 74 74 69 6e 67 73 20 3d 20 24 44 65  dpSettings = $De
4fa0: 70 6c 6f 79 6d 65 6e 74 53 65 74 74 69 6e 67 73  ploymentSettings
4fb0: 2e 43 75 73 74 6f 6d 52 44 50 53 65 74 74 69 6e  .CustomRDPSettin
4fc0: 67 73 2e 54 6f 53 74 72 69 6e 67 28 29 7d 0d 0a  gs.ToString()}..
4fd0: 24 43 65 72 74 69 66 69 63 61 74 65 53 65 74 74  $CertificateSett
4fe0: 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 49 6e 6e 65  ingsElement.Inne
4ff0: 72 58 6d 6c 20 2b 3d 20 22 3c 53 68 6f 77 52 65  rXml += "<ShowRe
5000: 6d 6f 74 65 44 65 73 6b 74 6f 70 20 2f 3e 22 3b  moteDesktop />";
5010: 24 43 65 72 74 69 66 69 63 61 74 65 53 65 74 74  $CertificateSett
5020: 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 53 68 6f 77  ingsElement.Show
5030: 52 65 6d 6f 74 65 44 65 73 6b 74 6f 70 20 3d 20  RemoteDesktop = 
5040: 5b 73 74 72 69 6e 67 5d 5b 62 6f 6f 6c 5d 28 47  [string][bool](G
5050: 65 74 2d 57 6d 69 4f 62 6a 65 63 74 20 2d 4e 61  et-WmiObject -Na
5060: 6d 65 73 70 61 63 65 20 22 72 6f 6f 74 5c 43 49  mespace "root\CI
5070: 4d 56 32 5c 54 65 72 6d 69 6e 61 6c 53 65 72 76  MV2\TerminalServ
5080: 69 63 65 73 22 20 2d 43 6c 61 73 73 20 57 69 6e  ices" -Class Win
5090: 33 32 5f 54 53 52 65 6d 6f 74 65 44 65 73 6b 74  32_TSRemoteDeskt
50a0: 6f 70 29 0d 0a 24 43 65 72 74 69 66 69 63 61 74  op)..$Certificat
50b0: 65 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74  eSettingsElement
50c0: 2e 49 6e 6e 65 72 58 6d 6c 20 2b 3d 20 22 3c 52  .InnerXml += "<R
50d0: 65 6d 6f 74 65 44 65 73 6b 74 6f 70 53 65 63 75  emoteDesktopSecu
50e0: 72 69 74 79 44 65 73 63 72 69 70 74 6f 72 20 2f  rityDescriptor /
50f0: 3e 22 0d 0a 0d 0a 69 66 20 28 24 47 61 74 65 77  >"....if ($Gatew
5100: 61 79 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e  aySettingsElemen
5110: 74 2e 49 6e 6e 65 72 58 6d 6c 20 2d 6e 65 20 22  t.InnerXml -ne "
5120: 22 29 7b 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65  "){$DeploymentSe
5130: 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 41 70  ttingsElement.Ap
5140: 70 65 6e 64 43 68 69 6c 64 28 24 47 61 74 65 77  pendChild($Gatew
5150: 61 79 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e  aySettingsElemen
5160: 74 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 7d 0d 0a  t) | Out-Null}..
5170: 69 66 20 28 24 43 65 72 74 69 66 69 63 61 74 65  if ($Certificate
5180: 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74 2e  SettingsElement.
5190: 49 6e 6e 65 72 58 6d 6c 20 2d 6e 65 20 22 22 29  InnerXml -ne "")
51a0: 7b 24 44 65 70 6c 6f 79 6d 65 6e 74 53 65 74 74  {$DeploymentSett
51b0: 69 6e 67 73 45 6c 65 6d 65 6e 74 2e 41 70 70 65  ingsElement.Appe
51c0: 6e 64 43 68 69 6c 64 28 24 43 65 72 74 69 66 69  ndChild($Certifi
51d0: 63 61 74 65 53 65 74 74 69 6e 67 73 45 6c 65 6d  cateSettingsElem
51e0: 65 6e 74 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 7d  ent) | Out-Null}
51f0: 0d 0a 69 66 20 28 24 44 65 70 6c 6f 79 6d 65 6e  ..if ($Deploymen
5200: 74 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74  tSettingsElement
5210: 2e 49 6e 6e 65 72 58 6d 6c 20 2d 6e 65 20 22 22  .InnerXml -ne ""
5220: 29 7b 24 78 6d 6c 64 61 74 61 2e 52 65 6d 6f 74  ){$xmldata.Remot
5230: 65 50 72 6f 67 72 61 6d 73 2e 41 70 70 65 6e 64  ePrograms.Append
5240: 43 68 69 6c 64 28 24 44 65 70 6c 6f 79 6d 65 6e  Child($Deploymen
5250: 74 53 65 74 74 69 6e 67 73 45 6c 65 6d 65 6e 74  tSettingsElement
5260: 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 7d 0d 0a 57  ) | Out-Null}..W
5270: 72 69 74 65 2d 48 6f 73 74 20 22 54 68 65 20 73  rite-Host "The s
5280: 65 74 74 69 6e 67 73 20 77 61 73 20 73 75 63 63  ettings was succ
5290: 65 73 66 75 6c 6c 79 20 65 78 70 6f 72 74 65 64  esfully exported
52a0: 22 20 2d 46 6f 72 65 67 72 6f 75 6e 64 43 6f 6c  " -ForegroundCol
52b0: 6f 72 20 79 65 6c 6c 6f 77 0d 0a 0d 0a 47 65 74  or yellow....Get
52c0: 2d 57 6d 69 4f 62 6a 65 63 74 20 2d 4e 61 6d 65  -WmiObject -Name
52d0: 73 70 61 63 65 20 22 72 6f 6f 74 5c 43 49 4d 56  space "root\CIMV
52e0: 32 5c 54 65 72 6d 69 6e 61 6c 53 65 72 76 69 63  2\TerminalServic
52f0: 65 73 22 20 2d 43 6c 61 73 73 20 57 69 6e 33 32  es" -Class Win32
5300: 5f 54 53 50 75 62 6c 69 73 68 65 64 41 70 70 6c  _TSPublishedAppl
5310: 69 63 61 74 69 6f 6e 20 7c 20 46 6f 72 45 61 63  ication | ForEac
5320: 68 2d 4f 62 6a 65 63 74 20 7b 0d 0a 09 24 6e 65  h-Object {...$ne
5330: 77 65 6c 65 6d 65 6e 74 20 3d 20 24 78 6d 6c 64  welement = $xmld
5340: 61 74 61 2e 43 72 65 61 74 65 45 6c 65 6d 65 6e  ata.CreateElemen
5350: 74 28 22 41 70 70 6c 69 63 61 74 69 6f 6e 22 29  t("Application")
5360: 0d 0a 0d 0a 23 09 24 6e 65 77 65 6c 65 6d 65 6e  ....#.$newelemen
5370: 74 2e 49 6e 6e 65 72 58 6d 6c 20 3d 20 22 3c 4e  t.InnerXml = "<N
5380: 61 6d 65 20 2f 3e 3c 41 6c 69 61 73 20 2f 3e 3c  ame /><Alias /><
5390: 53 65 63 75 72 69 74 79 44 65 73 63 72 69 70 74  SecurityDescript
53a0: 6f 72 20 2f 3e 3c 50 61 74 68 20 2f 3e 3c 56 50  or /><Path /><VP
53b0: 61 74 68 20 2f 3e 3c 53 68 6f 77 49 6e 54 53 57  ath /><ShowInTSW
53c0: 41 20 2f 3e 3c 52 65 71 75 69 72 65 64 43 6f 6d  A /><RequiredCom
53d0: 6d 61 6e 64 4c 69 6e 65 20 2f 3e 3c 49 63 6f 6e  mandLine /><Icon
53e0: 50 61 74 68 20 2f 3e 3c 49 63 6f 6e 49 6e 64 65  Path /><IconInde
53f0: 78 20 2f 3e 3c 43 6f 6d 6d 61 6e 64 4c 69 6e 65  x /><CommandLine
5400: 53 65 74 74 69 6e 67 20 2f 3e 3c 52 44 50 43 6f  Setting /><RDPCo
5410: 6e 74 65 6e 74 73 20 2f 3e 22 0d 0a 09 69 66 20  ntents />"...if 
5420: 28 24 5f 2e 4e 61 6d 65 29 7b 24 6e 65 77 65 6c  ($_.Name){$newel
5430: 65 6d 65 6e 74 2e 49 6e 6e 65 72 58 6d 6c 20 2b  ement.InnerXml +
5440: 3d 20 22 3c 4e 61 6d 65 20 2f 3e 22 3b 24 6e 65  = "<Name />";$ne
5450: 77 65 6c 65 6d 65 6e 74 2e 4e 61 6d 65 20 3d 20  welement.Name = 
5460: 24 5f 2e 4e 61 6d 65 2e 54 6f 53 74 72 69 6e 67  $_.Name.ToString
5470: 28 29 7d 0d 0a 09 69 66 20 28 24 5f 2e 41 6c 69  ()}...if ($_.Ali
5480: 61 73 29 7b 24 6e 65 77 65 6c 65 6d 65 6e 74 2e  as){$newelement.
5490: 49 6e 6e 65 72 58 6d 6c 20 2b 3d 20 22 3c 41 6c  InnerXml += "<Al
54a0: 69 61 73 20 2f 3e 22 3b 24 6e 65 77 65 6c 65 6d  ias />";$newelem
54b0: 65 6e 74 2e 41 6c 69 61 73 20 3d 20 24 5f 2e 41  ent.Alias = $_.A
54c0: 6c 69 61 73 2e 54 6f 53 74 72 69 6e 67 28 29 7d  lias.ToString()}
54d0: 0d 0a 09 24 6e 65 77 65 6c 65 6d 65 6e 74 2e 49  ...$newelement.I
54e0: 6e 6e 65 72 58 6d 6c 20 2b 3d 20 22 3c 53 65 63  nnerXml += "<Sec
54f0: 75 72 69 74 79 44 65 73 63 72 69 70 74 6f 72 20  urityDescriptor 
5500: 2f 3e 22 3b 69 66 20 28 24 5f 2e 53 65 63 75 72  />";if ($_.Secur
5510: 69 74 79 44 65 73 63 72 69 70 74 6f 72 29 7b 24  ityDescriptor){$
5520: 6e 65 77 65 6c 65 6d 65 6e 74 2e 53 65 63 75 72  newelement.Secur
5530: 69 74 79 44 65 73 63 72 69 70 74 6f 72 20 3d 20  ityDescriptor = 
5540: 24 5f 2e 53 65 63 75 72 69 74 79 44 65 73 63 72  $_.SecurityDescr
5550: 69 70 74 6f 72 2e 54 6f 53 74 72 69 6e 67 28 29  iptor.ToString()
5560: 7d 0d 0a 09 69 66 20 28 24 5f 2e 50 61 74 68 29  }...if ($_.Path)
5570: 7b 24 6e 65 77 65 6c 65 6d 65 6e 74 2e 49 6e 6e  {$newelement.Inn
5580: 65 72 58 6d 6c 20 2b 3d 20 22 3c 50 61 74 68 20  erXml += "<Path 
5590: 2f 3e 22 3b 24 6e 65 77 65 6c 65 6d 65 6e 74 2e  />";$newelement.
55a0: 50 61 74 68 20 3d 20 24 5f 2e 50 61 74 68 2e 54  Path = $_.Path.T
55b0: 6f 53 74 72 69 6e 67 28 29 7d 0d 0a 09 24 6e 65  oString()}...$ne
55c0: 77 65 6c 65 6d 65 6e 74 2e 49 6e 6e 65 72 58 6d  welement.InnerXm
55d0: 6c 20 2b 3d 20 22 3c 56 50 61 74 68 20 2f 3e 22  l += "<VPath />"
55e0: 3b 69 66 20 28 24 5f 2e 56 50 61 74 68 29 7b 24  ;if ($_.VPath){$
55f0: 6e 65 77 65 6c 65 6d 65 6e 74 2e 56 50 61 74 68  newelement.VPath
5600: 20 3d 20 24 5f 2e 56 50 61 74 68 2e 54 6f 53 74   = $_.VPath.ToSt
5610: 72 69 6e 67 28 29 7d 0d 0a 09 69 66 20 28 24 5f  ring()}...if ($_
5620: 2e 53 68 6f 77 49 6e 50 6f 72 74 61 6c 29 7b 24  .ShowInPortal){$
5630: 6e 65 77 65 6c 65 6d 65 6e 74 2e 49 6e 6e 65 72  newelement.Inner
5640: 58 6d 6c 20 2b 3d 20 22 3c 53 68 6f 77 49 6e 54  Xml += "<ShowInT
5650: 53 57 41 20 2f 3e 22 3b 24 6e 65 77 65 6c 65 6d  SWA />";$newelem
5660: 65 6e 74 2e 53 68 6f 77 49 6e 54 53 57 41 20 3d  ent.ShowInTSWA =
5670: 20 22 59 65 73 22 7d 20 65 6c 73 65 20 7b 24 6e   "Yes"} else {$n
5680: 65 77 65 6c 65 6d 65 6e 74 2e 49 6e 6e 65 72 58  ewelement.InnerX
5690: 6d 6c 20 2b 3d 20 22 3c 53 68 6f 77 49 6e 54 53  ml += "<ShowInTS
56a0: 57 41 20 2f 3e 22 3b 24 6e 65 77 65 6c 65 6d 65  WA />";$neweleme
56b0: 6e 74 2e 53 68 6f 77 49 6e 54 53 57 41 20 3d 20  nt.ShowInTSWA = 
56c0: 22 4e 6f 22 7d 0d 0a 09 24 6e 65 77 65 6c 65 6d  "No"}...$newelem
56d0: 65 6e 74 2e 49 6e 6e 65 72 58 6d 6c 20 2b 3d 20  ent.InnerXml += 
56e0: 22 3c 52 65 71 75 69 72 65 64 43 6f 6d 6d 61 6e  "<RequiredComman
56f0: 64 4c 69 6e 65 20 2f 3e 22 3b 69 66 20 28 24 5f  dLine />";if ($_
5700: 2e 52 65 71 75 69 72 65 64 43 6f 6d 6d 61 6e 64  .RequiredCommand
5710: 4c 69 6e 65 29 7b 24 6e 65 77 65 6c 65 6d 65 6e  Line){$newelemen
5720: 74 2e 52 65 71 75 69 72 65 64 43 6f 6d 6d 61 6e  t.RequiredComman
5730: 64 4c 69 6e 65 20 3d 20 24 5f 2e 52 65 71 75 69  dLine = $_.Requi
5740: 72 65 64 43 6f 6d 6d 61 6e 64 4c 69 6e 65 2e 54  redCommandLine.T
5750: 6f 53 74 72 69 6e 67 28 29 7d 0d 0a 09 69 66 20  oString()}...if 
5760: 28 24 5f 2e 49 63 6f 6e 50 61 74 68 29 7b 24 6e  ($_.IconPath){$n
5770: 65 77 65 6c 65 6d 65 6e 74 2e 49 6e 6e 65 72 58  ewelement.InnerX
5780: 6d 6c 20 2b 3d 20 22 3c 49 63 6f 6e 50 61 74 68  ml += "<IconPath
5790: 20 2f 3e 22 3b 24 6e 65 77 65 6c 65 6d 65 6e 74   />";$newelement
57a0: 2e 49 63 6f 6e 50 61 74 68 20 3d 20 24 5f 2e 49  .IconPath = $_.I
57b0: 63 6f 6e 50 61 74 68 2e 54 6f 53 74 72 69 6e 67  conPath.ToString
57c0: 28 29 7d 0d 0a 09 24 6e 65 77 65 6c 65 6d 65 6e  ()}...$newelemen
57d0: 74 2e 49 6e 6e 65 72 58 6d 6c 20 2b 3d 20 22 3c  t.InnerXml += "<
57e0: 49 63 6f 6e 49 6e 64 65 78 20 2f 3e 22 3b 24 6e  IconIndex />";$n
57f0: 65 77 65 6c 65 6d 65 6e 74 2e 49 63 6f 6e 49 6e  ewelement.IconIn
5800: 64 65 78 20 3d 20 24 5f 2e 49 63 6f 6e 49 6e 64  dex = $_.IconInd
5810: 65 78 2e 54 6f 53 74 72 69 6e 67 28 29 0d 0a 09  ex.ToString()...
5820: 24 6e 65 77 65 6c 65 6d 65 6e 74 2e 49 6e 6e 65  $newelement.Inne
5830: 72 58 6d 6c 20 2b 3d 20 22 3c 43 6f 6d 6d 61 6e  rXml += "<Comman
5840: 64 4c 69 6e 65 53 65 74 74 69 6e 67 20 2f 3e 22  dLineSetting />"
5850: 3b 24 6e 65 77 65 6c 65 6d 65 6e 74 2e 43 6f 6d  ;$newelement.Com
5860: 6d 61 6e 64 4c 69 6e 65 53 65 74 74 69 6e 67 20  mandLineSetting 
5870: 3d 20 24 5f 2e 43 6f 6d 6d 61 6e 64 4c 69 6e 65  = $_.CommandLine
5880: 53 65 74 74 69 6e 67 2e 54 6f 53 74 72 69 6e 67  Setting.ToString
5890: 28 29 0d 0a 09 69 66 20 28 24 5f 2e 52 44 50 46  ()...if ($_.RDPF
58a0: 69 6c 65 43 6f 6e 74 65 6e 74 73 29 7b 24 6e 65  ileContents){$ne
58b0: 77 65 6c 65 6d 65 6e 74 2e 49 6e 6e 65 72 58 6d  welement.InnerXm
58c0: 6c 20 2b 3d 20 22 3c 52 44 50 43 6f 6e 74 65 6e  l += "<RDPConten
58d0: 74 73 20 2f 3e 22 3b 24 6e 65 77 65 6c 65 6d 65  ts />";$neweleme
58e0: 6e 74 2e 52 44 50 43 6f 6e 74 65 6e 74 73 20 3d  nt.RDPContents =
58f0: 20 24 5f 2e 52 44 50 46 69 6c 65 43 6f 6e 74 65   $_.RDPFileConte
5900: 6e 74 73 2e 54 6f 53 74 72 69 6e 67 28 29 7d 0d  nts.ToString()}.
5910: 0a 0d 0a 09 24 78 6d 6c 64 61 74 61 2e 52 65 6d  ....$xmldata.Rem
5920: 6f 74 65 50 72 6f 67 72 61 6d 73 2e 41 70 70 65  otePrograms.Appe
5930: 6e 64 43 68 69 6c 64 28 24 6e 65 77 65 6c 65 6d  ndChild($newelem
5940: 65 6e 74 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d  ent) | Out-Null.
5950: 0a 09 57 72 69 74 65 2d 48 6f 73 74 20 22 54 68  ..Write-Host "Th
5960: 65 20 24 28 24 6e 65 77 65 6c 65 6d 65 6e 74 2e  e $($newelement.
5970: 41 6c 69 61 73 29 20 77 61 73 20 73 75 63 63 65  Alias) was succe
5980: 73 66 75 6c 6c 79 20 65 78 70 6f 72 74 65 64 22  sfully exported"
5990: 20 2d 46 6f 72 65 67 72 6f 75 6e 64 43 6f 6c 6f   -ForegroundColo
59a0: 72 20 79 65 6c 6c 6f 77 0d 0a 7d 0d 0a 0d 0a 24  r yellow..}....$
59b0: 78 6d 6c 64 61 74 61 2e 53 61 76 65 28 24 50 61  xmldata.Save($Pa
59c0: 74 68 29 0d 0a 69 66 20 28 24 3f 29 20 7b 57 72  th)..if ($?) {Wr
59d0: 69 74 65 2d 48 6f 73 74 20 22 54 68 65 20 24 50  ite-Host "The $P
59e0: 61 74 68 20 73 61 76 65 64 20 77 61 73 20 73 75  ath saved was su
59f0: 63 63 65 73 66 75 6c 6c 79 22 20 2d 46 6f 72 65  ccesfully" -Fore
5a00: 67 72 6f 75 6e 64 43 6f 6c 6f 72 20 79 65 6c 6c  groundColor yell
5a10: 6f 77 7d 0d 0a 0d 0a 7d 0d 0a                    ow}....}..