PoshCode Archive  Hex Artifact Content

Artifact c4608db616e87961bc96c56d151d8a80b52856c36d591d1d370c73b7976e7adc:

  • File vb.ps1 — part of check-in [3882bf0153] at 2018-06-10 14:08:07 on branch trunk — Makes use of Sysinternal’s psexec to get session data from qwinsta for both local and remote computers. (user: hotsnoj size: 2008)

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 76  hell..# title: v
0030: 62 0d 0a 23 20 64 65 73 63 72 69 70 74 69 6f 6e  b..# description
0040: 3a 20 4d 61 6b 65 73 20 75 73 65 20 6f 66 20 53  : Makes use of S
0050: 79 73 69 6e 74 65 72 6e 61 6c e2 80 99 73 20 70  ysinternal...s p
0060: 73 65 78 65 63 20 74 6f 20 67 65 74 20 73 65 73  sexec to get ses
0070: 73 69 6f 6e 20 64 61 74 61 20 66 72 6f 6d 20 71  sion data from q
0080: 77 69 6e 73 74 61 20 66 6f 72 20 62 6f 74 68 20  winsta for both 
0090: 6c 6f 63 61 6c 20 61 6e 64 20 72 65 6d 6f 74 65  local and remote
00a0: 20 63 6f 6d 70 75 74 65 72 73 2e 0d 0a 23 20 76   computers...# v
00b0: 65 72 73 69 6f 6e 3a 20 30 2e 31 0d 0a 23 20 61  ersion: 0.1..# a
00c0: 75 74 68 6f 72 3a 20 68 6f 74 73 6e 6f 6a 0d 0a  uthor: hotsnoj..
00d0: 23 20 6c 69 63 65 6e 73 65 3a 20 43 43 30 0d 0a  # license: CC0..
00e0: 23 20 78 2d 70 6f 73 68 63 6f 64 65 2d 69 64 3a  # x-poshcode-id:
00f0: 20 36 31 30 36 0d 0a 23 20 78 2d 61 72 63 68 69   6106..# x-archi
0100: 76 65 64 3a 20 32 30 31 36 2d 30 33 2d 31 38 54  ved: 2016-03-18T
0110: 32 31 3a 31 39 3a 34 34 0d 0a 23 20 78 2d 70 75  21:19:44..# x-pu
0120: 62 6c 69 73 68 65 64 3a 20 32 30 31 36 2d 31 31  blished: 2016-11
0130: 2d 31 39 54 32 32 3a 33 37 3a 30 30 0d 0a 23 0d  -19T22:37:00..#.
0140: 0a 23 0d 0a 70 61 72 61 6d 20 28 0d 0a 20 20 20  .#..param (..   
0150: 20 24 43 6f 6d 70 75 74 65 72 4e 61 6d 65 20 23   $ComputerName #
0160: 28 52 65 61 64 2d 48 6f 73 74 20 2d 50 72 6f 6d  (Read-Host -Prom
0170: 70 74 20 22 45 6e 74 65 72 20 61 20 63 6f 6d 70  pt "Enter a comp
0180: 75 74 65 72 20 6e 61 6d 65 22 29 0d 0a 29 0d 0a  uter name")..)..
0190: 0d 0a 69 66 28 24 43 6f 6d 70 75 74 65 72 4e 61  ..if($ComputerNa
01a0: 6d 65 20 2d 65 71 20 24 6e 75 6c 6c 29 20 7b 0d  me -eq $null) {.
01b0: 0a 20 20 20 20 24 63 20 3d 20 71 77 69 6e 73 74  .    $c = qwinst
01c0: 61 20 32 3e 26 31 20 7c 20 77 68 65 72 65 20 7b  a 2>&1 | where {
01d0: 24 5f 2e 67 65 74 74 79 70 65 28 29 2e 65 71 75  $_.gettype().equ
01e0: 61 6c 73 28 5b 73 74 72 69 6e 67 5d 29 20 7d 0d  als([string]) }.
01f0: 0a 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 24  .} else {..    $
0200: 63 20 3d 20 70 73 65 78 65 63 20 22 5c 5c 24 43  c = psexec "\\$C
0210: 6f 6d 70 75 74 65 72 4e 61 6d 65 22 20 2d 73 20  omputerName" -s 
0220: 71 77 69 6e 73 74 61 20 32 3e 26 31 20 7c 20 77  qwinsta 2>&1 | w
0230: 68 65 72 65 20 7b 24 5f 2e 67 65 74 74 79 70 65  here {$_.gettype
0240: 28 29 2e 65 71 75 61 6c 73 28 5b 73 74 72 69 6e  ().equals([strin
0250: 67 5d 29 20 7d 0d 0a 7d 0d 0a 24 73 74 61 72 74  g]) }..}..$start
0260: 65 72 73 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74  ers = New-Object
0270: 20 70 73 6f 62 6a 65 63 74 20 2d 50 72 6f 70 65   psobject -Prope
0280: 72 74 79 20 40 7b 22 53 65 73 73 69 6f 6e 4e 61  rty @{"SessionNa
0290: 6d 65 22 20 3d 20 30 3b 20 22 55 73 65 72 6e 61  me" = 0; "Userna
02a0: 6d 65 22 20 3d 20 30 3b 20 22 49 44 22 20 3d 20  me" = 0; "ID" = 
02b0: 30 3b 20 22 53 74 61 74 65 22 20 3d 20 30 3b 20  0; "State" = 0; 
02c0: 22 54 79 70 65 22 20 3d 20 30 3b 20 22 44 65 76  "Type" = 0; "Dev
02d0: 69 63 65 22 20 3d 20 30 3b 7d 3b 0d 0a 0d 0a 66  ice" = 0;};....f
02e0: 6f 72 65 61 63 68 28 24 6c 69 6e 65 20 69 6e 20  oreach($line in 
02f0: 24 63 29 20 7b 0d 0a 20 20 20 20 20 74 72 79 20  $c) {..     try 
0300: 7b 0d 0a 20 20 20 20 20 20 20 20 20 69 66 28 24  {..         if($
0310: 6c 69 6e 65 2e 74 72 69 6d 28 29 2e 73 75 62 73  line.trim().subs
0320: 74 72 69 6e 67 28 30 2c 20 24 6c 69 6e 65 2e 74  tring(0, $line.t
0330: 72 69 6d 28 29 2e 69 6e 64 65 78 6f 66 28 22 20  rim().indexof(" 
0340: 22 29 29 20 2d 65 71 20 22 53 45 53 53 49 4f 4e  ")) -eq "SESSION
0350: 4e 41 4d 45 22 29 20 7b 0d 0a 20 20 20 20 20 20  NAME") {..      
0360: 20 20 20 20 20 20 24 73 74 61 72 74 65 72 73 2e        $starters.
0370: 55 73 65 72 6e 61 6d 65 20 3d 20 24 6c 69 6e 65  Username = $line
0380: 2e 69 6e 64 65 78 6f 66 28 22 55 53 45 52 4e 41  .indexof("USERNA
0390: 4d 45 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ME");..         
03a0: 20 20 20 24 73 74 61 72 74 65 72 73 2e 49 44 20     $starters.ID 
03b0: 3d 20 24 6c 69 6e 65 2e 69 6e 64 65 78 6f 66 28  = $line.indexof(
03c0: 22 49 44 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  "ID");..        
03d0: 20 20 20 20 24 73 74 61 72 74 65 72 73 2e 53 74      $starters.St
03e0: 61 74 65 20 3d 20 24 6c 69 6e 65 2e 69 6e 64 65  ate = $line.inde
03f0: 78 6f 66 28 22 53 54 41 54 45 22 29 3b 0d 0a 20  xof("STATE");.. 
0400: 20 20 20 20 20 20 20 20 20 20 20 24 73 74 61 72             $star
0410: 74 65 72 73 2e 54 79 70 65 20 3d 20 24 6c 69 6e  ters.Type = $lin
0420: 65 2e 69 6e 64 65 78 6f 66 28 22 54 59 50 45 22  e.indexof("TYPE"
0430: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
0440: 24 73 74 61 72 74 65 72 73 2e 44 65 76 69 63 65  $starters.Device
0450: 20 3d 20 24 6c 69 6e 65 2e 69 6e 64 65 78 6f 66   = $line.indexof
0460: 28 22 44 45 56 49 43 45 22 29 3b 0d 0a 20 20 20  ("DEVICE");..   
0470: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
0480: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
0490: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
04a0: 20 4e 65 77 2d 4f 62 6a 65 63 74 20 70 73 6f 62   New-Object psob
04b0: 6a 65 63 74 20 2d 50 72 6f 70 65 72 74 79 20 40  ject -Property @
04c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22  {..            "
04d0: 53 65 73 73 69 6f 6e 4e 41 6d 65 22 20 3d 20 24  SessionNAme" = $
04e0: 6c 69 6e 65 2e 74 72 69 6d 28 29 2e 73 75 62 73  line.trim().subs
04f0: 74 72 69 6e 67 28 30 2c 20 24 6c 69 6e 65 2e 74  tring(0, $line.t
0500: 72 69 6d 28 29 2e 69 6e 64 65 78 6f 66 28 22 20  rim().indexof(" 
0510: 22 29 29 2e 74 72 69 6d 28 22 3e 22 29 0d 0a 20  ")).trim(">").. 
0520: 20 20 20 20 20 20 20 20 20 20 20 3b 22 55 73 65             ;"Use
0530: 72 6e 61 6d 65 22 20 3d 20 24 6c 69 6e 65 2e 53  rname" = $line.S
0540: 75 62 73 74 72 69 6e 67 28 24 73 74 61 72 74 65  ubstring($starte
0550: 72 73 2e 55 73 65 72 6e 61 6d 65 2c 20 24 6c 69  rs.Username, $li
0560: 6e 65 2e 49 6e 64 65 78 4f 66 28 22 20 22 2c 20  ne.IndexOf(" ", 
0570: 24 73 74 61 72 74 65 72 73 2e 55 73 65 72 6e 61  $starters.Userna
0580: 6d 65 29 20 2d 20 24 73 74 61 72 74 65 72 73 2e  me) - $starters.
0590: 55 73 65 72 6e 61 6d 65 29 0d 0a 20 20 20 20 20  Username)..     
05a0: 20 20 20 20 20 20 20 3b 22 49 44 22 20 3d 20 24         ;"ID" = $
05b0: 6c 69 6e 65 2e 53 75 62 73 74 72 69 6e 67 28 24  line.Substring($
05c0: 6c 69 6e 65 2e 49 6e 64 65 78 4f 66 28 22 20 22  line.IndexOf(" "
05d0: 2c 20 24 73 74 61 72 74 65 72 73 2e 55 73 65 72  , $starters.User
05e0: 6e 61 6d 65 29 2c 20 24 73 74 61 72 74 65 72 73  name), $starters
05f0: 2e 49 44 20 2d 20 24 6c 69 6e 65 2e 49 6e 64 65  .ID - $line.Inde
0600: 78 4f 66 28 22 20 22 2c 20 24 73 74 61 72 74 65  xOf(" ", $starte
0610: 72 73 2e 55 73 65 72 6e 61 6d 65 29 20 2b 20 32  rs.Username) + 2
0620: 29 2e 74 72 69 6d 28 29 0d 0a 20 20 20 20 20 20  ).trim()..      
0630: 20 20 20 20 20 20 3b 22 53 74 61 74 65 22 20 3d        ;"State" =
0640: 20 24 6c 69 6e 65 2e 53 75 62 73 74 72 69 6e 67   $line.Substring
0650: 28 24 73 74 61 72 74 65 72 73 2e 53 74 61 74 65  ($starters.State
0660: 2c 20 24 6c 69 6e 65 2e 49 6e 64 65 78 4f 66 28  , $line.IndexOf(
0670: 22 20 22 2c 20 24 73 74 61 72 74 65 72 73 2e 53  " ", $starters.S
0680: 74 61 74 65 29 2d 24 73 74 61 72 74 65 72 73 2e  tate)-$starters.
0690: 53 74 61 74 65 29 2e 74 72 69 6d 28 29 0d 0a 20  State).trim().. 
06a0: 20 20 20 20 20 20 20 20 20 20 20 3b 22 54 79 70             ;"Typ
06b0: 65 22 20 3d 20 24 6c 69 6e 65 2e 53 75 62 73 74  e" = $line.Subst
06c0: 72 69 6e 67 28 24 73 74 61 72 74 65 72 73 2e 54  ring($starters.T
06d0: 79 70 65 2c 20 24 73 74 61 72 74 65 72 73 2e 44  ype, $starters.D
06e0: 65 76 69 63 65 20 2d 20 24 73 74 61 72 74 65 72  evice - $starter
06f0: 73 2e 54 79 70 65 29 2e 74 72 69 6d 28 29 0d 0a  s.Type).trim()..
0700: 20 20 20 20 20 20 20 20 20 20 20 20 3b 22 44 65              ;"De
0710: 76 69 63 65 22 20 3d 20 24 6c 69 6e 65 2e 53 75  vice" = $line.Su
0720: 62 73 74 72 69 6e 67 28 24 73 74 61 72 74 65 72  bstring($starter
0730: 73 2e 44 65 76 69 63 65 29 2e 74 72 69 6d 28 29  s.Device).trim()
0740: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
0750: 20 7d 20 63 61 74 63 68 20 7b 0d 0a 20 20 20 20   } catch {..    
0760: 20 20 20 20 74 68 72 6f 77 20 24 5f 3b 0d 0a 20      throw $_;.. 
0770: 20 20 20 20 20 20 20 23 24 65 20 3d 20 24 5f 3b         #$e = $_;
0780: 0d 0a 20 20 20 20 20 20 20 20 23 57 72 69 74 65  ..        #Write
0790: 2d 45 72 72 6f 72 20 2d 45 78 63 65 70 74 69 6f  -Error -Exceptio
07a0: 6e 20 24 65 2e 45 78 63 65 70 74 69 6f 6e 20 2d  n $e.Exception -
07b0: 4d 65 73 73 61 67 65 20 24 65 2e 50 53 4d 65 73  Message $e.PSMes
07c0: 73 61 67 65 44 65 74 61 69 6c 73 3b 0d 0a 20 20  sageDetails;..  
07d0: 20 20 7d 0d 0a 7d 0d 0a                            }..}..