PoshCode Archive  Hex Artifact Content

Artifact 2ee46cc204436a24f09ba3d521e3e32b1529aeee51fbf46e91550f2dcb8973c2:

  • File Write-SessionLockdown.ps1 — part of check-in [6ad008911f] at 2018-06-10 13:39:25 on branch trunk — This file was uploaded by a PowerGUI Script Editor Add-on. (user: Anonymous size: 1946)

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: 72 69 74 65 2d 53 65 73 73 69 6f 6e 4c 6f 63 6b  rite-SessionLock
0040: 64 6f 77 6e 2e 70 73 0d 0a 23 20 64 65 73 63 72  down.ps..# descr
0050: 69 70 74 69 6f 6e 3a 20 54 68 69 73 20 66 69 6c  iption: This fil
0060: 65 20 77 61 73 20 75 70 6c 6f 61 64 65 64 20 62  e was uploaded b
0070: 79 20 61 20 50 6f 77 65 72 47 55 49 20 53 63 72  y a PowerGUI Scr
0080: 69 70 74 20 45 64 69 74 6f 72 20 41 64 64 2d 6f  ipt Editor Add-o
0090: 6e 2e 0d 0a 23 20 76 65 72 73 69 6f 6e 3a 20 30  n...# version: 0
00a0: 2e 31 0d 0a 23 20 74 79 70 65 3a 20 66 75 6e 63  .1..# type: func
00b0: 74 69 6f 6e 0d 0a 23 20 61 75 74 68 6f 72 3a 20  tion..# author: 
00c0: 41 6e 6f 6e 79 6d 6f 75 73 0d 0a 23 20 6c 69 63  Anonymous..# lic
00d0: 65 6e 73 65 3a 20 43 43 30 0d 0a 23 20 66 75 6e  ense: CC0..# fun
00e0: 63 74 69 6f 6e 3a 20 57 72 69 74 65 2d 53 65 73  ction: Write-Ses
00f0: 73 69 6f 6e 4c 6f 63 6b 64 6f 77 6e 0d 0a 23 20  sionLockdown..# 
0100: 78 2d 70 6f 73 68 63 6f 64 65 2d 69 64 3a 20 34  x-poshcode-id: 4
0110: 33 31 32 0d 0a 23 20 78 2d 61 72 63 68 69 76 65  312..# x-archive
0120: 64 3a 20 32 30 31 33 2d 30 37 2d 32 35 54 31 30  d: 2013-07-25T10
0130: 3a 34 39 3a 33 35 0d 0a 23 20 78 2d 70 75 62 6c  :49:35..# x-publ
0140: 69 73 68 65 64 3a 20 32 30 31 33 2d 30 37 2d 31  ished: 2013-07-1
0150: 39 54 30 39 3a 35 34 3a 30 30 0d 0a 23 0d 0a 23  9T09:54:00..#..#
0160: 0d 0a 66 75 6e 63 74 69 6f 6e 20 57 72 69 74 65  ..function Write
0170: 2d 53 65 73 73 69 6f 6e 4c 6f 63 6b 64 6f 77 6e  -SessionLockdown
0180: 0d 0a 7b 0d 0a 20 20 20 20 0d 0a 09 3c 23 0d 0a  ..{..    ...<#..
0190: 20 20 20 20 2e 53 79 6e 6f 70 73 69 73 0d 0a 20      .Synopsis.. 
01a0: 20 20 20 20 20 20 20 57 72 69 74 65 73 20 61 20         Writes a 
01b0: 73 63 72 69 70 74 20 74 6f 20 6c 6f 63 6b 20 64  script to lock d
01c0: 6f 77 6e 20 61 20 73 65 73 73 69 6f 6e 20 74 6f  own a session to
01d0: 20 61 20 6c 69 73 74 20 6f 66 20 72 65 71 75 69   a list of requi
01e0: 72 65 64 20 63 6f 6d 6d 61 6e 64 73 0d 0a 20 20  red commands..  
01f0: 20 20 2e 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a    .Description..
0200: 20 20 20 20 20 20 20 20 57 72 69 74 65 73 20 61          Writes a
0210: 20 73 63 72 69 70 74 20 74 6f 20 6c 6f 63 6b 20   script to lock 
0220: 64 6f 77 6e 20 61 20 73 65 73 73 69 6f 6e 20 74  down a session t
0230: 6f 20 61 20 6c 69 73 74 20 6f 66 20 72 65 71 75  o a list of requ
0240: 69 72 65 64 20 63 6f 6d 6d 61 6e 64 73 2e 20 20  ired commands.  
0250: 0d 0a 20 20 20 20 20 20 20 20 54 68 69 73 20 73  ..        This s
0260: 63 72 69 70 74 20 63 61 6e 20 62 65 20 61 74 20  cript can be at 
0270: 74 68 65 20 65 6e 64 20 6f 66 20 61 20 63 6f 6e  the end of a con
0280: 73 74 72 61 69 6e 65 64 20 72 75 6e 73 70 61 63  strained runspac
0290: 65 20 64 65 66 69 6e 69 74 6f 6e 0d 0a 20 20 20  e definiton..   
02a0: 20 2e 45 78 61 6d 70 6c 65 0d 0a 20 20 20 20 20   .Example..     
02b0: 20 20 20 57 72 69 74 65 2d 53 65 73 73 69 6f 6e     Write-Session
02c0: 4c 6f 63 6b 64 6f 77 6e 20 2d 52 65 71 75 69 72  Lockdown -Requir
02d0: 65 64 43 6f 6d 6d 61 6e 64 73 20 27 57 72 69 74  edCommands 'Writ
02e0: 65 2d 48 6f 73 74 27 0d 0a 20 20 20 20 23 3e 0d  e-Host'..    #>.
02f0: 0a 09 0d 0a 20 20 20 20 70 61 72 61 6d 28 0d 0a  ....    param(..
0300: 20 20 20 20 23 20 4f 6e 65 20 6f 72 20 6d 6f 72      # One or mor
0310: 65 20 72 65 71 75 69 72 65 64 20 63 6f 6d 6d 61  e required comma
0320: 6e 64 73 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65  nds..    [Parame
0330: 74 65 72 28 4d 61 6e 64 61 74 6f 72 79 3d 24 74  ter(Mandatory=$t
0340: 72 75 65 2c 50 6f 73 69 74 69 6f 6e 3d 30 2c 56  rue,Position=0,V
0350: 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65  alueFromPipeline
0360: 42 79 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d 24  ByPropertyName=$
0370: 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b 73 74 72  true)]..    [str
0380: 69 6e 67 5b 5d 5d 0d 0a 20 20 20 20 24 52 65 71  ing[]]..    $Req
0390: 75 69 72 65 64 43 6f 6d 6d 61 6e 64 73 0d 0a 20  uiredCommands.. 
03a0: 20 20 20 29 0d 0a 20 20 20 20 0d 0a 20 20 20 20     )..    ..    
03b0: 70 72 6f 63 65 73 73 20 7b 0d 0a 24 6f 66 73 20  process {..$ofs 
03c0: 3d 20 22 27 2c 27 22 0d 0a 22 60 24 72 65 71 75  = "','".."`$requ
03d0: 69 72 65 64 43 6f 6d 6d 61 6e 64 73 20 3d 20 27  iredCommands = '
03e0: 24 72 65 71 75 69 72 65 64 43 6f 6d 6d 61 6e 64  $requiredCommand
03f0: 73 27 0d 0a 22 20 2b 20 40 27 0d 0a 24 45 78 65  s'.." + @'..$Exe
0400: 63 75 74 69 6f 6e 43 6f 6e 74 65 78 74 2e 53 65  cutionContext.Se
0410: 73 73 69 6f 6e 53 74 61 74 65 2e 53 63 72 69 70  ssionState.Scrip
0420: 74 73 2e 43 6c 65 61 72 28 29 0d 0a 24 45 78 65  ts.Clear()..$Exe
0430: 63 75 74 69 6f 6e 43 6f 6e 74 65 78 74 2e 53 65  cutionContext.Se
0440: 73 73 69 6f 6e 53 74 61 74 65 2e 41 70 70 6c 69  ssionState.Appli
0450: 63 61 74 69 6f 6e 73 2e 43 6c 65 61 72 28 29 0d  cations.Clear().
0460: 0a 24 63 6f 6d 6d 61 6e 64 73 54 6f 50 72 6f 78  .$commandsToProx
0470: 79 4e 61 6d 65 73 20 3d 20 40 28 5b 4d 61 6e 61  yNames = @([Mana
0480: 67 65 6d 65 6e 74 2e 41 75 74 6f 6d 61 74 69 6f  gement.Automatio
0490: 6e 2e 43 6f 6d 6d 61 6e 64 4d 65 74 61 44 61 74  n.CommandMetaDat
04a0: 61 5d 3a 3a 47 65 74 52 65 73 74 72 69 63 74 65  a]::GetRestricte
04b0: 64 43 6f 6d 6d 61 6e 64 73 28 22 52 65 6d 6f 74  dCommands("Remot
04c0: 65 53 65 72 76 65 72 22 29 2e 4b 65 79 73 29 0d  eServer").Keys).
04d0: 0a 24 72 65 71 75 69 72 65 64 43 6f 6d 6d 61 6e  .$requiredComman
04e0: 64 73 20 2b 3d 20 24 63 6f 6d 6d 61 6e 64 73 54  ds += $commandsT
04f0: 6f 50 72 6f 78 79 4e 61 6d 65 73 20 0d 0a 20 20  oProxyNames ..  
0500: 20 20 0d 0a 47 65 74 2d 43 6f 6d 6d 61 6e 64 20    ..Get-Command 
0510: 7c 0d 0a 20 20 20 20 46 6f 72 45 61 63 68 2d 4f  |..    ForEach-O
0520: 62 6a 65 63 74 20 7b 0d 0a 20 20 20 20 20 20 20  bject {..       
0530: 20 24 63 6d 64 20 3d 20 24 5f 0d 0a 20 20 20 20   $cmd = $_..    
0540: 20 20 20 20 69 66 20 28 24 72 65 71 75 69 72 65      if ($require
0550: 64 43 6f 6d 6d 61 6e 64 73 20 2d 6e 6f 74 63 6f  dCommands -notco
0560: 6e 74 61 69 6e 73 20 24 63 6d 64 2e 4e 61 6d 65  ntains $cmd.Name
0570: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
0580: 20 24 43 6d 64 2e 56 69 73 69 62 69 6c 69 74 79   $Cmd.Visibility
0590: 20 3d 20 27 50 72 69 76 61 74 65 27 0d 0a 20 20   = 'Private'..  
05a0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
05b0: 20 69 66 20 28 24 63 6f 6d 6d 61 6e 64 73 54 6f   if ($commandsTo
05c0: 50 72 6f 78 79 4e 61 6d 65 73 20 2d 63 6f 6e 74  ProxyNames -cont
05d0: 61 69 6e 73 20 24 63 6d 64 2e 4e 61 6d 65 29 20  ains $cmd.Name) 
05e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24  {..            $
05f0: 63 6d 64 4d 64 20 3d 20 5b 4d 61 6e 61 67 65 6d  cmdMd = [Managem
0600: 65 6e 74 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 43  ent.Automation.C
0610: 6f 6d 6d 61 6e 64 4d 65 74 61 44 61 74 61 5d 3a  ommandMetaData]:
0620: 3a 47 65 74 52 65 73 74 72 69 63 74 65 64 43 6f  :GetRestrictedCo
0630: 6d 6d 61 6e 64 73 28 22 52 65 6d 6f 74 65 53 65  mmands("RemoteSe
0640: 72 76 65 72 22 29 5b 24 63 6d 64 2e 4e 61 6d 65  rver")[$cmd.Name
0650: 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24  ]..            $
0660: 70 72 6f 78 79 20 3d 20 5b 4d 61 6e 61 67 65 6d  proxy = [Managem
0670: 65 6e 74 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 50  ent.Automation.P
0680: 72 6f 78 79 43 6f 6d 6d 61 6e 64 5d 3a 3a 43 72  roxyCommand]::Cr
0690: 65 61 74 65 28 24 63 6d 64 4d 64 29 0d 0a 20 20  eate($cmdMd)..  
06a0: 20 20 20 20 20 20 20 20 20 20 2e 20 28 5b 53 63            . ([Sc
06b0: 72 69 70 74 42 4c 6f 63 6b 5d 3a 3a 43 72 65 61  riptBLock]::Crea
06c0: 74 65 28 0d 0a 22 66 75 6e 63 74 69 6f 6e 20 24  te(.."function $
06d0: 28 24 63 6d 64 2e 4e 61 6d 65 29 20 7b 0d 0a 20  ($cmd.Name) {.. 
06e0: 20 20 20 24 70 72 6f 78 79 0d 0a 7d 0d 0a 22 20     $proxy..}.." 
06f0: 20 20 20 20 20 20 20 20 20 20 20 0d 0a 29 29 0d             ..)).
0700: 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 63 6d  .            $cm
0710: 64 2e 56 69 73 69 62 69 6c 69 74 79 20 3d 20 27  d.Visibility = '
0720: 50 72 69 76 61 74 65 27 0d 0a 20 20 20 20 20 20  Private'..      
0730: 20 20 7d 20 20 20 20 20 20 20 20 0d 0a 20 20 20    }        ..   
0740: 20 7d 20 20 20 20 0d 0a 0d 0a 24 45 78 65 63 75   }    ....$Execu
0750: 74 69 6f 6e 43 6f 6e 74 65 78 74 2e 53 65 73 73  tionContext.Sess
0760: 69 6f 6e 53 74 61 74 65 2e 4c 61 6e 67 75 61 67  ionState.Languag
0770: 65 4d 6f 64 65 20 3d 20 27 4e 6f 4c 61 6e 67 75  eMode = 'NoLangu
0780: 61 67 65 27 0d 0a 27 40 0d 0a 20 20 20 20 0d 0a  age'..'@..    ..
0790: 20 20 20 20 7d 0d 0a 7d 0d 0a                        }..}..