PoshCode Archive  Hex Artifact Content

Artifact 7b16a00e0bcf91e24ccbb9257d367bd7f0834bab3ef8f05865dac6ccc5597989:

  • File VMware-Lab-Manager-4-x.ps1 — part of check-in [2efb859dd5] at 2018-06-10 13:07:57 on branch trunk — Based on poshcode.org/753 – minor mods to support new mandatory authentication parameters in Lab Manager 4.x. (user: oldsienna size: 3804)

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 56  hell..# title: V
0030: 4d 77 61 72 65 20 4c 61 62 20 4d 61 6e 61 67 65  Mware Lab Manage
0040: 72 20 34 2e 78 0d 0a 23 20 64 65 73 63 72 69 70  r 4.x..# descrip
0050: 74 69 6f 6e 3a 20 42 61 73 65 64 20 6f 6e 20 70  tion: Based on p
0060: 6f 73 68 63 6f 64 65 2e 6f 72 67 2f 37 35 33 20  oshcode.org/753 
0070: e2 80 93 20 6d 69 6e 6f 72 20 6d 6f 64 73 20 74  ... minor mods t
0080: 6f 20 73 75 70 70 6f 72 74 20 6e 65 77 20 6d 61  o support new ma
0090: 6e 64 61 74 6f 72 79 20 61 75 74 68 65 6e 74 69  ndatory authenti
00a0: 63 61 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72  cation parameter
00b0: 73 20 69 6e 20 4c 61 62 20 4d 61 6e 61 67 65 72  s in Lab Manager
00c0: 20 34 2e 78 2e 0d 0a 23 20 76 65 72 73 69 6f 6e   4.x...# version
00d0: 3a 20 30 2e 31 0d 0a 23 20 74 79 70 65 3a 20 66  : 0.1..# type: f
00e0: 75 6e 63 74 69 6f 6e 0d 0a 23 20 61 75 74 68 6f  unction..# autho
00f0: 72 3a 20 6f 6c 64 73 69 65 6e 6e 61 0d 0a 23 20  r: oldsienna..# 
0100: 6c 69 63 65 6e 73 65 3a 20 43 43 30 0d 0a 23 20  license: CC0..# 
0110: 66 75 6e 63 74 69 6f 6e 3a 20 49 67 6e 6f 72 65  function: Ignore
0120: 2d 53 73 6c 45 72 72 6f 72 73 0d 0a 23 20 78 2d  -SslErrors..# x-
0130: 70 6f 73 68 63 6f 64 65 2d 69 64 3a 20 32 32 36  poshcode-id: 226
0140: 33 0d 0a 23 20 78 2d 61 72 63 68 69 76 65 64 3a  3..# x-archived:
0150: 20 32 30 31 35 2d 30 34 2d 31 31 54 30 38 3a 35   2015-04-11T08:5
0160: 31 3a 34 32 0d 0a 23 20 78 2d 70 75 62 6c 69 73  1:42..# x-publis
0170: 68 65 64 3a 20 32 30 31 31 2d 30 39 2d 32 32 54  hed: 2011-09-22T
0180: 31 36 3a 32 37 3a 30 30 0d 0a 23 0d 0a 23 20 53  16:27:00..#..# S
0190: 61 6d 70 6c 65 20 63 6f 64 65 20 74 6f 20 64 65  ample code to de
01a0: 6d 6f 6e 73 74 72 61 74 65 20 50 6f 77 65 72 53  monstrate PowerS
01b0: 68 65 6c 6c 20 32 2e 30 20 69 6e 74 65 67 72 61  hell 2.0 integra
01c0: 74 69 6f 6e 20 77 69 74 68 20 4c 61 62 20 4d 61  tion with Lab Ma
01d0: 6e 61 67 65 72 20 41 50 49 73 2e 20 4d 61 6a 6f  nager APIs. Majo
01e0: 72 69 74 79 20 6f 66 20 63 6f 64 65 20 63 61 6e  rity of code can
01f0: 20 62 65 20 6f 6d 69 74 74 65 64 20 69 66 20 70   be omitted if p
0200: 72 6f 70 65 72 6c 79 20 73 69 67 6e 65 64 20 53  roperly signed S
0210: 53 4c 20 63 65 72 74 69 66 69 63 61 74 65 73 20  SL certificates 
0220: 61 72 65 20 75 73 65 64 2e 0d 0a 23 0d 0a 66 75  are used...#..fu
0230: 6e 63 74 69 6f 6e 20 49 67 6e 6f 72 65 2d 53 73  nction Ignore-Ss
0240: 6c 45 72 72 6f 72 73 20 7b 0d 0a 09 23 20 43 72  lErrors {...# Cr
0250: 65 61 74 65 20 61 20 63 6f 6d 70 69 6c 61 74 69  eate a compilati
0260: 6f 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0d 0a  on environment..
0270: 09 24 50 72 6f 76 69 64 65 72 3d 4e 65 77 2d 4f  .$Provider=New-O
0280: 62 6a 65 63 74 20 4d 69 63 72 6f 73 6f 66 74 2e  bject Microsoft.
0290: 43 53 68 61 72 70 2e 43 53 68 61 72 70 43 6f 64  CSharp.CSharpCod
02a0: 65 50 72 6f 76 69 64 65 72 0d 0a 09 24 43 6f 6d  eProvider...$Com
02b0: 70 69 6c 65 72 3d 24 50 72 6f 76 69 64 65 72 2e  piler=$Provider.
02c0: 43 72 65 61 74 65 43 6f 6d 70 69 6c 65 72 28 29  CreateCompiler()
02d0: 0d 0a 09 24 50 61 72 61 6d 73 3d 4e 65 77 2d 4f  ...$Params=New-O
02e0: 62 6a 65 63 74 20 53 79 73 74 65 6d 2e 43 6f 64  bject System.Cod
02f0: 65 44 6f 6d 2e 43 6f 6d 70 69 6c 65 72 2e 43 6f  eDom.Compiler.Co
0300: 6d 70 69 6c 65 72 50 61 72 61 6d 65 74 65 72 73  mpilerParameters
0310: 0d 0a 09 24 50 61 72 61 6d 73 2e 47 65 6e 65 72  ...$Params.Gener
0320: 61 74 65 45 78 65 63 75 74 61 62 6c 65 3d 24 46  ateExecutable=$F
0330: 61 6c 73 65 0d 0a 09 24 50 61 72 61 6d 73 2e 47  alse...$Params.G
0340: 65 6e 65 72 61 74 65 49 6e 4d 65 6d 6f 72 79 3d  enerateInMemory=
0350: 24 54 72 75 65 0d 0a 09 24 50 61 72 61 6d 73 2e  $True...$Params.
0360: 49 6e 63 6c 75 64 65 44 65 62 75 67 49 6e 66 6f  IncludeDebugInfo
0370: 72 6d 61 74 69 6f 6e 3d 24 46 61 6c 73 65 0d 0a  rmation=$False..
0380: 09 24 50 61 72 61 6d 73 2e 52 65 66 65 72 65 6e  .$Params.Referen
0390: 63 65 64 41 73 73 65 6d 62 6c 69 65 73 2e 41 64  cedAssemblies.Ad
03a0: 64 28 22 53 79 73 74 65 6d 2e 44 4c 4c 22 29 20  d("System.DLL") 
03b0: 3e 20 24 6e 75 6c 6c 0d 0a 09 24 54 41 53 6f 75  > $null...$TASou
03c0: 72 63 65 3d 40 27 0d 0a 09 20 20 6e 61 6d 65 73  rce=@'...  names
03d0: 70 61 63 65 20 4c 6f 63 61 6c 2e 54 6f 6f 6c 6b  pace Local.Toolk
03e0: 69 74 45 78 74 65 6e 73 69 6f 6e 73 2e 4e 65 74  itExtensions.Net
03f0: 2e 43 65 72 74 69 66 69 63 61 74 65 50 6f 6c 69  .CertificatePoli
0400: 63 79 20 7b 0d 0a 09 20 20 20 20 70 75 62 6c 69  cy {...    publi
0410: 63 20 63 6c 61 73 73 20 54 72 75 73 74 41 6c 6c  c class TrustAll
0420: 20 3a 20 53 79 73 74 65 6d 2e 4e 65 74 2e 49 43   : System.Net.IC
0430: 65 72 74 69 66 69 63 61 74 65 50 6f 6c 69 63 79  ertificatePolicy
0440: 20 7b 0d 0a 09 20 20 20 20 20 20 70 75 62 6c 69   {...      publi
0450: 63 20 54 72 75 73 74 41 6c 6c 28 29 20 7b 20 0d  c TrustAll() { .
0460: 0a 09 20 20 20 20 20 20 7d 0d 0a 09 20 20 20 20  ..      }...    
0470: 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43 68    public bool Ch
0480: 65 63 6b 56 61 6c 69 64 61 74 69 6f 6e 52 65 73  eckValidationRes
0490: 75 6c 74 28 53 79 73 74 65 6d 2e 4e 65 74 2e 53  ult(System.Net.S
04a0: 65 72 76 69 63 65 50 6f 69 6e 74 20 73 70 2c 0d  ervicePoint sp,.
04b0: 0a 09 20 20 20 20 20 20 20 20 53 79 73 74 65 6d  ..        System
04c0: 2e 53 65 63 75 72 69 74 79 2e 43 72 79 70 74 6f  .Security.Crypto
04d0: 67 72 61 70 68 79 2e 58 35 30 39 43 65 72 74 69  graphy.X509Certi
04e0: 66 69 63 61 74 65 73 2e 58 35 30 39 43 65 72 74  ficates.X509Cert
04f0: 69 66 69 63 61 74 65 20 63 65 72 74 2c 20 0d 0a  ificate cert, ..
0500: 09 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e  .        System.
0510: 4e 65 74 2e 57 65 62 52 65 71 75 65 73 74 20 72  Net.WebRequest r
0520: 65 71 2c 20 69 6e 74 20 70 72 6f 62 6c 65 6d 29  eq, int problem)
0530: 20 7b 0d 0a 09 20 20 20 20 20 20 20 20 72 65 74   {...        ret
0540: 75 72 6e 20 74 72 75 65 3b 0d 0a 09 20 20 20 20  urn true;...    
0550: 20 20 7d 0d 0a 09 20 20 20 20 7d 0d 0a 09 20 20    }...    }...  
0560: 7d 0d 0a 27 40 20 0d 0a 09 24 54 41 52 65 73 75  }..'@ ...$TAResu
0570: 6c 74 73 3d 24 50 72 6f 76 69 64 65 72 2e 43 6f  lts=$Provider.Co
0580: 6d 70 69 6c 65 41 73 73 65 6d 62 6c 79 46 72 6f  mpileAssemblyFro
0590: 6d 53 6f 75 72 63 65 28 24 50 61 72 61 6d 73 2c  mSource($Params,
05a0: 24 54 41 53 6f 75 72 63 65 29 0d 0a 09 24 54 41  $TASource)...$TA
05b0: 41 73 73 65 6d 62 6c 79 3d 24 54 41 52 65 73 75  Assembly=$TAResu
05c0: 6c 74 73 2e 43 6f 6d 70 69 6c 65 64 41 73 73 65  lts.CompiledAsse
05d0: 6d 62 6c 79 0d 0a 0d 0a 09 23 23 20 57 65 20 6e  mbly.....## We n
05e0: 6f 77 20 63 72 65 61 74 65 20 61 6e 20 69 6e 73  ow create an ins
05f0: 74 61 6e 63 65 20 6f 66 20 74 68 65 20 54 72 75  tance of the Tru
0600: 73 74 41 6c 6c 20 61 6e 64 20 61 74 74 61 63 68  stAll and attach
0610: 20 69 74 20 74 6f 20 74 68 65 20 53 65 72 76 69   it to the Servi
0620: 63 65 50 6f 69 6e 74 4d 61 6e 61 67 65 72 0d 0a  cePointManager..
0630: 09 24 54 72 75 73 74 41 6c 6c 3d 24 54 41 41 73  .$TrustAll=$TAAs
0640: 73 65 6d 62 6c 79 2e 43 72 65 61 74 65 49 6e 73  sembly.CreateIns
0650: 74 61 6e 63 65 28 22 4c 6f 63 61 6c 2e 54 6f 6f  tance("Local.Too
0660: 6c 6b 69 74 45 78 74 65 6e 73 69 6f 6e 73 2e 4e  lkitExtensions.N
0670: 65 74 2e 43 65 72 74 69 66 69 63 61 74 65 50 6f  et.CertificatePo
0680: 6c 69 63 79 2e 54 72 75 73 74 41 6c 6c 22 29 0d  licy.TrustAll").
0690: 0a 09 5b 53 79 73 74 65 6d 2e 4e 65 74 2e 53 65  ..[System.Net.Se
06a0: 72 76 69 63 65 50 6f 69 6e 74 4d 61 6e 61 67 65  rvicePointManage
06b0: 72 5d 3a 3a 43 65 72 74 69 66 69 63 61 74 65 50  r]::CertificateP
06c0: 6f 6c 69 63 79 3d 24 54 72 75 73 74 41 6c 6c 0d  olicy=$TrustAll.
06d0: 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 4e  .}....function N
06e0: 65 77 2d 4f 62 6a 65 63 74 46 72 6f 6d 50 72 6f  ew-ObjectFromPro
06f0: 78 79 20 7b 0d 0a 09 70 61 72 61 6d 28 24 70 72  xy {...param($pr
0700: 6f 78 79 2c 20 24 70 72 6f 78 79 41 74 74 72 69  oxy, $proxyAttri
0710: 62 75 74 65 4e 61 6d 65 2c 20 24 74 79 70 65 4e  buteName, $typeN
0720: 61 6d 65 29 0d 0a 0d 0a 09 23 20 4c 6f 63 61 74  ame).....# Locat
0730: 65 20 74 68 65 20 61 73 73 65 6d 62 6c 79 20 66  e the assembly f
0740: 6f 72 20 24 70 72 6f 78 79 0d 0a 09 24 61 74 74  or $proxy...$att
0750: 72 69 62 75 74 65 20 3d 20 24 70 72 6f 78 79 20  ribute = $proxy 
0760: 7c 20 67 6d 20 7c 20 77 68 65 72 65 20 7b 20 24  | gm | where { $
0770: 5f 2e 4e 61 6d 65 20 2d 65 71 20 24 70 72 6f 78  _.Name -eq $prox
0780: 79 41 74 74 72 69 62 75 74 65 4e 61 6d 65 20 7d  yAttributeName }
0790: 0d 0a 09 24 73 74 72 20 3d 20 22 60 24 61 73 73  ...$str = "`$ass
07a0: 65 6d 62 6c 79 20 3d 20 5b 22 20 2b 20 24 61 74  embly = [" + $at
07b0: 74 72 69 62 75 74 65 2e 54 79 70 65 4e 61 6d 65  tribute.TypeName
07c0: 20 2b 20 22 5d 2e 61 73 73 65 6d 62 6c 79 22 0d   + "].assembly".
07d0: 0a 09 69 6e 76 6f 6b 65 2d 65 78 70 72 65 73 73  ..invoke-express
07e0: 69 6f 6e 20 24 73 74 72 0d 0a 0d 0a 09 23 20 49  ion $str.....# I
07f0: 6e 73 74 61 6e 74 69 61 74 65 20 61 6e 20 41 75  nstantiate an Au
0800: 74 68 65 6e 74 69 63 61 74 69 6f 6e 48 65 61 64  thenticationHead
0810: 65 72 56 61 6c 75 65 20 6f 62 6a 65 63 74 2e 0d  erValue object..
0820: 0a 09 24 74 79 70 65 20 3d 20 24 61 73 73 65 6d  ..$type = $assem
0830: 62 6c 79 2e 67 65 74 54 79 70 65 73 28 29 20 7c  bly.getTypes() |
0840: 20 77 68 65 72 65 20 7b 20 24 5f 2e 4e 61 6d 65   where { $_.Name
0850: 20 2d 65 71 20 24 74 79 70 65 4e 61 6d 65 20 7d   -eq $typeName }
0860: 0d 0a 09 72 65 74 75 72 6e 20 24 61 73 73 65 6d  ...return $assem
0870: 62 6c 79 2e 43 72 65 61 74 65 49 6e 73 74 61 6e  bly.CreateInstan
0880: 63 65 28 24 74 79 70 65 29 0d 0a 7d 0d 0a 0d 0a  ce($type)..}....
0890: 66 75 6e 63 74 69 6f 6e 20 43 6f 6e 6e 65 63 74  function Connect
08a0: 2d 4c 61 62 4d 61 6e 61 67 65 72 20 7b 0d 0a 09  -LabManager {...
08b0: 70 61 72 61 6d 0d 0a 20 20 20 20 28 0d 0a 20 20  param..    (..  
08c0: 20 20 20 20 20 20 5b 73 74 72 69 6e 67 5d 20 24        [string] $
08d0: 73 65 72 76 65 72 2c 20 0d 0a 20 20 20 20 20 20  server, ..      
08e0: 20 20 24 63 72 65 64 65 6e 74 69 61 6c 2c 0d 0a    $credential,..
08f0: 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67 5d          [string]
0900: 20 24 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 6e 61   $organizationna
0910: 6d 65 20 3d 20 22 44 65 66 61 75 6c 74 22 2c 0d  me = "Default",.
0920: 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67  .        [string
0930: 5d 20 24 77 6f 72 6b 73 70 61 63 65 6e 61 6d 65  ] $workspacename
0940: 20 3d 20 22 4d 61 69 6e 22 0d 0a 20 20 20 20 29   = "Main"..    )
0950: 0d 0a 20 20 20 20 20 20 20 20 0d 0a 09 23 20 4c  ..        ...# L
0960: 6f 67 20 69 6e 20 74 6f 20 4c 61 62 20 4d 61 6e  og in to Lab Man
0970: 61 67 65 72 27 73 20 77 65 62 20 73 65 72 76 69  ager's web servi
0980: 63 65 2e 0d 0a 09 24 73 65 72 76 65 72 20 3d 20  ce....$server = 
0990: 22 68 74 74 70 73 3a 2f 2f 22 20 2b 20 24 73 65  "https://" + $se
09a0: 72 76 65 72 20 2b 20 22 2f 22 0d 0a 09 24 65 6e  rver + "/"...$en
09b0: 64 70 6f 69 6e 74 20 3d 20 24 73 65 72 76 65 72  dpoint = $server
09c0: 20 2b 20 22 4c 61 62 4d 61 6e 61 67 65 72 2f 53   + "LabManager/S
09d0: 4f 41 50 2f 4c 61 62 4d 61 6e 61 67 65 72 2e 61  OAP/LabManager.a
09e0: 73 6d 78 22 0d 0a 09 24 70 72 6f 78 79 20 3d 20  smx"...$proxy = 
09f0: 6e 65 77 2d 77 65 62 73 65 72 76 69 63 65 70 72  new-webservicepr
0a00: 6f 78 79 20 2d 75 72 69 20 24 65 6e 64 70 6f 69  oxy -uri $endpoi
0a10: 6e 74 20 2d 63 72 65 64 20 24 63 72 65 64 65 6e  nt -cred $creden
0a20: 74 69 61 6c 0d 0a 0d 0a 09 23 20 42 65 66 6f 72  tial.....# Befor
0a30: 65 20 63 6f 6e 74 69 6e 75 69 6e 67 20 77 65 20  e continuing we 
0a40: 6e 65 65 64 20 74 6f 20 61 64 64 20 61 6e 20 41  need to add an A
0a50: 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 48 65  uthentication He
0a60: 61 64 65 72 20 74 6f 20 24 70 72 6f 78 79 2e 0d  ader to $proxy..
0a70: 0a 09 24 61 75 74 68 48 65 61 64 65 72 20 3d 20  ..$authHeader = 
0a80: 4e 65 77 2d 4f 62 6a 65 63 74 46 72 6f 6d 50 72  New-ObjectFromPr
0a90: 6f 78 79 20 2d 70 72 6f 78 79 20 24 70 72 6f 78  oxy -proxy $prox
0aa0: 79 20 2d 70 72 6f 78 79 41 74 74 72 69 62 75 74  y -proxyAttribut
0ab0: 65 4e 61 6d 65 20 22 41 75 74 68 65 6e 74 69 63  eName "Authentic
0ac0: 61 74 69 6f 6e 48 65 61 64 65 72 56 61 6c 75 65  ationHeaderValue
0ad0: 22 20 2d 74 79 70 65 4e 61 6d 65 20 22 41 75 74  " -typeName "Aut
0ae0: 68 65 6e 74 69 63 61 74 69 6f 6e 48 65 61 64 65  henticationHeade
0af0: 72 22 0d 0a 09 24 61 75 74 68 48 65 61 64 65 72  r"...$authHeader
0b00: 2e 75 73 65 72 6e 61 6d 65 20 3d 20 24 63 72 65  .username = $cre
0b10: 64 65 6e 74 69 61 6c 2e 47 65 74 4e 65 74 77 6f  dential.GetNetwo
0b20: 72 6b 43 72 65 64 65 6e 74 69 61 6c 28 29 2e 55  rkCredential().U
0b30: 73 65 72 4e 61 6d 65 0d 0a 09 24 61 75 74 68 48  serName...$authH
0b40: 65 61 64 65 72 2e 70 61 73 73 77 6f 72 64 20 3d  eader.password =
0b50: 20 24 63 72 65 64 65 6e 74 69 61 6c 2e 47 65 74   $credential.Get
0b60: 4e 65 74 77 6f 72 6b 43 72 65 64 65 6e 74 69 61  NetworkCredentia
0b70: 6c 28 29 2e 50 61 73 73 77 6f 72 64 0d 0a 20 20  l().Password..  
0b80: 20 20 24 61 75 74 68 48 65 61 64 65 72 2e 6f 72    $authHeader.or
0b90: 67 61 6e 69 7a 61 74 69 6f 6e 6e 61 6d 65 20 3d  ganizationname =
0ba0: 20 24 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 6e 61   $organizationna
0bb0: 6d 65 0d 0a 20 20 20 20 24 61 75 74 68 48 65 61  me..    $authHea
0bc0: 64 65 72 2e 77 6f 72 6b 73 70 61 63 65 6e 61 6d  der.workspacenam
0bd0: 65 20 3d 20 24 77 6f 72 6b 73 70 61 63 65 6e 61  e = $workspacena
0be0: 6d 65 0d 0a 09 24 70 72 6f 78 79 2e 41 75 74 68  me...$proxy.Auth
0bf0: 65 6e 74 69 63 61 74 69 6f 6e 48 65 61 64 65 72  enticationHeader
0c00: 56 61 6c 75 65 20 3d 20 24 61 75 74 68 48 65 61  Value = $authHea
0c10: 64 65 72 0d 0a 09 72 65 74 75 72 6e 20 24 70 72  der...return $pr
0c20: 6f 78 79 0d 0a 7d 0d 0a 0d 0a 23 20 45 78 61 6d  oxy..}....# Exam
0c30: 70 6c 65 73 3a 0d 0a 23 20 52 75 6e 20 74 68 69  ples:..# Run thi
0c40: 73 20 63 6f 6d 6d 61 6e 64 20 69 66 20 79 6f 75  s command if you
0c50: 72 20 4c 61 62 20 4d 61 6e 61 67 65 72 27 73 20  r Lab Manager's 
0c60: 63 65 72 74 69 66 69 63 61 74 65 20 69 73 20 75  certificate is u
0c70: 6e 74 72 75 73 74 65 64 20 62 75 74 20 79 6f 75  ntrusted but you
0c80: 20 77 61 6e 74 20 74 6f 20 63 6f 6e 6e 65 63 74   want to connect
0c90: 2e 0d 0a 49 67 6e 6f 72 65 2d 53 73 6c 45 72 72  ...Ignore-SslErr
0ca0: 6f 72 73 0d 0a 0d 0a 23 20 43 6f 6e 6e 65 63 74  ors....# Connect
0cb0: 20 74 6f 20 4c 61 62 20 4d 61 6e 61 67 65 72 2e   to Lab Manager.
0cc0: 0d 0a 24 6c 61 62 4d 61 6e 61 67 65 72 20 3d 20  ..$labManager = 
0cd0: 43 6f 6e 6e 65 63 74 2d 4c 61 62 4d 61 6e 61 67  Connect-LabManag
0ce0: 65 72 20 2d 73 65 72 76 65 72 20 22 64 65 6d 6f  er -server "demo
0cf0: 2e 65 6e 67 2e 76 6d 77 61 72 65 2e 63 6f 6d 22  .eng.vmware.com"
0d00: 20 2d 63 72 65 64 65 6e 74 69 61 6c 20 28 67 65   -credential (ge
0d10: 74 2d 63 72 65 64 65 6e 74 69 61 6c 29 0d 0a 0d  t-credential)...
0d20: 0a 23 20 46 69 6e 64 20 6f 75 74 20 77 68 61 74  .# Find out what
0d30: 20 6f 70 65 72 61 74 69 6f 6e 73 20 74 68 65 72   operations ther
0d40: 65 20 61 72 65 2e 0d 0a 24 6c 61 62 4d 61 6e 61  e are...$labMana
0d50: 67 65 72 20 7c 20 67 6d 20 7c 20 77 68 65 72 65  ger | gm | where
0d60: 20 7b 20 24 5f 2e 4d 65 6d 62 65 72 54 79 70 65   { $_.MemberType
0d70: 20 2d 65 71 20 22 4d 65 74 68 6f 64 22 20 7d 0d   -eq "Method" }.
0d80: 0a 23 20 53 65 65 20 68 74 74 70 3a 2f 2f 77 77  .# See http://ww
0d90: 77 2e 76 6d 77 61 72 65 2e 63 6f 6d 2f 70 64 66  w.vmware.com/pdf
0da0: 2f 6c 6d 33 30 5f 73 6f 61 70 5f 61 70 69 5f 67  /lm30_soap_api_g
0db0: 75 69 64 65 2e 70 64 66 20 66 6f 72 20 68 65 6c  uide.pdf for hel
0dc0: 70 20 6f 6e 20 61 72 67 75 6d 65 6e 74 73 2e 0d  p on arguments..
0dd0: 0a 0d 0a 23 20 4c 69 73 74 20 61 6c 6c 20 6c 69  ...# List all li
0de0: 62 72 61 72 79 20 63 6f 6e 66 69 67 75 72 61 74  brary configurat
0df0: 69 6f 6e 73 2e 0d 0a 24 6c 61 62 4d 61 6e 61 67  ions...$labManag
0e00: 65 72 2e 4c 69 73 74 43 6f 6e 66 69 67 75 72 61  er.ListConfigura
0e10: 74 69 6f 6e 73 28 31 29 0d 0a 0d 0a 23 20 46 69  tions(1)....# Fi
0e20: 6e 64 20 61 6c 6c 20 6d 61 63 68 69 6e 65 73 20  nd all machines 
0e30: 64 65 70 6c 6f 79 65 64 20 66 72 6f 6d 20 61 6e  deployed from an
0e40: 79 20 6c 69 62 72 61 72 79 20 63 6f 6e 66 69 67  y library config
0e50: 75 72 61 74 69 6f 6e 2e 0d 0a 24 6c 61 62 4d 61  uration...$labMa
0e60: 6e 61 67 65 72 2e 4c 69 73 74 43 6f 6e 66 69 67  nager.ListConfig
0e70: 75 72 61 74 69 6f 6e 73 28 31 29 20 7c 20 66 6f  urations(1) | fo
0e80: 72 65 61 63 68 20 7b 20 77 72 69 74 65 2d 68 6f  reach { write-ho
0e90: 73 74 20 28 22 46 6f 72 20 43 6f 6e 66 69 67 75  st ("For Configu
0ea0: 72 61 74 69 6f 6e 20 22 20 2b 20 24 5f 2e 69 64  ration " + $_.id
0eb0: 20 2b 20 22 3a 22 29 3b 20 24 6c 61 62 4d 61 6e   + ":"); $labMan
0ec0: 61 67 65 72 2e 4c 69 73 74 4d 61 63 68 69 6e 65  ager.ListMachine
0ed0: 73 28 24 5f 2e 69 64 29 20 7d 0d 0a              s($_.id) }..