PoshCode Archive  Hex Artifact Content

Artifact 97129c4f1434713a3158894ac6dbdd085d6ba34862c2c7cdd5ec0e93cb71fb33:

  • File get-lockedtime.ps1 — part of check-in [43e4e36021] at 2018-06-10 13:19:46 on branch trunk — Finds the length of time a session has been “locked”. (user: hotsnoj size: 2374)

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 67  hell..# title: g
0030: 65 74 2d 6c 6f 63 6b 65 64 74 69 6d 65 0d 0a 23  et-lockedtime..#
0040: 20 64 65 73 63 72 69 70 74 69 6f 6e 3a 20 46 69   description: Fi
0050: 6e 64 73 20 74 68 65 20 6c 65 6e 67 74 68 20 6f  nds the length o
0060: 66 20 74 69 6d 65 20 61 20 73 65 73 73 69 6f 6e  f time a session
0070: 20 68 61 73 20 62 65 65 6e 20 e2 80 9c 6c 6f 63   has been ...loc
0080: 6b 65 64 e2 80 9d 2e 0d 0a 23 20 76 65 72 73 69  ked......# versi
0090: 6f 6e 3a 20 30 2e 31 0d 0a 23 20 74 79 70 65 3a  on: 0.1..# type:
00a0: 20 66 75 6e 63 74 69 6f 6e 0d 0a 23 20 61 75 74   function..# aut
00b0: 68 6f 72 3a 20 68 6f 74 73 6e 6f 6a 0d 0a 23 20  hor: hotsnoj..# 
00c0: 6c 69 63 65 6e 73 65 3a 20 43 43 30 0d 0a 23 20  license: CC0..# 
00d0: 78 2d 70 6f 73 68 63 6f 64 65 2d 69 64 3a 20 33  x-poshcode-id: 3
00e0: 30 36 31 0d 0a 23 20 78 2d 61 72 63 68 69 76 65  061..# x-archive
00f0: 64 3a 20 32 30 31 31 2d 31 31 2d 32 39 54 31 38  d: 2011-11-29T18
0100: 3a 31 32 3a 35 39 0d 0a 23 20 78 2d 70 75 62 6c  :12:59..# x-publ
0110: 69 73 68 65 64 3a 20 32 30 31 31 2d 31 31 2d 32  ished: 2011-11-2
0120: 31 54 30 38 3a 33 34 3a 30 30 0d 0a 23 0d 0a 23  1T08:34:00..#..#
0130: 0d 0a 70 61 72 61 6d 20 28 0d 0a 20 20 20 20 5b  ..param (..    [
0140: 70 61 72 61 6d 65 74 65 72 28 70 6f 73 69 74 69  parameter(positi
0150: 6f 6e 3d 30 2c 0d 0a 20 20 20 20 20 20 20 20 56  on=0,..        V
0160: 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65  alueFromPipeline
0170: 20 3d 20 24 74 72 75 65 2c 0d 0a 20 20 20 20 20   = $true,..     
0180: 20 20 20 56 61 6c 75 65 46 72 6f 6d 50 69 70 65     ValueFromPipe
0190: 6c 69 6e 65 42 79 50 72 6f 70 65 72 74 79 4e 61  lineByPropertyNa
01a0: 6d 65 20 3d 20 24 74 72 75 65 29 5d 0d 0a 20 20  me = $true)]..  
01b0: 20 20 24 43 6f 6d 70 75 74 65 72 4e 61 6d 65 0d    $ComputerName.
01c0: 0a 29 0d 0a 0d 0a 42 65 67 69 6e 20 7b 0d 0a 09  .)....Begin {...
01d0: 24 61 6c 72 65 61 64 79 62 65 67 61 6e 20 3d 20  $alreadybegan = 
01e0: 24 66 61 6c 73 65 3b 0d 0a 09 0d 0a 20 20 20 20  $false;.....    
01f0: 66 75 6e 63 74 69 6f 6e 20 57 6d 69 44 61 74 65  function WmiDate
0200: 54 6f 44 6f 74 6e 65 74 20 7b 0d 0a 20 20 20 20  ToDotnet {..    
0210: 20 20 20 20 70 61 72 61 6d 28 24 64 61 74 65 29      param($date)
0220: 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20  ;..        ..   
0230: 20 20 20 20 20 69 66 28 24 64 61 74 65 2e 6c 65       if($date.le
0240: 6e 67 74 68 20 2d 6e 65 20 32 35 29 20 7b 0d 0a  ngth -ne 25) {..
0250: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
0260: 77 20 4e 65 77 2d 4f 62 6a 65 63 74 20 41 72 67  w New-Object Arg
0270: 75 6d 65 6e 74 4f 75 74 4f 66 52 61 6e 67 65 45  umentOutOfRangeE
0280: 78 63 65 70 74 69 6f 6e 3b 0d 0a 20 20 20 20 20  xception;..     
0290: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a     }..        ..
02a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e          return N
02b0: 65 77 2d 4f 62 6a 65 63 74 20 64 61 74 65 74 69  ew-Object dateti
02c0: 6d 65 20 40 28 28 5b 69 6e 74 5d 24 64 61 74 65  me @(([int]$date
02d0: 2e 73 75 62 73 74 72 69 6e 67 28 30 2c 34 29 29  .substring(0,4))
02e0: 2c 20 28 5b 69 6e 74 5d 24 64 61 74 65 2e 73 75  , ([int]$date.su
02f0: 62 73 74 72 69 6e 67 28 34 2c 32 29 29 2c 20 28  bstring(4,2)), (
0300: 5b 69 6e 74 5d 24 64 61 74 65 2e 73 75 62 73 74  [int]$date.subst
0310: 72 69 6e 67 28 36 2c 32 29 29 2c 20 28 5b 69 6e  ring(6,2)), ([in
0320: 74 5d 24 64 61 74 65 2e 73 75 62 73 74 72 69 6e  t]$date.substrin
0330: 67 28 38 2c 32 29 29 2c 20 28 5b 69 6e 74 5d 24  g(8,2)), ([int]$
0340: 64 61 74 65 2e 73 75 62 73 74 72 69 6e 67 28 31  date.substring(1
0350: 30 2c 32 29 29 2c 20 28 5b 69 6e 74 5d 24 64 61  0,2)), ([int]$da
0360: 74 65 2e 73 75 62 73 74 72 69 6e 67 28 31 32 2c  te.substring(12,
0370: 32 29 29 2c 20 28 5b 64 61 74 65 74 69 6d 65 6b  2)), ([datetimek
0380: 69 6e 64 5d 3a 3a 4c 6f 63 61 6c 29 29 0d 0a 20  ind]::Local)).. 
0390: 20 20 20 7d 0d 0a 20 20 20 20 0d 0a 20 20 20 20     }..    ..    
03a0: 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67  ..    function g
03b0: 65 74 44 61 74 61 20 7b 0d 0a 20 20 20 20 20 20  etData {..      
03c0: 20 20 70 61 72 61 6d 28 24 63 6e 29 3b 0d 0a 20    param($cn);.. 
03d0: 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20             ..   
03e0: 20 20 20 20 20 24 71 77 69 6e 73 74 61 5f 72 65       $qwinsta_re
03f0: 73 20 3d 20 71 77 69 6e 73 74 61 2e 70 73 31 20  s = qwinsta.ps1 
0400: 24 63 6e 0d 0a 20 20 20 20 20 20 20 20 24 70 72  $cn..        $pr
0410: 6f 63 65 73 73 65 73 20 3d 20 67 77 6d 69 20 2d  ocesses = gwmi -
0420: 43 6c 61 73 73 20 77 69 6e 33 32 5f 70 72 6f 63  Class win32_proc
0430: 65 73 73 20 2d 43 6f 6d 70 75 74 65 72 4e 61 6d  ess -ComputerNam
0440: 65 20 24 63 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  e $cn....       
0450: 20 24 6c 6f 67 6f 6e 75 69 73 20 3d 20 24 70 72   $logonuis = $pr
0460: 6f 63 65 73 73 65 73 20 7c 20 3f 7b 24 5f 2e 4e  ocesses | ?{$_.N
0470: 61 6d 65 20 2d 6d 61 74 63 68 20 22 6c 6f 67 6f  ame -match "logo
0480: 6e 75 69 22 7d 20 0d 0a 20 20 20 20 20 20 20 20  nui"} ..        
0490: 66 6f 72 28 24 69 20 3d 20 30 3b 20 24 69 20 2d  for($i = 0; $i -
04a0: 6c 74 20 24 6c 6f 67 6f 6e 75 69 73 2e 4c 65 6e  lt $logonuis.Len
04b0: 67 74 68 3b 20 24 69 2b 2b 29 20 7b 0d 0a 20 20  gth; $i++) {..  
04c0: 20 20 20 20 20 20 20 20 20 20 41 64 64 2d 4d 65            Add-Me
04d0: 6d 62 65 72 20 2d 46 6f 72 63 65 20 2d 69 6e 20  mber -Force -in 
04e0: 24 6c 6f 67 6f 6e 75 69 73 5b 24 69 5d 20 2d 4d  $logonuis[$i] -M
04f0: 65 6d 62 65 72 54 79 70 65 20 4e 6f 74 65 50 72  emberType NotePr
0500: 6f 70 65 72 74 79 20 2d 4e 61 6d 65 20 4f 77 6e  operty -Name Own
0510: 65 72 44 61 74 61 20 2d 56 61 6c 75 65 20 28 24  erData -Value ($
0520: 71 77 69 6e 73 74 61 5f 72 65 73 20 7c 20 3f 7b  qwinsta_res | ?{
0530: 24 5f 2e 49 44 20 2d 65 71 20 24 6c 6f 67 6f 6e  $_.ID -eq $logon
0540: 75 69 73 5b 24 69 5d 2e 53 65 73 73 69 6f 6e 49  uis[$i].SessionI
0550: 64 7d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d})..           
0560: 20 41 64 64 2d 4d 65 6d 62 65 72 20 2d 46 6f 72   Add-Member -For
0570: 63 65 20 2d 69 6e 20 24 6c 6f 67 6f 6e 75 69 73  ce -in $logonuis
0580: 5b 24 69 5d 20 2d 4d 65 6d 62 65 72 54 79 70 65  [$i] -MemberType
0590: 20 53 63 72 69 70 74 50 72 6f 70 65 72 74 79 20   ScriptProperty 
05a0: 2d 4e 61 6d 65 20 4f 77 6e 65 72 20 2d 56 61 6c  -Name Owner -Val
05b0: 75 65 20 7b 72 65 74 75 72 6e 20 24 74 68 69 73  ue {return $this
05c0: 2e 4f 77 6e 65 72 44 61 74 61 2e 55 73 65 72 4e  .OwnerData.UserN
05d0: 61 6d 65 3b 7d 0d 0a 20 20 20 20 20 20 20 20 20  ame;}..         
05e0: 20 20 20 41 64 64 2d 4d 65 6d 62 65 72 20 2d 46     Add-Member -F
05f0: 6f 72 63 65 20 2d 69 6e 20 24 6c 6f 67 6f 6e 75  orce -in $logonu
0600: 69 73 5b 24 69 5d 20 2d 4d 65 6d 62 65 72 54 79  is[$i] -MemberTy
0610: 70 65 20 4e 6f 74 65 50 72 6f 70 65 72 74 79 20  pe NoteProperty 
0620: 2d 4e 61 6d 65 20 4c 6f 63 6b 54 69 6d 65 20 2d  -Name LockTime -
0630: 56 61 6c 75 65 20 28 57 6d 69 44 61 74 65 54 6f  Value (WmiDateTo
0640: 44 6f 74 6e 65 74 20 24 6c 6f 67 6f 6e 75 69 73  Dotnet $logonuis
0650: 5b 24 69 5d 2e 63 72 65 61 74 69 6f 6e 64 61 74  [$i].creationdat
0660: 65 29 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e)..        }.. 
0670: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
0680: 20 24 6c 6f 67 6f 6e 75 69 73 0d 0a 20 20 20 20   $logonuis..    
0690: 7d 0d 0a 20 20 20 20 0d 0a 20 20 20 20 69 66 28  }..    ..    if(
06a0: 24 43 6f 6d 70 75 74 65 72 4e 61 6d 65 20 2d 6e  $ComputerName -n
06b0: 65 20 24 6e 75 6c 6c 29 20 7b 0d 0a 09 09 24 61  e $null) {....$a
06c0: 6c 72 65 61 64 79 62 65 67 61 6e 20 3d 20 24 74  lreadybegan = $t
06d0: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 67 65  rue;..        ge
06e0: 74 44 61 74 61 20 24 43 6f 6d 70 75 74 65 72 4e  tData $ComputerN
06f0: 61 6d 65 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a  ame;..    }..}..
0700: 0d 0a 50 72 6f 63 65 73 73 20 7b 0d 0a 09 69 66  ..Process {...if
0710: 28 24 61 6c 72 65 61 64 79 62 65 67 61 6e 20 2d  ($alreadybegan -
0720: 65 71 20 24 74 72 75 65 29 20 7b 20 63 6f 6e 74  eq $true) { cont
0730: 69 6e 75 65 3b 20 7d 0d 0a 09 0d 0a 20 20 20 20  inue; }.....    
0740: 69 66 28 24 5f 20 2d 65 71 20 24 6e 75 6c 6c 29  if($_ -eq $null)
0750: 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f   {..        thro
0760: 77 20 4e 65 77 2d 4f 62 6a 65 63 74 20 65 78 63  w New-Object exc
0770: 65 70 74 69 6f 6e 20 22 6e 6f 74 20 61 20 76 61  eption "not a va
0780: 6c 69 64 20 6f 62 6a 65 63 74 20 74 6f 20 67 65  lid object to ge
0790: 74 20 61 20 63 6f 6d 70 75 74 65 72 20 6e 61 6d  t a computer nam
07a0: 65 20 66 72 6f 6d 22 3b 0d 0a 20 20 20 20 7d 20  e from";..    } 
07b0: 65 6c 73 65 69 66 28 24 5f 2e 67 65 74 74 79 70  elseif($_.gettyp
07c0: 65 28 29 2e 65 71 75 61 6c 73 28 5b 73 74 72 69  e().equals([stri
07d0: 6e 67 5d 29 29 20 7b 0d 0a 20 20 20 20 20 20 20  ng])) {..       
07e0: 20 24 63 6e 20 3d 20 24 5f 3b 0d 0a 20 20 20 20   $cn = $_;..    
07f0: 7d 20 65 6c 73 65 69 66 28 24 5f 2e 63 6f 6d 70  } elseif($_.comp
0800: 75 74 65 72 6e 61 6d 65 20 2d 6e 65 20 24 6e 75  utername -ne $nu
0810: 6c 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 24  ll) {..        $
0820: 63 6e 20 3d 20 24 5f 2e 63 6f 6d 70 75 74 65 72  cn = $_.computer
0830: 6e 61 6d 65 0d 0a 20 20 20 20 7d 20 65 6c 73 65  name..    } else
0840: 69 66 28 24 5f 2e 6d 61 63 68 69 6e 65 6e 61 6d  if($_.machinenam
0850: 65 20 2d 6e 65 20 24 6e 75 6c 6c 29 20 7b 0d 0a  e -ne $null) {..
0860: 20 20 20 20 20 20 20 20 24 63 6e 20 3d 20 24 5f          $cn = $_
0870: 2e 6d 61 63 68 69 6e 65 6e 61 6d 65 0d 0a 20 20  .machinename..  
0880: 20 20 7d 20 65 6c 73 65 69 66 28 24 5f 2e 68 6f    } elseif($_.ho
0890: 73 74 6e 61 6d 65 20 2d 6e 65 20 24 6e 75 6c 6c  stname -ne $null
08a0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 24 63 6e  ) {..        $cn
08b0: 20 3d 20 24 5f 2e 68 6f 73 74 6e 61 6d 65 0d 0a   = $_.hostname..
08c0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
08d0: 20 20 20 20 20 20 74 68 72 6f 77 20 4e 65 77 2d        throw New-
08e0: 4f 62 6a 65 63 74 20 65 78 63 65 70 74 69 6f 6e  Object exception
08f0: 20 22 6e 6f 74 20 61 20 76 61 6c 69 64 20 6f 62   "not a valid ob
0900: 6a 65 63 74 20 74 6f 20 67 65 74 20 61 20 63 6f  ject to get a co
0910: 6d 70 75 74 65 72 20 6e 61 6d 65 20 66 72 6f 6d  mputer name from
0920: 22 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 0d  ";..    }..    .
0930: 0a 20 20 20 20 67 65 74 44 61 74 61 20 24 63 6e  .    getData $cn
0940: 3b 0d 0a 7d 0d 0a                                ;..}..