PoshCode Archive  Hex Artifact Content

Artifact 84110b816067df22c67da47df63075ecb2d792b56aac33bd7be14ea5b304c41a:

  • File where-property.ps1 — part of check-in [8f29baa863] at 2018-06-10 13:12:28 on branch trunk — different examples of how you can access properties with a custom where function (user: karl prosser size: 2174)

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 77  hell..# title: w
0030: 68 65 72 65 2d 70 72 6f 70 65 72 74 79 0d 0a 23  here-property..#
0040: 20 64 65 73 63 72 69 70 74 69 6f 6e 3a 20 64 69   description: di
0050: 66 66 65 72 65 6e 74 20 65 78 61 6d 70 6c 65 73  fferent examples
0060: 20 6f 66 20 68 6f 77 20 79 6f 75 20 63 61 6e 20   of how you can 
0070: 61 63 63 65 73 73 20 70 72 6f 70 65 72 74 69 65  access propertie
0080: 73 20 77 69 74 68 20 61 20 63 75 73 74 6f 6d 20  s with a custom 
0090: 77 68 65 72 65 20 66 75 6e 63 74 69 6f 6e 0d 0a  where function..
00a0: 23 20 76 65 72 73 69 6f 6e 3a 20 30 2e 31 0d 0a  # version: 0.1..
00b0: 23 20 74 79 70 65 3a 20 66 75 6e 63 74 69 6f 6e  # type: function
00c0: 0d 0a 23 20 61 75 74 68 6f 72 3a 20 6b 61 72 6c  ..# author: karl
00d0: 20 70 72 6f 73 73 65 72 0d 0a 23 20 6c 69 63 65   prosser..# lice
00e0: 6e 73 65 3a 20 43 43 30 0d 0a 23 20 66 75 6e 63  nse: CC0..# func
00f0: 74 69 6f 6e 3a 20 77 68 65 72 65 2d 70 72 6f 70  tion: where-prop
0100: 65 72 74 79 0d 0a 23 20 78 2d 70 6f 73 68 63 6f  erty..# x-poshco
0110: 64 65 2d 69 64 3a 20 32 35 37 30 0d 0a 23 20 78  de-id: 2570..# x
0120: 2d 61 72 63 68 69 76 65 64 3a 20 32 30 31 32 2d  -archived: 2012-
0130: 31 32 2d 32 39 54 30 34 3a 31 30 3a 34 38 0d 0a  12-29T04:10:48..
0140: 23 20 78 2d 70 75 62 6c 69 73 68 65 64 3a 20 32  # x-published: 2
0150: 30 31 32 2d 30 33 2d 31 38 54 31 32 3a 32 37 3a  012-03-18T12:27:
0160: 30 30 0d 0a 23 0d 0a 23 0d 0a 0d 0a 0d 0a 66 75  00..#..#......fu
0170: 6e 63 74 69 6f 6e 20 77 68 65 72 65 2d 70 72 6f  nction where-pro
0180: 70 65 72 74 79 28 5b 73 74 72 69 6e 67 5d 20 24  perty([string] $
0190: 50 72 6f 70 65 72 74 79 4e 61 6d 65 2c 5b 73 74  PropertyName,[st
01a0: 72 69 6e 67 5d 24 53 75 62 50 72 6f 70 65 72 74  ring]$SubPropert
01b0: 79 20 2c 20 24 69 73 2c 24 69 73 6e 6f 74 2c 24  y , $is,$isnot,$
01c0: 63 6f 6e 74 61 69 6e 73 2c 24 69 6e 29 20 20 0d  contains,$in)  .
01d0: 0a 7b 0d 0a 20 70 72 6f 63 65 73 73 20 7b 0d 0a  .{.. process {..
01e0: 20 20 20 20 69 66 20 28 24 69 73 29 20 0d 0a 20      if ($is) .. 
01f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
0200: 20 20 20 20 20 69 66 20 28 24 5f 2e 24 50 72 6f       if ($_.$Pro
0210: 70 65 72 74 79 6e 61 6d 65 20 2d 65 71 20 24 69  pertyname -eq $i
0220: 73 29 20 7b 20 2c 20 24 5f 20 7d 0d 0a 20 20 20  s) { , $_ }..   
0230: 20 20 20 20 20 7d 0d 0a 20 20 20 20 65 6c 73 65       }..    else
0240: 69 66 20 28 24 69 73 6e 6f 74 29 20 0d 0a 20 20  if ($isnot) ..  
0250: 20 20 20 20 20 20 7b 20 20 0d 0a 20 20 20 20 20        {  ..     
0260: 20 20 20 20 20 20 20 69 66 20 28 24 5f 2e 24 50         if ($_.$P
0270: 72 6f 70 65 72 74 79 6e 61 6d 65 20 2d 6e 65 20  ropertyname -ne 
0280: 24 69 73 29 20 7b 20 2c 20 24 5f 20 7d 20 0d 0a  $is) { , $_ } ..
0290: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 65          }..    e
02a0: 6c 73 65 69 66 28 24 63 6f 6e 74 61 69 6e 73 29  lseif($contains)
02b0: 0d 0a 20 20 20 20 20 20 20 20 7b 20 0d 0a 20 20  ..        { ..  
02c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
02d0: 20 28 24 73 75 62 70 72 6f 70 65 72 74 79 29 0d   ($subproperty).
02e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
02f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0300: 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
0310: 28 24 70 72 6f 70 20 69 6e 20 20 24 5f 2e 24 70  ($prop in  $_.$p
0320: 72 6f 70 65 72 74 79 6e 61 6d 65 20 29 0d 0a 20  ropertyname ).. 
0330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0340: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
0350: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
0360: 24 70 72 6f 70 29 0d 0a 20 20 20 20 20 20 20 20  $prop)..        
0370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
0380: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
0390: 20 20 20 20 20 20 20 20 20 20 20 24 73 75 62 70             $subp
03a0: 72 6f 70 65 72 74 79 76 61 6c 75 65 20 3d 20 24  ropertyvalue = $
03b0: 70 72 6f 70 2e 24 73 75 62 70 72 6f 70 65 72 74  prop.$subpropert
03c0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
03d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
03e0: 24 73 75 62 70 72 6f 70 65 72 74 79 76 61 6c 75  $subpropertyvalu
03f0: 65 20 2d 63 6f 6e 74 61 69 6e 73 20 24 63 6f 6e  e -contains $con
0400: 74 61 69 6e 73 20 29 20 7b 20 2c 20 24 5f 20 7d  tains ) { , $_ }
0410: 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ..             
0420: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
0430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0440: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
0450: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
0460: 20 20 20 20 20 20 20 65 6c 73 65 20 0d 0a 20 20         else ..  
0470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 20                { 
0480: 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ..             
0490: 20 20 20 20 20 20 20 69 66 20 28 24 5f 2e 24 50         if ($_.$P
04a0: 72 6f 70 65 72 74 79 6e 61 6d 65 20 2d 63 6f 6e  ropertyname -con
04b0: 74 61 69 6e 73 20 24 63 6f 6e 74 61 69 6e 73 29  tains $contains)
04c0: 20 7b 20 2c 20 24 5f 20 7d 20 20 20 20 20 20 20   { , $_ }       
04d0: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20       ..         
04e0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
04f0: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
0500: 7d 0d 0a 20 20 20 20 65 6c 73 65 69 66 28 24 69  }..    elseif($i
0510: 6e 29 0d 0a 20 20 20 20 20 20 20 20 7b 20 0d 0a  n)..        { ..
0520: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
0530: 24 69 6e 20 2d 63 6f 6e 74 61 69 6e 73 20 24 5f  $in -contains $_
0540: 2e 24 50 72 6f 70 65 72 74 79 6e 61 6d 65 29 20  .$Propertyname) 
0550: 7b 20 2c 20 24 5f 20 7d 0d 0a 20 20 20 20 20 20  { , $_ }..      
0560: 20 20 7d 20 20 20 20 0d 0a 20 20 20 20 20 0d 0a    }    ..     ..
0570: 20 20 20 20 0d 0a 20 7d 0d 0a 7d 0d 0a 23 73 65      .. }..}..#se
0580: 74 2d 61 6c 69 61 73 20 61 6e 64 2d 70 72 6f 70  t-alias and-prop
0590: 65 72 74 79 20 77 68 65 72 65 2d 70 72 6f 70 65  erty where-prope
05a0: 72 74 79 0d 0a 0d 0a 0d 0a 23 67 65 74 2d 70 72  rty......#get-pr
05b0: 6f 63 65 73 73 65 73 20 77 69 74 68 20 61 20 73  ocesses with a s
05c0: 70 65 63 69 66 69 63 20 6e 61 6d 65 0d 0a 67 70  pecific name..gp
05d0: 73 20 7c 20 77 68 65 72 65 2d 70 72 6f 70 65 72  s | where-proper
05e0: 74 79 20 70 72 6f 63 65 73 73 6e 61 6d 65 20 2d  ty processname -
05f0: 69 73 20 73 76 63 68 6f 73 74 0d 0a 23 67 65 74  is svchost..#get
0600: 2d 70 72 6f 63 65 73 73 65 73 20 61 6c 6c 20 62  -processes all b
0610: 75 74 20 61 20 73 70 65 63 69 66 69 63 20 6e 61  ut a specific na
0620: 6d 65 0d 0a 67 70 73 20 7c 20 77 68 65 72 65 2d  me..gps | where-
0630: 70 72 6f 70 65 72 74 79 20 70 72 6f 63 65 73 73  property process
0640: 6e 61 6d 65 20 2d 69 73 6e 6f 74 20 73 76 63 68  name -isnot svch
0650: 6f 73 74 0d 0a 23 67 65 74 2d 70 72 6f 63 65 73  ost..#get-proces
0660: 73 65 73 20 77 69 74 68 20 74 68 65 20 70 72 6f  ses with the pro
0670: 63 65 73 73 6e 61 6d 65 20 69 6e 20 61 20 73 70  cessname in a sp
0680: 65 63 69 66 69 63 20 6c 69 73 74 0d 0a 67 70 73  ecific list..gps
0690: 20 7c 20 77 68 65 72 65 2d 70 72 6f 70 65 72 74   | where-propert
06a0: 79 20 70 72 6f 63 65 73 73 6e 61 6d 65 20 2d 69  y processname -i
06b0: 6e 20 69 65 78 70 6c 6f 72 65 2c 63 68 72 6f 6d  n iexplore,chrom
06c0: 65 0d 0a 23 67 65 74 20 76 65 72 62 73 20 69 6e  e..#get verbs in
06d0: 20 61 20 73 70 65 63 69 66 69 63 20 67 72 6f 75   a specific grou
06e0: 70 0d 0a 67 65 74 2d 76 65 72 62 20 7c 20 77 68  p..get-verb | wh
06f0: 65 72 65 2d 70 72 6f 70 65 72 74 79 20 67 72 6f  ere-property gro
0700: 75 70 20 2d 69 6e 20 63 6f 6d 6d 6f 6e 0d 0a 0d  up -in common...
0710: 0a 0d 0a 23 67 65 74 2d 63 6f 6d 6d 61 6e 64 73  ...#get-commands
0720: 20 74 68 61 74 20 68 61 76 65 20 61 20 73 70 65   that have a spe
0730: 63 69 66 69 63 20 6e 61 6d 65 64 20 70 61 72 61  cific named para
0740: 6d 65 74 65 72 0d 0a 20 67 65 74 2d 63 6f 6d 6d  meter.. get-comm
0750: 61 6e 64 20 7c 20 77 68 65 72 65 2d 70 72 6f 70  and | where-prop
0760: 65 72 74 79 20 70 61 72 61 6d 65 74 65 72 73 20  erty parameters 
0770: 2d 73 75 62 70 72 6f 70 65 72 74 79 20 6b 65 79  -subproperty key
0780: 73 20 20 2d 63 6f 6e 74 61 69 6e 73 20 42 65 67  s  -contains Beg
0790: 69 6e 20 0d 0a 23 61 6e 64 20 75 73 69 6e 67 20  in ..#and using 
07a0: 61 6e 20 61 20 6c 69 61 73 20 74 6f 20 74 68 69  an a lias to thi
07b0: 73 20 66 6f 72 20 74 68 65 20 61 6e 64 20 73 69  s for the and si
07c0: 6e 63 65 20 69 74 20 73 65 65 6d 73 20 6d 6f 72  nce it seems mor
07d0: 65 20 48 55 4d 41 4e 20 74 6f 20 73 61 79 20 77  e HUMAN to say w
07e0: 68 65 72 65 20 58 20 61 6e 64 20 59 2c 20 72 61  here X and Y, ra
07f0: 74 68 65 72 20 74 68 61 6e 20 57 68 65 72 65 20  ther than Where 
0800: 78 20 77 68 65 72 65 20 79 20 0d 0a 20 67 65 74  x where y .. get
0810: 2d 63 6f 6d 6d 61 6e 64 20 7c 20 77 68 65 72 65  -command | where
0820: 2d 70 72 6f 70 65 72 74 79 20 70 61 72 61 6d 65  -property parame
0830: 74 65 72 73 20 2d 73 75 62 70 72 6f 70 65 72 74  ters -subpropert
0840: 79 20 6b 65 79 73 20 20 2d 63 6f 6e 74 61 69 6e  y keys  -contain
0850: 73 20 4e 61 6d 65 20 7c 20 20 61 6e 64 2d 70 72  s Name |  and-pr
0860: 6f 70 65 72 74 79 20 63 6f 6d 6d 61 6e 64 74 79  operty commandty
0870: 70 65 20 2d 69 73 20 61 6c 69 61 73 0d 0a        pe -is alias..