PoshCode Archive  Hex Artifact Content

Artifact 36553e5d52666061930293dfdebe2ef6bf47f3fce6306ba69429e09cfe5bc02a:

  • File WakeOnLan.ps1 — part of check-in [b97feb5a6a] at 2018-06-10 14:20:05 on branch trunk — A small script that uses a csv file for input (workstations.csv with 2 columns : computername,mac) and performs 3 actions : wol (wake on lan), reboot and shutdown. It’s one of my first posh scripts so please feel free to improve it. (user: Cosmin Dumitru size: 3381)

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 57  hell..# title: W
0030: 61 6b 65 4f 6e 4c 61 6e 0d 0a 23 20 64 65 73 63  akeOnLan..# desc
0040: 72 69 70 74 69 6f 6e 3a 20 41 20 73 6d 61 6c 6c  ription: A small
0050: 20 73 63 72 69 70 74 20 74 68 61 74 20 75 73 65   script that use
0060: 73 20 61 20 63 73 76 20 66 69 6c 65 20 66 6f 72  s a csv file for
0070: 20 69 6e 70 75 74 20 28 77 6f 72 6b 73 74 61 74   input (workstat
0080: 69 6f 6e 73 2e 63 73 76 20 77 69 74 68 20 32 20  ions.csv with 2 
0090: 63 6f 6c 75 6d 6e 73 20 3a 20 63 6f 6d 70 75 74  columns : comput
00a0: 65 72 6e 61 6d 65 2c 6d 61 63 29 20 61 6e 64 20  ername,mac) and 
00b0: 70 65 72 66 6f 72 6d 73 20 33 20 61 63 74 69 6f  performs 3 actio
00c0: 6e 73 20 3a 20 77 6f 6c 20 28 77 61 6b 65 20 6f  ns : wol (wake o
00d0: 6e 20 6c 61 6e 29 2c 20 72 65 62 6f 6f 74 20 61  n lan), reboot a
00e0: 6e 64 20 73 68 75 74 64 6f 77 6e 2e 20 49 74 e2  nd shutdown. It.
00f0: 80 99 73 20 6f 6e 65 20 6f 66 20 6d 79 20 66 69  ..s one of my fi
0100: 72 73 74 20 70 6f 73 68 20 73 63 72 69 70 74 73  rst posh scripts
0110: 20 73 6f 20 70 6c 65 61 73 65 20 66 65 65 6c 20   so please feel 
0120: 66 72 65 65 20 74 6f 20 69 6d 70 72 6f 76 65 20  free to improve 
0130: 69 74 2e 0d 0a 23 20 76 65 72 73 69 6f 6e 3a 20  it...# version: 
0140: 30 2e 31 0d 0a 23 20 74 79 70 65 3a 20 66 75 6e  0.1..# type: fun
0150: 63 74 69 6f 6e 0d 0a 23 20 61 75 74 68 6f 72 3a  ction..# author:
0160: 20 43 6f 73 6d 69 6e 20 44 75 6d 69 74 72 75 0d   Cosmin Dumitru.
0170: 0a 23 20 6c 69 63 65 6e 73 65 3a 20 43 43 30 0d  .# license: CC0.
0180: 0a 23 20 78 2d 70 6f 73 68 63 6f 64 65 2d 69 64  .# x-poshcode-id
0190: 3a 20 36 37 33 0d 0a 23 20 78 2d 61 72 63 68 69  : 673..# x-archi
01a0: 76 65 64 3a 20 32 30 31 33 2d 30 36 2d 32 32 54  ved: 2013-06-22T
01b0: 31 36 3a 33 38 3a 34 37 0d 0a 23 20 78 2d 70 75  16:38:47..# x-pu
01c0: 62 6c 69 73 68 65 64 3a 20 32 30 30 39 2d 31 31  blished: 2009-11
01d0: 2d 31 35 54 30 36 3a 31 37 3a 30 30 0d 0a 23 0d  -15T06:17:00..#.
01e0: 0a 23 0d 0a 23 77 61 6b 65 6f 6e 6c 61 6e 20 24  .#..#wakeonlan $
01f0: 63 6f 6d 70 75 74 65 72 0d 0a 66 75 6e 63 74 69  computer..functi
0200: 6f 6e 20 57 61 6b 65 4f 6e 4c 61 6e 28 24 63 6f  on WakeOnLan($co
0210: 6d 70 75 74 65 72 29 0d 0a 7b 0d 0a 09 24 73 65  mputer)..{...$se
0220: 6c 65 63 74 3d 24 73 65 6c 65 63 74 20 7c 77 68  lect=$select |wh
0230: 65 72 65 2d 6f 62 6a 65 63 74 20 7b 24 5f 2e 63  ere-object {$_.c
0240: 6f 6d 70 75 74 65 72 6e 61 6d 65 20 2d 65 71 20  omputername -eq 
0250: 24 63 6f 6d 70 75 74 65 72 7d 20 7c 53 65 6c 65  $computer} |Sele
0260: 63 74 2d 4f 62 6a 65 63 74 20 6d 61 63 0d 0a 09  ct-Object mac...
0270: 69 66 20 28 24 73 65 6c 65 63 74 2e 6d 61 63 20  if ($select.mac 
0280: 2d 65 71 20 24 6e 75 6c 6c 29 0d 0a 09 7b 0d 0a  -eq $null)...{..
0290: 09 09 65 63 68 6f 20 22 77 6f 72 6b 73 74 61 74  ..echo "workstat
02a0: 69 6f 6e 20 6e 6f 74 20 66 6f 75 6e 64 2e 65 70  ion not found.ep
02b0: 69 63 20 66 61 69 6c 2e 20 75 73 65 20 61 6c 6c  ic fail. use all
02c0: 20 74 6f 20 77 61 6b 65 27 65 6d 20 61 6c 6c 22   to wake'em all"
02d0: 0d 0a 09 7d 0d 0a 09 65 6c 73 65 0d 0a 09 7b 0d  ...}...else...{.
02e0: 0a 09 09 24 73 65 6c 65 63 74 2e 6d 61 63 20 20  ...$select.mac  
02f0: 2d 6d 61 74 63 68 20 22 28 2e 2e 29 28 2e 2e 29  -match "(..)(..)
0300: 28 2e 2e 29 28 2e 2e 29 28 2e 2e 29 28 2e 2e 29  (..)(..)(..)(..)
0310: 22 20 7c 20 6f 75 74 2d 6e 75 6c 6c 0d 0a 09 09  " | out-null....
0320: 24 6d 61 63 3d 20 5b 62 79 74 65 5b 5d 5d 28 24  $mac= [byte[]]($
0330: 6d 61 74 63 68 65 73 5b 31 2e 2e 36 5d 20 7c 25  matches[1..6] |%
0340: 20 7b 5b 69 6e 74 5d 22 30 78 24 5f 22 7d 29 0d   {[int]"0x$_"}).
0350: 0a 09 09 24 55 44 50 63 6c 69 65 6e 74 20 3d 20  ...$UDPclient = 
0360: 6e 65 77 2d 4f 62 6a 65 63 74 20 53 79 73 74 65  new-Object Syste
0370: 6d 2e 4e 65 74 2e 53 6f 63 6b 65 74 73 2e 55 64  m.Net.Sockets.Ud
0380: 70 43 6c 69 65 6e 74 0d 0a 09 09 24 55 44 50 63  pClient....$UDPc
0390: 6c 69 65 6e 74 2e 43 6f 6e 6e 65 63 74 28 28 5b  lient.Connect(([
03a0: 53 79 73 74 65 6d 2e 4e 65 74 2e 49 50 41 64 64  System.Net.IPAdd
03b0: 72 65 73 73 5d 3a 3a 42 72 6f 61 64 63 61 73 74  ress]::Broadcast
03c0: 29 2c 34 30 30 30 29 0d 0a 09 09 24 70 61 63 6b  ),4000)....$pack
03d0: 65 74 20 3d 20 5b 62 79 74 65 5b 5d 5d 28 2c 30  et = [byte[]](,0
03e0: 78 46 46 20 2a 20 31 30 32 29 0d 0a 09 09 36 2e  xFF * 102)....6.
03f0: 2e 31 30 31 20 7c 25 20 7b 20 24 70 61 63 6b 65  .101 |% { $packe
0400: 74 5b 24 5f 5d 20 3d 20 24 6d 61 63 5b 28 24 5f  t[$_] = $mac[($_
0410: 25 36 29 5d 7d 0d 0a 09 09 24 55 44 50 63 6c 69  %6)]}....$UDPcli
0420: 65 6e 74 2e 53 65 6e 64 28 24 70 61 63 6b 65 74  ent.Send($packet
0430: 2c 20 24 70 61 63 6b 65 74 2e 4c 65 6e 67 74 68  , $packet.Length
0440: 29 0d 0a 09 09 65 63 68 6f 20 22 77 6f 72 6b 73  )....echo "works
0450: 74 61 74 69 6f 6e 20 24 63 6f 6d 70 75 74 65 72  tation $computer
0460: 20 69 73 20 62 6f 6f 74 69 6e 67 20 75 70 2e 2e   is booting up..
0470: 2e 22 0d 0a 09 7d 0d 0a 7d 0d 0a 0d 0a 23 77 61  ."...}..}....#wa
0480: 6b 65 6f 6e 6c 61 6e 20 61 6c 6c 20 74 68 65 20  keonlan all the 
0490: 63 6f 6d 70 75 74 65 72 73 0d 0a 66 75 6e 63 74  computers..funct
04a0: 69 6f 6e 20 57 61 6b 65 4f 6e 4c 61 6e 41 6c 6c  ion WakeOnLanAll
04b0: 0d 0a 7b 0d 0a 09 24 63 6f 6d 70 75 74 65 72 73  ..{...$computers
04c0: 3d 24 73 65 6c 65 63 74 20 7c 20 53 65 6c 65 63  =$select | Selec
04d0: 74 2d 4f 62 6a 65 63 74 20 63 6f 6d 70 75 74 65  t-Object compute
04e0: 72 6e 61 6d 65 0d 0a 09 66 6f 72 65 61 63 68 20  rname...foreach 
04f0: 28 24 63 6f 6d 70 75 74 65 72 20 69 6e 20 24 63  ($computer in $c
0500: 6f 6d 70 75 74 65 72 73 29 0d 0a 09 7b 0d 0a 09  omputers)...{...
0510: 09 24 74 61 72 67 65 74 20 3d 20 24 63 6f 6d 70  .$target = $comp
0520: 75 74 65 72 2e 63 6f 6d 70 75 74 65 72 6e 61 6d  uter.computernam
0530: 65 0d 0a 09 09 57 61 6b 65 4f 6e 4c 61 6e 28 24  e....WakeOnLan($
0540: 74 61 72 67 65 74 29 0d 0a 09 09 23 64 65 6c 61  target)....#dela
0550: 79 20 74 6f 20 62 65 20 70 6f 77 65 72 67 72 69  y to be powergri
0560: 64 20 66 72 69 65 6e 64 6c 79 0d 0a 09 09 53 74  d friendly....St
0570: 61 72 74 2d 53 6c 65 65 70 20 2d 73 65 63 6f 6e  art-Sleep -secon
0580: 64 73 20 35 0d 0a 09 7d 0d 0a 7d 0d 0a 23 73 68  ds 5...}..}..#sh
0590: 75 74 64 6f 77 6e 20 24 63 6f 6d 70 75 74 65 72  utdown $computer
05a0: 0d 0a 66 75 6e 63 74 69 6f 6e 20 53 68 75 74 44  ..function ShutD
05b0: 6f 77 6e 28 24 63 6f 6d 70 75 74 65 72 29 0d 0a  own($computer)..
05c0: 7b 0d 0a 69 66 20 28 24 63 6f 6d 70 75 74 65 72  {..if ($computer
05d0: 2e 54 6f 4c 6f 77 65 72 28 29 20 2d 65 71 20 22  .ToLower() -eq "
05e0: 61 6c 6c 22 29 0d 0a 09 7b 0d 0a 09 24 73 65 6c  all")...{...$sel
05f0: 65 63 74 3d 24 73 65 6c 65 63 74 7c 53 65 6c 65  ect=$select|Sele
0600: 63 74 2d 4f 62 6a 65 63 74 20 63 6f 6d 70 75 74  ct-Object comput
0610: 65 72 6e 61 6d 65 0d 0a 09 66 6f 72 65 61 63 68  ername...foreach
0620: 20 28 24 63 6f 6d 70 75 74 65 72 6e 61 6d 65 20   ($computername 
0630: 69 6e 20 24 73 65 6c 65 63 74 29 0d 0a 09 09 7b  in $select)....{
0640: 0d 0a 09 09 09 24 74 61 72 67 65 74 3d 24 63 6f  .....$target=$co
0650: 6d 70 75 74 65 72 6e 61 6d 65 2e 63 6f 6d 70 75  mputername.compu
0660: 74 65 72 6e 61 6d 65 0d 0a 09 09 09 67 65 74 2d  tername.....get-
0670: 77 6d 69 6f 62 6a 65 63 74 20 77 69 6e 33 32 5f  wmiobject win32_
0680: 6f 70 65 72 61 74 69 6e 67 73 79 73 74 65 6d 20  operatingsystem 
0690: 2d 63 6f 6d 70 75 74 65 72 20 24 74 61 72 67 65  -computer $targe
06a0: 74 20 7c 20 66 6f 72 65 61 63 68 20 7b 24 5f 2e  t | foreach {$_.
06b0: 73 68 75 74 64 6f 77 6e 28 29 7d 0d 0a 09 09 7d  shutdown()}....}
06c0: 0d 0a 09 7d 0d 0a 65 6c 73 65 20 7b 0d 0a 09 09  ...}..else {....
06d0: 24 73 65 6c 65 63 74 3d 24 73 65 6c 65 63 74 20  $select=$select 
06e0: 7c 77 68 65 72 65 2d 6f 62 6a 65 63 74 20 7b 24  |where-object {$
06f0: 5f 2e 63 6f 6d 70 75 74 65 72 6e 61 6d 65 20 2d  _.computername -
0700: 65 71 20 24 63 6f 6d 70 75 74 65 72 7d 20 7c 53  eq $computer} |S
0710: 65 6c 65 63 74 2d 4f 62 6a 65 63 74 20 63 6f 6d  elect-Object com
0720: 70 75 74 65 72 6e 61 6d 65 0d 0a 09 09 69 66 20  putername....if 
0730: 28 24 73 65 6c 65 63 74 2e 63 6f 6d 70 75 74 65  ($select.compute
0740: 72 6e 61 6d 65 20 2d 65 71 20 24 6e 75 6c 6c 29  rname -eq $null)
0750: 0d 0a 09 09 7b 0d 0a 09 09 09 65 63 68 6f 20 22  ....{.....echo "
0760: 77 6f 72 6b 73 74 61 74 69 6f 6e 20 24 63 6f 6d  workstation $com
0770: 70 75 74 65 72 20 6e 6f 74 20 66 6f 75 6e 64 2e  puter not found.
0780: 65 70 69 63 20 66 61 69 6c 2e 20 75 73 65 20 61  epic fail. use a
0790: 6c 6c 20 74 6f 20 6b 69 6c 6c 27 65 6d 20 61 6c  ll to kill'em al
07a0: 6c 22 0d 0a 09 09 7d 0d 0a 09 09 65 6c 73 65 0d  l"....}....else.
07b0: 0a 09 09 7b 0d 0a 09 09 09 67 65 74 2d 77 6d 69  ...{.....get-wmi
07c0: 6f 62 6a 65 63 74 20 77 69 6e 33 32 5f 6f 70 65  object win32_ope
07d0: 72 61 74 69 6e 67 73 79 73 74 65 6d 20 2d 63 6f  ratingsystem -co
07e0: 6d 70 75 74 65 72 20 24 63 6f 6d 70 75 74 65 72  mputer $computer
07f0: 20 7c 20 66 6f 72 65 61 63 68 20 7b 24 5f 2e 53   | foreach {$_.S
0800: 68 75 74 64 6f 77 6e 28 29 7d 0d 0a 09 09 7d 0d  hutdown()}....}.
0810: 0a 09 7d 0d 0a 7d 0d 0a 23 23 23 23 72 65 62 6f  ..}..}..####rebo
0820: 6f 74 20 24 63 6f 6d 70 75 74 65 72 0d 0a 66 75  ot $computer..fu
0830: 6e 63 74 69 6f 6e 20 52 65 62 6f 6f 74 28 24 63  nction Reboot($c
0840: 6f 6d 70 75 74 65 72 29 0d 0a 7b 0d 0a 23 72 65  omputer)..{..#re
0850: 62 6f 6f 74 20 61 6c 6c 0d 0a 69 66 20 28 24 63  boot all..if ($c
0860: 6f 6d 70 75 74 65 72 2e 54 6f 4c 6f 77 65 72 28  omputer.ToLower(
0870: 29 20 2d 65 71 20 22 61 6c 6c 22 29 0d 0a 09 7b  ) -eq "all")...{
0880: 0d 0a 09 24 73 65 6c 65 63 74 3d 24 73 65 6c 65  ...$select=$sele
0890: 63 74 7c 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74  ct|Select-Object
08a0: 20 63 6f 6d 70 75 74 65 72 6e 61 6d 65 0d 0a 09   computername...
08b0: 66 6f 72 65 61 63 68 20 28 24 63 6f 6d 70 75 74  foreach ($comput
08c0: 65 72 6e 61 6d 65 20 69 6e 20 24 73 65 6c 65 63  ername in $selec
08d0: 74 29 0d 0a 09 09 7b 0d 0a 09 09 09 24 74 61 72  t)....{.....$tar
08e0: 67 65 74 3d 24 63 6f 6d 70 75 74 65 72 6e 61 6d  get=$computernam
08f0: 65 2e 63 6f 6d 70 75 74 65 72 6e 61 6d 65 0d 0a  e.computername..
0900: 09 09 09 67 65 74 2d 77 6d 69 6f 62 6a 65 63 74  ...get-wmiobject
0910: 20 77 69 6e 33 32 5f 6f 70 65 72 61 74 69 6e 67   win32_operating
0920: 73 79 73 74 65 6d 20 2d 63 6f 6d 70 75 74 65 72  system -computer
0930: 20 24 74 61 72 67 65 74 20 7c 20 66 6f 72 65 61   $target | forea
0940: 63 68 20 7b 24 5f 2e 72 65 62 6f 6f 74 28 29 7d  ch {$_.reboot()}
0950: 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a 65 6c 73 65 20  ....}...}..else 
0960: 7b 0d 0a 09 24 73 65 6c 65 63 74 3d 24 73 65 6c  {...$select=$sel
0970: 65 63 74 20 7c 77 68 65 72 65 2d 6f 62 6a 65 63  ect |where-objec
0980: 74 20 7b 24 5f 2e 63 6f 6d 70 75 74 65 72 6e 61  t {$_.computerna
0990: 6d 65 20 2d 65 71 20 24 63 6f 6d 70 75 74 65 72  me -eq $computer
09a0: 7d 20 7c 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74  } |Select-Object
09b0: 20 63 6f 6d 70 75 74 65 72 6e 61 6d 65 0d 0a 09   computername...
09c0: 23 63 68 65 63 6b 20 69 6e 70 75 74 0d 0a 09 69  #check input...i
09d0: 66 20 28 24 73 65 6c 65 63 74 2e 63 6f 6d 70 75  f ($select.compu
09e0: 74 65 72 6e 61 6d 65 20 2d 65 71 20 24 6e 75 6c  tername -eq $nul
09f0: 6c 29 0d 0a 09 7b 0d 0a 09 09 65 63 68 6f 20 22  l)...{....echo "
0a00: 77 6f 72 6b 73 74 61 74 69 6f 6e 20 24 63 6f 6d  workstation $com
0a10: 70 75 74 65 72 20 6e 6f 74 20 66 6f 75 6e 64 2e  puter not found.
0a20: 65 70 69 63 20 66 61 69 6c 2e 20 75 73 65 20 61  epic fail. use a
0a30: 6c 6c 20 74 6f 20 6b 69 6c 6c 27 65 6d 20 61 6c  ll to kill'em al
0a40: 6c 22 0d 0a 09 7d 0d 0a 09 23 72 65 62 6f 6f 74  l"...}...#reboot
0a50: 0d 0a 09 65 6c 73 65 0d 0a 09 09 7b 0d 0a 09 09  ...else....{....
0a60: 09 67 65 74 2d 77 6d 69 6f 62 6a 65 63 74 20 77  .get-wmiobject w
0a70: 69 6e 33 32 5f 6f 70 65 72 61 74 69 6e 67 73 79  in32_operatingsy
0a80: 73 74 65 6d 20 2d 63 6f 6d 70 75 74 65 72 20 24  stem -computer $
0a90: 63 6f 6d 70 75 74 65 72 20 7c 20 66 6f 72 65 61  computer | forea
0aa0: 63 68 20 7b 24 5f 2e 72 65 62 6f 6f 74 28 29 7d  ch {$_.reboot()}
0ab0: 0d 0a 09 09 09 23 64 65 6c 61 79 20 74 6f 20 62  .....#delay to b
0ac0: 65 20 70 6f 77 65 72 67 72 69 64 20 66 72 69 65  e powergrid frie
0ad0: 6e 64 6c 79 0d 0a 09 09 09 53 74 61 72 74 2d 53  ndly.....Start-S
0ae0: 6c 65 65 70 20 2d 73 65 63 6f 6e 64 73 20 35 0d  leep -seconds 5.
0af0: 0a 09 09 7d 0d 0a 09 7d 0d 0a 7d 0d 0a 0d 0a 23  ...}...}..}....#
0b00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0b10: 23 23 0d 0a 24 6f 70 74 69 6f 6e 3d 72 65 61 64  ##..$option=read
0b20: 2d 68 6f 73 74 20 22 45 6e 74 65 72 20 6f 70 74  -host "Enter opt
0b30: 69 6f 6e 22 0d 0a 24 73 65 6c 65 63 74 3d 49 6d  ion"..$select=Im
0b40: 70 6f 72 74 2d 43 73 76 20 77 6f 72 6b 73 74 61  port-Csv worksta
0b50: 74 69 6f 6e 73 2e 63 73 76 0d 0a 73 77 69 74 63  tions.csv..switc
0b60: 68 20 28 24 6f 70 74 69 6f 6e 29 0d 0a 7b 0d 0a  h ($option)..{..
0b70: 09 22 77 6f 6c 22 20 7b 0d 0a 09 09 09 24 63 6f  ."wol" {.....$co
0b80: 6d 70 75 74 65 72 3d 72 65 61 64 2d 68 6f 73 74  mputer=read-host
0b90: 20 22 45 6e 74 65 72 20 57 6f 72 6b 73 74 61 74   "Enter Workstat
0ba0: 69 6f 6e 20 74 6f 20 77 61 6b 65 2e 2e 2e 22 0d  ion to wake...".
0bb0: 0a 09 09 09 69 66 20 28 24 63 6f 6d 70 75 74 65  ....if ($compute
0bc0: 72 20 2d 65 71 20 22 61 6c 6c 22 29 0d 0a 09 09  r -eq "all")....
0bd0: 09 7b 0d 0a 09 09 09 09 57 61 6b 65 4f 6e 4c 61  .{......WakeOnLa
0be0: 6e 41 6c 6c 0d 0a 09 09 09 7d 0d 0a 09 65 6c 73  nAll.....}...els
0bf0: 65 20 7b 0d 0a 09 09 09 57 61 6b 65 4f 6e 4c 61  e {.....WakeOnLa
0c00: 6e 28 24 63 6f 6d 70 75 74 65 72 29 0d 0a 09 09  n($computer)....
0c10: 09 70 69 6e 67 20 2d 34 20 2d 6e 20 32 35 20 24  .ping -4 -n 25 $
0c20: 63 6f 6d 70 75 74 65 72 0d 0a 09 09 7d 0d 0a 09  computer....}...
0c30: 7d 0d 0a 09 22 72 65 62 6f 6f 74 22 20 7b 0d 0a  }..."reboot" {..
0c40: 09 09 09 24 63 6f 6d 70 75 74 65 72 3d 72 65 61  ...$computer=rea
0c50: 64 2d 68 6f 73 74 20 22 45 6e 74 65 72 20 57 6f  d-host "Enter Wo
0c60: 72 6b 73 74 61 74 69 6f 6e 20 74 6f 20 72 65 62  rkstation to reb
0c70: 6f 6f 74 2e 2e 2e 22 0d 0a 09 09 09 52 65 62 6f  oot...".....Rebo
0c80: 6f 74 28 24 63 6f 6d 70 75 74 65 72 29 0d 0a 09  ot($computer)...
0c90: 7d 0d 0a 09 22 73 68 75 74 64 6f 77 6e 22 20 7b  }..."shutdown" {
0ca0: 0d 0a 09 09 09 24 63 6f 6d 70 75 74 65 72 3d 72  .....$computer=r
0cb0: 65 61 64 2d 68 6f 73 74 20 22 45 6e 74 65 72 20  ead-host "Enter 
0cc0: 57 6f 72 6b 73 74 61 74 69 6f 6e 20 74 6f 20 6b  Workstation to k
0cd0: 69 6c 6c 2e 2e 2e 22 0d 0a 09 09 09 53 68 75 74  ill...".....Shut
0ce0: 64 6f 77 6e 28 24 63 6f 6d 70 75 74 65 72 29 0d  down($computer).
0cf0: 0a 09 7d 0d 0a 09 64 65 66 61 75 6c 74 20 7b 65  ..}...default {e
0d00: 63 68 6f 20 22 65 72 72 6f 72 21 6f 70 74 69 6f  cho "error!optio
0d10: 6e 73 20 61 72 65 20 3a 20 77 6f 6c 2c 20 72 65  ns are : wol, re
0d20: 62 6f 6f 74 2c 20 73 68 75 74 64 6f 77 6e 22 7d  boot, shutdown"}
0d30: 0d 0a 7d 0d 0a                                   ..}..