PoshCode Archive  Hex Artifact Content

Artifact d10457ed8f6a16297370eecacab83da544723b49f6a3d6e929587957fd787749:

  • File Vim25-Crazy-Magic.ps1 — part of check-in [9793b28be2] at 2018-06-10 12:58:05 on branch trunk — Interface with vimService on ESXi. (user: unknown size: 1670)

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: 69 6d 32 35 20 43 72 61 7a 79 20 4d 61 67 69 63  im25 Crazy Magic
0040: 0d 0a 23 20 64 65 73 63 72 69 70 74 69 6f 6e 3a  ..# description:
0050: 20 49 6e 74 65 72 66 61 63 65 20 77 69 74 68 20   Interface with 
0060: 76 69 6d 53 65 72 76 69 63 65 20 6f 6e 20 45 53  vimService on ES
0070: 58 69 2e 0d 0a 23 20 76 65 72 73 69 6f 6e 3a 20  Xi...# version: 
0080: 34 2e 30 2e 30 0d 0a 23 20 6c 69 63 65 6e 73 65  4.0.0..# license
0090: 3a 20 43 43 30 0d 0a 23 20 78 2d 70 6f 73 68 63  : CC0..# x-poshc
00a0: 6f 64 65 2d 69 64 3a 20 31 35 32 32 0d 0a 23 20  ode-id: 1522..# 
00b0: 78 2d 64 65 72 69 76 65 64 2d 66 72 6f 6d 2d 69  x-derived-from-i
00c0: 64 3a 20 31 35 32 34 0d 0a 23 20 78 2d 61 72 63  d: 1524..# x-arc
00d0: 68 69 76 65 64 3a 20 32 30 31 31 2d 30 31 2d 30  hived: 2011-01-0
00e0: 39 54 30 33 3a 35 38 3a 35 31 0d 0a 23 0d 0a 23  9T03:58:51..#..#
00f0: 0d 0a 63 6c 73 0d 0a 0d 0a 5b 76 6f 69 64 5d 5b  ..cls....[void][
0100: 52 65 66 6c 65 63 74 69 6f 6e 2e 41 73 73 65 6d  Reflection.Assem
0110: 62 6c 79 5d 3a 3a 4c 6f 61 64 57 69 74 68 50 61  bly]::LoadWithPa
0120: 72 74 69 61 6c 4e 61 6d 65 28 22 56 4d 77 61 72  rtialName("VMwar
0130: 65 2e 56 69 6d 22 29 3b 0d 0a 0d 0a 23 20 67 65  e.Vim");....# ge
0140: 6e 65 72 61 74 65 20 74 68 65 20 70 72 6f 78 79  nerate the proxy
0150: 0d 0a 24 77 73 20 20 3d 20 20 4e 65 77 2d 57 65  ..$ws  =  New-We
0160: 62 53 65 72 76 69 63 65 50 72 6f 78 79 20 2d 55  bServiceProxy -U
0170: 72 69 20 22 68 74 74 70 3a 2f 2f 31 37 32 2e 31  ri "http://172.1
0180: 36 2e 30 2e 33 33 2f 73 64 6b 2f 76 69 6d 53 65  6.0.33/sdk/vimSe
0190: 72 76 69 63 65 3f 77 73 64 6c 22 20 3b 0d 0a 24  rvice?wsdl" ;..$
01a0: 77 73 2e 55 72 6c 20 3d 20 22 68 74 74 70 3a 2f  ws.Url = "http:/
01b0: 2f 31 37 32 2e 31 36 2e 30 2e 33 33 2f 73 64 6b  /172.16.0.33/sdk
01c0: 2f 76 69 6d 53 65 72 76 69 63 65 22 3b 0d 0a 24  /vimService";..$
01d0: 77 73 2e 55 73 65 72 41 67 65 6e 74 20 3d 20 22  ws.UserAgent = "
01e0: 56 4d 77 61 72 65 20 56 49 20 43 6c 69 65 6e 74  VMware VI Client
01f0: 2f 34 2e 30 2e 30 22 3b 0d 0a 0d 0a 23 20 49 20  /4.0.0";....# I 
0200: 6d 6f 64 64 65 64 20 74 68 65 20 68 6f 73 74 20  modded the host 
0210: 74 6f 20 61 63 63 65 70 74 20 48 54 54 50 20 72  to accept HTTP r
0220: 65 71 75 65 73 74 73 20 28 74 6f 6f 20 62 69 67  equests (too big
0230: 20 6f 66 20 61 20 6d 65 73 73 20 77 69 74 68 20   of a mess with 
0240: 53 53 4c 29 0d 0a 23 20 68 74 74 70 3a 2f 2f 77  SSL)..# http://w
0250: 77 77 2e 76 6d 77 61 72 65 2e 63 6f 6d 2f 73 75  ww.vmware.com/su
0260: 70 70 6f 72 74 2f 64 65 76 65 6c 6f 70 65 72 2f  pport/developer/
0270: 76 63 2d 73 64 6b 2f 76 69 73 64 6b 34 30 30 70  vc-sdk/visdk400p
0280: 75 62 73 2f 73 64 6b 34 30 73 65 74 75 70 67 75  ubs/sdk40setupgu
0290: 69 64 65 2e 70 64 66 0d 0a 24 76 69 6d 43 6c 69  ide.pdf..$vimCli
02a0: 65 6e 74 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74  ent = New-Object
02b0: 20 56 6d 77 61 72 65 2e 56 69 6d 2e 56 69 6d 43   Vmware.Vim.VimC
02c0: 6c 69 65 6e 74 3b 0d 0a 24 73 65 72 76 69 63 65  lient;..$service
02d0: 63 6f 6e 74 65 6e 74 20 20 3d 20 24 76 69 6d 43  content  = $vimC
02e0: 6c 69 65 6e 74 2e 43 6f 6e 6e 65 63 74 28 22 68  lient.Connect("h
02f0: 74 74 70 3a 2f 2f 31 37 32 2e 31 36 2e 30 2e 33  ttp://172.16.0.3
0300: 33 2f 73 64 6b 22 29 3b 0d 0a 24 75 73 65 72 73  3/sdk");..$users
0310: 65 73 73 69 6f 6e 20 3d 20 24 76 69 6d 43 6c 69  ession = $vimCli
0320: 65 6e 74 2e 4c 6f 67 69 6e 28 22 72 6f 6f 74 22  ent.Login("root"
0330: 2c 22 72 6f 6f 74 22 29 3b 0d 0a 0d 0a 23 20 74  ,"root");....# t
0340: 68 65 20 62 65 6c 6f 77 20 74 79 70 65 20 77 69  he below type wi
0350: 6c 6c 20 62 65 20 75 6e 69 71 75 65 20 74 6f 20  ll be unique to 
0360: 79 6f 75 72 20 68 6f 73 74 2e 20 20 66 6f 72 20  your host.  for 
0370: 73 6f 6d 65 20 72 65 61 73 6f 6e 20 74 68 65 20  some reason the 
0380: 56 69 6d 41 70 69 5f 32 35 2e 4d 61 6e 61 67 65  VimApi_25.Manage
0390: 64 4f 62 6a 65 63 74 52 65 66 65 72 65 6e 63 65  dObjectReference
03a0: 20 64 69 64 20 6e 6f 74 20 77 61 6e 74 20 74 6f   did not want to
03b0: 20 70 61 73 73 20 74 6f 20 74 68 65 20 77 65 62   pass to the web
03c0: 20 73 65 72 76 69 63 65 0d 0a 24 6d 79 4d 6f 52   service..$myMoR
03d0: 65 66 20 3d 20 6e 65 77 2d 6f 62 6a 65 63 74 20  ef = new-object 
03e0: 4d 69 63 72 6f 73 6f 66 74 2e 50 6f 77 65 72 53  Microsoft.PowerS
03f0: 68 65 6c 6c 2e 43 6f 6d 6d 61 6e 64 73 2e 4e 65  hell.Commands.Ne
0400: 77 57 65 62 73 65 72 76 69 63 65 50 72 6f 78 79  wWebserviceProxy
0410: 2e 41 75 74 6f 67 65 6e 65 72 61 74 65 64 54 79  .AutogeneratedTy
0420: 70 65 73 2e 57 65 62 53 65 72 76 69 63 65 50 72  pes.WebServicePr
0430: 6f 78 79 31 37 32 5f 31 36 5f 30 5f 33 33 5f 73  oxy172_16_0_33_s
0440: 64 6b 5f 76 69 6d 53 65 72 76 69 63 65 5f 77 73  dk_vimService_ws
0450: 64 6c 2e 4d 61 6e 61 67 65 64 4f 62 6a 65 63 74  dl.ManagedObject
0460: 52 65 66 65 72 65 6e 63 65 3b 0d 0a 24 6d 79 4d  Reference;..$myM
0470: 6f 52 65 66 2e 74 79 70 65 20 3d 20 22 48 6f 73  oRef.type = "Hos
0480: 74 53 79 73 74 65 6d 22 3b 0d 0a 24 6d 79 4d 6f  tSystem";..$myMo
0490: 52 65 66 2e 56 61 6c 75 65 20 3d 20 22 68 61 2d  Ref.Value = "ha-
04a0: 68 6f 73 74 22 3b 0d 0a 23 20 79 65 74 20 74 6f  host";..# yet to
04b0: 20 66 69 67 75 72 65 20 6f 75 74 20 77 68 65 72   figure out wher
04c0: 65 20 68 61 2d 68 6f 73 74 20 63 6f 6d 65 73 20  e ha-host comes 
04d0: 66 72 6f 6d 2e 2e 2e 20 0d 0a 0d 0a 23 20 63 6f  from... ....# co
04e0: 6f 6b 69 65 20 6d 6f 6e 73 74 65 72 20 79 6f 75  okie monster you
04f0: 72 20 73 65 73 73 69 6f 6e 20 63 6f 6f 6b 69 65  r session cookie
0500: 73 0d 0a 24 77 73 2e 43 6f 6f 6b 69 65 43 6f 6e  s..$ws.CookieCon
0510: 74 61 69 6e 65 72 20 3d 20 24 76 69 6d 43 6c 69  tainer = $vimCli
0520: 65 6e 74 2e 56 69 6d 53 65 72 76 69 63 65 2e 43  ent.VimService.C
0530: 6f 6f 6b 69 65 43 6f 6e 74 61 69 6e 65 72 3b 0d  ookieContainer;.
0540: 0a 0d 0a 23 20 63 61 6c 6c 20 79 6f 75 72 20 66  ...# call your f
0550: 61 76 6f 72 69 74 65 20 77 65 62 20 73 65 72 76  avorite web serv
0560: 69 63 65 20 6d 65 74 68 6f 64 0d 0a 24 72 65 74  ice method..$ret
0570: 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 20 4d   = New-Object  M
0580: 69 63 72 6f 73 6f 66 74 2e 50 6f 77 65 72 53 68  icrosoft.PowerSh
0590: 65 6c 6c 2e 43 6f 6d 6d 61 6e 64 73 2e 4e 65 77  ell.Commands.New
05a0: 57 65 62 73 65 72 76 69 63 65 50 72 6f 78 79 2e  WebserviceProxy.
05b0: 41 75 74 6f 67 65 6e 65 72 61 74 65 64 54 79 70  AutogeneratedTyp
05c0: 65 73 2e 57 65 62 53 65 72 76 69 63 65 50 72 6f  es.WebServicePro
05d0: 78 79 31 37 32 5f 31 36 5f 30 5f 33 33 5f 73 64  xy172_16_0_33_sd
05e0: 6b 5f 76 69 6d 53 65 72 76 69 63 65 5f 77 73 64  k_vimService_wsd
05f0: 6c 2e 4d 61 6e 61 67 65 64 4f 62 6a 65 63 74 52  l.ManagedObjectR
0600: 65 66 65 72 65 6e 63 65 3b 0d 0a 24 72 65 74 20  eference;..$ret 
0610: 3d 20 24 77 73 2e 52 65 62 6f 6f 74 48 6f 73 74  = $ws.RebootHost
0620: 5f 54 61 73 6b 28 24 61 2c 24 74 72 75 65 29 3b  _Task($a,$true);
0630: 0d 0a 24 72 65 74 3b 0d 0a 24 76 69 6d 43 6c 69  ..$ret;..$vimCli
0640: 65 6e 74 2e 4c 6f 67 6f 75 74 28 29 3b 0d 0a 0d  ent.Logout();...
0650: 0a 65 78 69 74 0d 0a 0d 0a 23 20 74 68 61 6e 6b  .exit....# thank
0660: 73 20 6a 61 79 6b 75 6c 20 66 6f 72 20 79 6f 75  s jaykul for you
0670: 72 20 6f 6d 6e 69 73 63 65 6e 74 20 67 75 69 64  r omniscent guid
0680: 61 6e 63 65 0d 0a                                ance..