PoshCode Archive  Hex Artifact Content

Artifact bda5e5fde697ebd430d257e157396eec4e11883f6f0516a047372bcc9359771a:

  • File Scan-VB6-Code.ps1 — part of check-in [3b50c881b4] at 2018-06-10 14:27:38 on branch trunk — This functions work together to read the code of a Visual Basic Project into a PowerShell Object, which can be easyly scanned for patterns, returning filename, function/subroutine name und the matching line. Great tool you got unmaintained VB6 projects to understand for fixing or migrating (perhaps into PowerShell ;-)) (user: unknown size: 8479)

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 53  hell..# title: S
0030: 63 61 6e 20 56 42 36 20 43 6f 64 65 0d 0a 23 20  can VB6 Code..# 
0040: 64 65 73 63 72 69 70 74 69 6f 6e 3a 20 54 68 69  description: Thi
0050: 73 20 66 75 6e 63 74 69 6f 6e 73 20 77 6f 72 6b  s functions work
0060: 20 74 6f 67 65 74 68 65 72 20 74 6f 20 72 65 61   together to rea
0070: 64 20 74 68 65 20 63 6f 64 65 20 6f 66 20 61 20  d the code of a 
0080: 56 69 73 75 61 6c 20 42 61 73 69 63 20 50 72 6f  Visual Basic Pro
0090: 6a 65 63 74 20 69 6e 74 6f 20 61 20 50 6f 77 65  ject into a Powe
00a0: 72 53 68 65 6c 6c 20 4f 62 6a 65 63 74 2c 20 77  rShell Object, w
00b0: 68 69 63 68 20 63 61 6e 20 62 65 20 65 61 73 79  hich can be easy
00c0: 6c 79 20 73 63 61 6e 6e 65 64 20 66 6f 72 20 70  ly scanned for p
00d0: 61 74 74 65 72 6e 73 2c 20 72 65 74 75 72 6e 69  atterns, returni
00e0: 6e 67 20 66 69 6c 65 6e 61 6d 65 2c 20 66 75 6e  ng filename, fun
00f0: 63 74 69 6f 6e 2f 73 75 62 72 6f 75 74 69 6e 65  ction/subroutine
0100: 20 20 6e 61 6d 65 20 75 6e 64 20 74 68 65 20 6d    name und the m
0110: 61 74 63 68 69 6e 67 20 6c 69 6e 65 2e 20 47 72  atching line. Gr
0120: 65 61 74 20 74 6f 6f 6c 20 79 6f 75 20 67 6f 74  eat tool you got
0130: 20 75 6e 6d 61 69 6e 74 61 69 6e 65 64 20 56 42   unmaintained VB
0140: 36 20 70 72 6f 6a 65 63 74 73 20 74 6f 20 75 6e  6 projects to un
0150: 64 65 72 73 74 61 6e 64 20 66 6f 72 20 66 69 78  derstand for fix
0160: 69 6e 67 20 6f 72 20 6d 69 67 72 61 74 69 6e 67  ing or migrating
0170: 20 28 70 65 72 68 61 70 73 20 69 6e 74 6f 20 50   (perhaps into P
0180: 6f 77 65 72 53 68 65 6c 6c 20 3b 2d 29 29 0d 0a  owerShell ;-))..
0190: 23 20 76 65 72 73 69 6f 6e 3a 20 30 2e 31 0d 0a  # version: 0.1..
01a0: 23 20 74 79 70 65 3a 20 66 75 6e 63 74 69 6f 6e  # type: function
01b0: 0d 0a 23 20 6c 69 63 65 6e 73 65 3a 20 43 43 30  ..# license: CC0
01c0: 0d 0a 23 20 66 75 6e 63 74 69 6f 6e 3a 20 47 65  ..# function: Ge
01d0: 74 2d 56 42 50 72 6f 6a 65 63 74 0d 0a 23 20 78  t-VBProject..# x
01e0: 2d 70 6f 73 68 63 6f 64 65 2d 69 64 3a 20 39 37  -poshcode-id: 97
01f0: 30 0d 0a 23 20 78 2d 61 72 63 68 69 76 65 64 3a  0..# x-archived:
0200: 20 32 30 30 39 2d 30 33 2d 32 37 54 31 38 3a 30   2009-03-27T18:0
0210: 39 3a 34 37 0d 0a 23 0d 0a 23 20 46 6f 72 20 65  9:47..#..# For e
0220: 78 61 6d 70 6c 65 73 20 6c 6f 6f 6b 20 61 74 20  xamples look at 
0230: 74 68 65 20 63 6f 6d 6d 65 6e 74 73 20 61 74 20  the comments at 
0240: 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63  the end of the c
0250: 6f 64 65 2e 0d 0a 23 0d 0a 23 72 65 71 75 69 72  ode...#..#requir
0260: 65 73 20 2d 76 65 72 73 69 6f 6e 20 32 0d 0a 0d  es -version 2...
0270: 0a 23 20 73 6f 6d 65 20 50 6f 77 65 72 53 68 65  .# some PowerShe
0280: 6c 6c 20 46 75 6e 63 74 69 6f 6e 73 20 74 6f 20  ll Functions to 
0290: 73 63 61 6e 20 56 42 20 36 20 50 72 6f 6a 65 63  scan VB 6 Projec
02a0: 74 73 20 66 6f 72 20 70 61 74 74 65 72 6e 73 0d  ts for patterns.
02b0: 0a 23 20 65 2e 67 2e 20 73 6f 6d 65 20 53 51 4c  .# e.g. some SQL
02c0: 20 63 61 6c 6c 73 0d 0a 20 0d 0a 23 20 62 79 20   calls.. ..# by 
02d0: 42 65 72 6e 64 20 4b 72 69 73 7a 69 6f 20 68 74  Bernd Kriszio ht
02e0: 74 70 3a 2f 2f 70 61 75 65 72 73 63 68 65 6c 6c  tp://pauerschell
02f0: 2e 62 6c 6f 67 73 70 6f 74 2e 63 6f 6d 2f 0d 0a  .blogspot.com/..
0300: 0d 0a 66 75 6e 63 74 69 6f 6e 20 47 65 74 2d 56  ..function Get-V
0310: 42 50 72 6f 6a 65 63 74 20 28 24 66 69 6c 65 29  BProject ($file)
0320: 0d 0a 7b 0d 0a 20 20 20 20 23 20 74 68 69 73 20  ..{..    # this 
0330: 69 73 20 64 65 76 65 6c 6f 70 65 64 20 66 6f 72  is developed for
0340: 20 75 73 65 20 77 69 74 68 20 56 69 73 75 61 6c   use with Visual
0350: 20 42 61 73 69 63 20 36 0d 0a 20 20 20 20 23 20   Basic 6..    # 
0360: 74 6f 20 65 78 74 72 61 63 74 20 74 68 65 20 66  to extract the f
0370: 69 6c 65 73 20 74 68 65 20 63 6f 6e 74 61 69 6e  iles the contain
0380: 20 56 42 20 43 6f 64 65 0d 0a 20 20 20 20 70 75   VB Code..    pu
0390: 73 68 64 20 28 53 70 6c 69 74 2d 70 61 74 68 20  shd (Split-path 
03a0: 24 66 69 6c 65 29 0d 0a 20 20 20 20 66 6f 72 65  $file)..    fore
03b0: 61 63 68 20 28 24 6c 69 6e 65 20 69 6e 20 28 67  ach ($line in (g
03c0: 63 20 24 66 69 6c 65 29 29 0d 0a 20 20 20 20 7b  c $file))..    {
03d0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 6c  ..        if ($l
03e0: 69 6e 65 20 2d 6d 61 74 63 68 20 22 43 6c 61 73  ine -match "Clas
03f0: 73 3d 5c 53 2b 3b 5c 73 2b 28 5c 53 2b 2e 63 6c  s=\S+;\s+(\S+.cl
0400: 73 29 22 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  s)")..        {.
0410: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 69 20  .            gi 
0420: 24 6d 61 74 63 68 65 73 5b 31 5d 0d 0a 20 20 20  $matches[1]..   
0430: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
0440: 65 6c 73 65 69 66 20 28 24 6c 69 6e 65 20 2d 6d  elseif ($line -m
0450: 61 74 63 68 20 22 46 6f 72 6d 3d 28 5c 53 2b 2e  atch "Form=(\S+.
0460: 66 72 6d 29 22 29 0d 0a 20 20 20 20 20 20 20 20  frm)")..        
0470: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
0480: 69 20 24 6d 61 74 63 68 65 73 5b 31 5d 0d 0a 20  i $matches[1].. 
0490: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
04a0: 20 20 65 6c 73 65 69 66 20 28 24 6c 69 6e 65 20    elseif ($line 
04b0: 2d 6d 61 74 63 68 20 22 4d 6f 64 75 6c 65 3d 5c  -match "Module=\
04c0: 53 2b 3b 5c 73 2a 28 5c 53 2b 2e 42 41 53 29 22  S+;\s*(\S+.BAS)"
04d0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
04e0: 20 20 20 20 20 20 20 20 20 20 67 69 20 24 6d 61            gi $ma
04f0: 74 63 68 65 73 5b 31 5d 0d 0a 20 20 20 20 20 20  tches[1]..      
0500: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20    }..    }..    
0510: 70 6f 70 64 0d 0a 0d 0a 7d 0d 0a 0d 0a 66 75 6e  popd....}....fun
0520: 63 74 69 6f 6e 20 47 65 74 2d 56 42 4c 69 6e 65  ction Get-VBLine
0530: 73 20 28 24 66 69 6c 65 29 0d 0a 7b 0d 0a 20 20  s ($file)..{..  
0540: 20 20 23 20 56 42 20 36 20 75 73 65 73 20 5f 20    # VB 6 uses _ 
0550: 61 74 20 65 6e 64 20 6f 66 20 6c 69 6e 65 20 61  at end of line a
0560: 73 20 6c 69 6e 65 20 63 6f 6e 74 69 6e 75 61 74  s line continuat
0570: 69 6f 6e 20 63 68 61 72 61 63 74 65 72 0d 0a 20  ion character.. 
0580: 20 20 20 23 20 77 65 20 62 75 69 6c 64 20 6c 6f     # we build lo
0590: 67 69 63 61 6c 20 56 42 20 6c 69 6e 65 73 2c 20  gical VB lines, 
05a0: 65 73 70 65 63 69 61 6c 6c 79 20 74 6f 20 67 65  especially to ge
05b0: 74 20 63 6f 6d 70 6c 65 74 65 20 73 69 67 6e 61  t complete signa
05c0: 74 75 72 65 73 20 6f 66 20 66 75 6e 63 74 69 6f  tures of functio
05d0: 6e 73 20 61 6e 64 20 73 75 62 72 6f 75 74 69 6e  ns and subroutin
05e0: 65 73 0d 0a 20 20 20 20 24 6f 46 69 6c 65 20 3d  es..    $oFile =
05f0: 20 67 69 20 24 66 69 6c 65 0d 0a 20 20 20 20 24   gi $file..    $
0600: 53 6f 75 72 63 65 4c 69 6e 65 4e 75 6d 62 65 72  SourceLineNumber
0610: 20 3d 20 30 0d 0a 20 20 20 20 66 6f 72 65 61 63   = 0..    foreac
0620: 68 20 28 24 6c 69 6e 65 20 69 6e 20 28 67 63 20  h ($line in (gc 
0630: 24 66 69 6c 65 29 29 0d 0a 20 20 20 20 7b 0d 0a  $file))..    {..
0640: 20 20 20 20 20 20 20 20 24 53 6f 75 72 63 65 4c          $SourceL
0650: 69 6e 65 4e 75 6d 62 65 72 2b 2b 0d 0a 20 20 20  ineNumber++..   
0660: 20 20 20 20 20 69 66 20 28 24 63 6f 6e 74 69 6e       if ($contin
0670: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
0680: 20 20 20 20 20 20 20 20 20 20 20 20 24 62 75 66              $buf
0690: 66 65 72 20 2b 3d 20 22 60 72 60 6e 22 20 2b 20  fer += "`r`n" + 
06a0: 24 6c 69 6e 65 20 0d 0a 20 20 20 20 20 20 20 20  $line ..        
06b0: 20 20 20 20 69 66 20 28 24 6c 69 6e 65 20 2d 6e      if ($line -n
06c0: 6f 74 6d 61 74 63 68 20 27 5f 24 27 29 20 0d 0a  otmatch '_$') ..
06d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 0d 0a              { ..
06e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
06f0: 24 63 6f 6e 74 69 6e 75 65 20 3d 20 24 46 61 6c  $continue = $Fal
0700: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
0710: 20 20 20 20 24 6f 20 3d 20 4e 65 77 2d 4f 62 6a      $o = New-Obj
0720: 65 63 74 20 6f 62 6a 65 63 74 0d 0a 09 09 20 20  ect object....  
0730: 20 20 20 20 20 20 41 64 64 2d 4d 65 6d 62 65 72        Add-Member
0740: 20 2d 49 6e 70 75 74 4f 62 6a 65 63 74 20 24 6f   -InputObject $o
0750: 20 2d 4d 65 6d 62 65 72 54 79 70 65 20 4e 6f 74   -MemberType Not
0760: 65 50 72 6f 70 65 72 74 79 20 2d 4e 61 6d 65 20  eProperty -Name 
0770: 4c 69 6e 65 4e 75 6d 62 65 72 20 2d 56 61 6c 75  LineNumber -Valu
0780: 65 20 24 4c 69 6e 65 4e 75 6d 62 65 72 0d 0a 09  e $LineNumber...
0790: 09 20 20 20 20 20 20 20 20 41 64 64 2d 4d 65 6d  .        Add-Mem
07a0: 62 65 72 20 2d 49 6e 70 75 74 4f 62 6a 65 63 74  ber -InputObject
07b0: 20 24 6f 20 2d 4d 65 6d 62 65 72 54 79 70 65 20   $o -MemberType 
07c0: 4e 6f 74 65 50 72 6f 70 65 72 74 79 20 2d 4e 61  NoteProperty -Na
07d0: 6d 65 20 56 42 4c 69 6e 65 20 20 20 20 20 2d 56  me VBLine     -V
07e0: 61 6c 75 65 20 24 62 75 66 66 65 72 0d 0a 09 09  alue $buffer....
07f0: 20 20 20 20 20 20 20 20 41 64 64 2d 4d 65 6d 62          Add-Memb
0800: 65 72 20 2d 49 6e 70 75 74 4f 62 6a 65 63 74 20  er -InputObject 
0810: 24 6f 20 2d 4d 65 6d 62 65 72 54 79 70 65 20 4e  $o -MemberType N
0820: 6f 74 65 50 72 6f 70 65 72 74 79 20 2d 4e 61 6d  oteProperty -Nam
0830: 65 20 66 69 6c 65 20 20 20 20 20 20 20 2d 56 61  e file       -Va
0840: 6c 75 65 20 24 6f 46 69 6c 65 2e 4e 61 6d 65 0d  lue $oFile.Name.
0850: 0a 09 09 20 20 20 20 20 20 20 20 41 64 64 2d 4d  ...        Add-M
0860: 65 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62 6a 65  ember -InputObje
0870: 63 74 20 24 6f 20 2d 4d 65 6d 62 65 72 54 79 70  ct $o -MemberTyp
0880: 65 20 4e 6f 74 65 50 72 6f 70 65 72 74 79 20 2d  e NoteProperty -
0890: 4e 61 6d 65 20 66 69 6c 65 70 61 74 68 20 20 20  Name filepath   
08a0: 2d 56 61 6c 75 65 20 24 6f 46 69 6c 65 2e 46 75  -Value $oFile.Fu
08b0: 6c 6c 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  llName..        
08c0: 20 20 20 20 20 20 20 20 24 6f 0d 0a 20 20 20 20          $o..    
08d0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
08e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 65 6c     }..        el
08f0: 73 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  se..        {.. 
0900: 20 20 20 20 20 20 20 20 20 20 20 24 62 75 66 66             $buff
0910: 65 72 20 3d 20 24 6c 69 6e 65 20 0d 0a 20 20 20  er = $line ..   
0920: 20 20 20 20 20 20 20 20 20 24 4c 69 6e 65 4e 75           $LineNu
0930: 6d 62 65 72 20 3d 20 24 53 6f 75 72 63 65 4c 69  mber = $SourceLi
0940: 6e 65 4e 75 6d 62 65 72 20 0d 0a 20 20 20 20 20  neNumber ..     
0950: 20 20 20 20 20 20 20 69 66 20 28 24 6c 69 6e 65         if ($line
0960: 20 2d 6d 61 74 63 68 20 27 5f 24 27 29 20 0d 0a   -match '_$') ..
0970: 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 0d 0a              { ..
0980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0990: 24 63 6f 6e 74 69 6e 75 65 20 3d 20 24 54 72 75  $continue = $Tru
09a0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  e..            }
09b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c  ..            el
09c0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
09d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
09e0: 20 20 20 24 6f 20 3d 20 4e 65 77 2d 4f 62 6a 65     $o = New-Obje
09f0: 63 74 20 6f 62 6a 65 63 74 0d 0a 09 09 20 20 20  ct object....   
0a00: 20 20 20 20 20 41 64 64 2d 4d 65 6d 62 65 72 20       Add-Member 
0a10: 2d 49 6e 70 75 74 4f 62 6a 65 63 74 20 24 6f 20  -InputObject $o 
0a20: 2d 4d 65 6d 62 65 72 54 79 70 65 20 4e 6f 74 65  -MemberType Note
0a30: 50 72 6f 70 65 72 74 79 20 2d 4e 61 6d 65 20 4c  Property -Name L
0a40: 69 6e 65 4e 75 6d 62 65 72 20 2d 56 61 6c 75 65  ineNumber -Value
0a50: 20 24 4c 69 6e 65 4e 75 6d 62 65 72 0d 0a 09 09   $LineNumber....
0a60: 20 20 20 20 20 20 20 20 41 64 64 2d 4d 65 6d 62          Add-Memb
0a70: 65 72 20 2d 49 6e 70 75 74 4f 62 6a 65 63 74 20  er -InputObject 
0a80: 24 6f 20 2d 4d 65 6d 62 65 72 54 79 70 65 20 4e  $o -MemberType N
0a90: 6f 74 65 50 72 6f 70 65 72 74 79 20 2d 4e 61 6d  oteProperty -Nam
0aa0: 65 20 56 42 4c 69 6e 65 20 20 20 20 20 2d 56 61  e VBLine     -Va
0ab0: 6c 75 65 20 24 62 75 66 66 65 72 0d 0a 09 09 20  lue $buffer.... 
0ac0: 20 20 20 20 20 20 20 41 64 64 2d 4d 65 6d 62 65         Add-Membe
0ad0: 72 20 2d 49 6e 70 75 74 4f 62 6a 65 63 74 20 24  r -InputObject $
0ae0: 6f 20 2d 4d 65 6d 62 65 72 54 79 70 65 20 4e 6f  o -MemberType No
0af0: 74 65 50 72 6f 70 65 72 74 79 20 2d 4e 61 6d 65  teProperty -Name
0b00: 20 66 69 6c 65 20 20 20 20 20 20 20 2d 56 61 6c   file       -Val
0b10: 75 65 20 24 6f 46 69 6c 65 2e 4e 61 6d 65 0d 0a  ue $oFile.Name..
0b20: 09 09 20 20 20 20 20 20 20 20 41 64 64 2d 4d 65  ..        Add-Me
0b30: 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62 6a 65 63  mber -InputObjec
0b40: 74 20 24 6f 20 2d 4d 65 6d 62 65 72 54 79 70 65  t $o -MemberType
0b50: 20 4e 6f 74 65 50 72 6f 70 65 72 74 79 20 2d 4e   NoteProperty -N
0b60: 61 6d 65 20 66 69 6c 65 70 61 74 68 20 20 20 2d  ame filepath   -
0b70: 56 61 6c 75 65 20 24 6f 46 69 6c 65 2e 46 75 6c  Value $oFile.Ful
0b80: 6c 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  lName..         
0b90: 20 20 20 20 20 20 20 24 6f 0d 0a 20 20 20 20 20         $o..     
0ba0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
0bb0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20    }..        .. 
0bc0: 20 20 20 7d 0d 0a 7d 0d 0a 20 0d 0a 66 75 6e 63     }..}.. ..func
0bd0: 74 69 6f 6e 20 47 65 74 2d 56 42 5f 43 6f 64 65  tion Get-VB_Code
0be0: 4f 62 6a 65 63 74 20 28 29 0d 0a 7b 0d 0a 20 20  Object ()..{..  
0bf0: 20 20 70 61 72 61 6d 20 28 20 20 20 20 20 0d 0a    param (     ..
0c00: 20 20 20 20 20 20 20 20 5b 50 61 72 61 6d 65 74          [Paramet
0c10: 65 72 28 50 6f 73 69 74 69 6f 6e 20 3d 20 30 2c  er(Position = 0,
0c20: 20 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65   Mandatory=$true
0c30: 2c 20 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c  , ValueFromPipel
0c40: 69 6e 65 3d 24 54 72 75 65 29 5d 0d 0a 20 20 20  ine=$True)]..   
0c50: 20 20 20 20 20 24 66 69 6c 65 20 20 20 20 0d 0a       $file    ..
0c60: 20 20 20 20 29 20 20 20 20 20 0d 0a 20 20 20 20      )     ..    
0c70: 50 52 4f 43 45 53 53 0d 0a 20 20 20 20 7b 0d 0a  PROCESS..    {..
0c80: 20 20 20 20 20 20 20 20 24 69 6e 4f 62 6a 65 63          $inObjec
0c90: 74 20 3d 20 24 46 61 6c 73 65 0d 0a 20 20 20 20  t = $False..    
0ca0: 20 20 20 20 24 6c 69 6e 65 73 20 3d 20 40 28 29      $lines = @()
0cb0: 0d 0a 20 20 20 20 20 20 20 20 24 63 6f 6d 6d 65  ..        $comme
0cc0: 6e 74 73 20 3d 20 40 28 29 0d 0a 20 20 20 20 20  nts = @()..     
0cd0: 20 20 20 24 69 6e 44 65 63 6c 61 72 65 61 74 69     $inDeclareati
0ce0: 6f 6e 73 20 3d 20 24 54 72 75 65 0d 0a 20 20 20  ons = $True..   
0cf0: 20 20 20 20 20 23 77 72 69 74 65 2d 48 6f 73 74       #write-Host
0d00: 20 22 2d 2d 2d 20 24 66 69 6c 65 20 2d 2d 2d 2d   "--- $file ----
0d10: 22 0d 0a 20 20 20 20 20 20 20 20 47 65 74 2d 56  "..        Get-V
0d20: 42 4c 69 6e 65 73 20 24 66 69 6c 65 20 20 7c 20  BLines $file  | 
0d30: 25 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  %  {..          
0d40: 20 20 69 66 20 28 24 69 6e 4f 62 6a 65 63 74 29    if ($inObject)
0d50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
0d60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0d70: 20 69 66 20 28 24 5f 2e 56 42 4c 69 6e 65 20 2d   if ($_.VBLine -
0d80: 6d 61 74 63 68 20 22 5e 45 6e 64 20 24 65 6e 64  match "^End $end
0d90: 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ")..            
0da0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
0db0: 20 20 20 20 20 20 20 20 20 20 20 24 6c 69 6e 65             $line
0dc0: 73 20 2b 3d 20 24 5f 2e 56 42 4c 69 6e 65 0d 0a  s += $_.VBLine..
0dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0de0: 20 20 20 20 24 69 6e 4f 62 6a 65 63 74 20 3d 20      $inObject = 
0df0: 24 46 61 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  $False..        
0e00: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
0e10: 24 69 6e 44 65 63 6c 61 72 65 61 74 69 6f 6e 73  $inDeclareations
0e20: 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ){..            
0e30: 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 20 3d              $o =
0e40: 20 4e 65 77 2d 4f 62 6a 65 63 74 20 6f 62 6a 65   New-Object obje
0e50: 63 74 0d 0a 20 20 20 20 20 20 20 20 09 09 20 20  ct..        ..  
0e60: 20 20 20 20 20 20 41 64 64 2d 4d 65 6d 62 65 72        Add-Member
0e70: 20 2d 49 6e 70 75 74 4f 62 6a 65 63 74 20 24 6f   -InputObject $o
0e80: 20 2d 4d 65 6d 62 65 72 54 79 70 65 20 4e 6f 74   -MemberType Not
0e90: 65 50 72 6f 70 65 72 74 79 20 2d 4e 61 6d 65 20  eProperty -Name 
0ea0: 4c 69 6e 65 4e 75 6d 62 65 72 20 2d 56 61 6c 75  LineNumber -Valu
0eb0: 65 20 31 0d 0a 20 20 20 20 20 20 20 20 09 09 20  e 1..        .. 
0ec0: 20 20 20 20 20 20 20 41 64 64 2d 4d 65 6d 62 65         Add-Membe
0ed0: 72 20 2d 49 6e 70 75 74 4f 62 6a 65 63 74 20 24  r -InputObject $
0ee0: 6f 20 2d 4d 65 6d 62 65 72 54 79 70 65 20 4e 6f  o -MemberType No
0ef0: 74 65 50 72 6f 70 65 72 74 79 20 2d 4e 61 6d 65  teProperty -Name
0f00: 20 43 6f 64 65 20 20 20 20 20 20 20 2d 56 61 6c   Code       -Val
0f10: 75 65 20 24 63 6f 6d 6d 65 6e 74 73 0d 0a 20 20  ue $comments..  
0f20: 20 20 20 20 20 20 09 09 20 20 20 20 20 20 20 20        ..        
0f30: 41 64 64 2d 4d 65 6d 62 65 72 20 2d 49 6e 70 75  Add-Member -Inpu
0f40: 74 4f 62 6a 65 63 74 20 24 6f 20 2d 4d 65 6d 62  tObject $o -Memb
0f50: 65 72 54 79 70 65 20 4e 6f 74 65 50 72 6f 70 65  erType NotePrope
0f60: 72 74 79 20 2d 4e 61 6d 65 20 43 6f 6d 6d 65 6e  rty -Name Commen
0f70: 74 73 20 20 20 2d 56 61 6c 75 65 20 27 27 0d 0a  ts   -Value ''..
0f80: 0d 0a 20 20 20 20 20 20 20 20 09 09 20 20 20 20  ..        ..    
0f90: 20 20 20 20 41 64 64 2d 4d 65 6d 62 65 72 20 2d      Add-Member -
0fa0: 49 6e 70 75 74 4f 62 6a 65 63 74 20 24 6f 20 2d  InputObject $o -
0fb0: 4d 65 6d 62 65 72 54 79 70 65 20 4e 6f 74 65 50  MemberType NoteP
0fc0: 72 6f 70 65 72 74 79 20 2d 4e 61 6d 65 20 66 69  roperty -Name fi
0fd0: 6c 65 20 20 20 20 20 20 20 2d 56 61 6c 75 65 20  le       -Value 
0fe0: 24 5f 2e 66 69 6c 65 0d 0a 20 20 20 20 20 20 20  $_.file..       
0ff0: 20 09 09 20 20 20 20 20 20 20 20 41 64 64 2d 4d   ..        Add-M
1000: 65 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62 6a 65  ember -InputObje
1010: 63 74 20 24 6f 20 2d 4d 65 6d 62 65 72 54 79 70  ct $o -MemberTyp
1020: 65 20 4e 6f 74 65 50 72 6f 70 65 72 74 79 20 2d  e NoteProperty -
1030: 4e 61 6d 65 20 66 69 6c 65 70 61 74 68 20 20 20  Name filepath   
1040: 2d 56 61 6c 75 65 20 24 5f 2e 66 69 6c 65 70 61  -Value $_.filepa
1050: 74 68 0d 0a 0d 0a 20 20 20 20 20 20 20 20 09 09  th....        ..
1060: 20 20 20 20 20 20 20 20 41 64 64 2d 4d 65 6d 62          Add-Memb
1070: 65 72 20 2d 49 6e 70 75 74 4f 62 6a 65 63 74 20  er -InputObject 
1080: 24 6f 20 2d 4d 65 6d 62 65 72 54 79 70 65 20 4e  $o -MemberType N
1090: 6f 74 65 50 72 6f 70 65 72 74 79 20 2d 4e 61 6d  oteProperty -Nam
10a0: 65 20 61 63 63 65 73 20 20 20 20 20 20 2d 56 61  e acces      -Va
10b0: 6c 75 65 20 27 27 0d 0a 20 20 20 20 20 20 20 20  lue ''..        
10c0: 09 09 20 20 20 20 20 20 20 20 41 64 64 2d 4d 65  ..        Add-Me
10d0: 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62 6a 65 63  mber -InputObjec
10e0: 74 20 24 6f 20 2d 4d 65 6d 62 65 72 54 79 70 65  t $o -MemberType
10f0: 20 4e 6f 74 65 50 72 6f 70 65 72 74 79 20 2d 4e   NoteProperty -N
1100: 61 6d 65 20 74 79 70 20 20 20 20 20 20 20 20 2d  ame typ        -
1110: 56 61 6c 75 65 20 27 27 0d 0a 20 20 20 20 20 20  Value ''..      
1120: 20 20 09 09 20 20 20 20 20 20 20 20 41 64 64 2d    ..        Add-
1130: 4d 65 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62 6a  Member -InputObj
1140: 65 63 74 20 24 6f 20 2d 4d 65 6d 62 65 72 54 79  ect $o -MemberTy
1150: 70 65 20 4e 6f 74 65 50 72 6f 70 65 72 74 79 20  pe NoteProperty 
1160: 2d 4e 61 6d 65 20 6e 61 6d 65 20 20 20 20 20 20  -Name name      
1170: 20 2d 56 61 6c 75 65 20 27 44 65 63 6c 61 72 61   -Value 'Declara
1180: 74 69 6f 6e 73 27 0d 0a 20 20 20 20 20 20 20 20  tions'..        
1190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a0: 24 69 6e 44 65 63 6c 61 72 65 61 74 69 6f 6e 73  $inDeclareations
11b0: 20 3d 20 24 66 61 6c 73 65 0d 0a 20 20 20 20 20   = $false..     
11c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d0: 20 20 20 24 6f 0d 0a 20 20 20 20 20 20 20 20 20     $o..         
11e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24                 $
11f0: 63 6f 6d 6d 65 6e 74 73 20 3d 20 40 28 29 0d 0a  comments = @()..
1200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1210: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1220: 20 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 20               $o 
1230: 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 6f 62 6a  = New-Object obj
1240: 65 63 74 0d 0a 20 20 20 20 09 09 20 20 20 20 20  ect..    ..     
1250: 20 20 20 41 64 64 2d 4d 65 6d 62 65 72 20 2d 49     Add-Member -I
1260: 6e 70 75 74 4f 62 6a 65 63 74 20 24 6f 20 2d 4d  nputObject $o -M
1270: 65 6d 62 65 72 54 79 70 65 20 4e 6f 74 65 50 72  emberType NotePr
1280: 6f 70 65 72 74 79 20 2d 4e 61 6d 65 20 4c 69 6e  operty -Name Lin
1290: 65 4e 75 6d 62 65 72 20 2d 56 61 6c 75 65 20 24  eNumber -Value $
12a0: 4c 69 6e 65 4e 75 6d 62 65 72 0d 0a 20 20 20 20  LineNumber..    
12b0: 09 09 20 20 20 20 20 20 20 20 41 64 64 2d 4d 65  ..        Add-Me
12c0: 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62 6a 65 63  mber -InputObjec
12d0: 74 20 24 6f 20 2d 4d 65 6d 62 65 72 54 79 70 65  t $o -MemberType
12e0: 20 4e 6f 74 65 50 72 6f 70 65 72 74 79 20 2d 4e   NoteProperty -N
12f0: 61 6d 65 20 43 6f 64 65 20 20 20 20 20 20 20 2d  ame Code       -
1300: 56 61 6c 75 65 20 24 6c 69 6e 65 73 0d 0a 20 20  Value $lines..  
1310: 20 20 20 20 20 09 09 20 20 20 20 20 20 20 20 41       ..        A
1320: 64 64 2d 4d 65 6d 62 65 72 20 2d 49 6e 70 75 74  dd-Member -Input
1330: 4f 62 6a 65 63 74 20 24 6f 20 2d 4d 65 6d 62 65  Object $o -Membe
1340: 72 54 79 70 65 20 4e 6f 74 65 50 72 6f 70 65 72  rType NoteProper
1350: 74 79 20 2d 4e 61 6d 65 20 43 6f 6d 6d 65 6e 74  ty -Name Comment
1360: 73 20 20 20 2d 56 61 6c 75 65 20 24 63 6f 6d 6d  s   -Value $comm
1370: 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ents..          
1380: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20          ..      
1390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a                ..
13a0: 20 20 20 20 09 09 20 20 20 20 20 20 20 20 41 64      ..        Ad
13b0: 64 2d 4d 65 6d 62 65 72 20 2d 49 6e 70 75 74 4f  d-Member -InputO
13c0: 62 6a 65 63 74 20 24 6f 20 2d 4d 65 6d 62 65 72  bject $o -Member
13d0: 54 79 70 65 20 4e 6f 74 65 50 72 6f 70 65 72 74  Type NotePropert
13e0: 79 20 2d 4e 61 6d 65 20 66 69 6c 65 20 20 20 20  y -Name file    
13f0: 20 20 20 2d 56 61 6c 75 65 20 24 5f 2e 66 69 6c     -Value $_.fil
1400: 65 0d 0a 20 20 20 20 09 09 20 20 20 20 20 20 20  e..    ..       
1410: 20 41 64 64 2d 4d 65 6d 62 65 72 20 2d 49 6e 70   Add-Member -Inp
1420: 75 74 4f 62 6a 65 63 74 20 24 6f 20 2d 4d 65 6d  utObject $o -Mem
1430: 62 65 72 54 79 70 65 20 4e 6f 74 65 50 72 6f 70  berType NoteProp
1440: 65 72 74 79 20 2d 4e 61 6d 65 20 66 69 6c 65 70  erty -Name filep
1450: 61 74 68 20 20 20 2d 56 61 6c 75 65 20 24 5f 2e  ath   -Value $_.
1460: 66 69 6c 65 70 61 74 68 0d 0a 0d 0a 20 20 20 20  filepath....    
1470: 09 09 20 20 20 20 20 20 20 20 41 64 64 2d 4d 65  ..        Add-Me
1480: 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62 6a 65 63  mber -InputObjec
1490: 74 20 24 6f 20 2d 4d 65 6d 62 65 72 54 79 70 65  t $o -MemberType
14a0: 20 4e 6f 74 65 50 72 6f 70 65 72 74 79 20 2d 4e   NoteProperty -N
14b0: 61 6d 65 20 61 63 63 65 73 20 20 20 20 20 20 2d  ame acces      -
14c0: 56 61 6c 75 65 20 24 61 63 63 65 73 0d 0a 20 20  Value $acces..  
14d0: 20 20 09 09 20 20 20 20 20 20 20 20 41 64 64 2d    ..        Add-
14e0: 4d 65 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62 6a  Member -InputObj
14f0: 65 63 74 20 24 6f 20 2d 4d 65 6d 62 65 72 54 79  ect $o -MemberTy
1500: 70 65 20 4e 6f 74 65 50 72 6f 70 65 72 74 79 20  pe NoteProperty 
1510: 2d 4e 61 6d 65 20 74 79 70 20 20 20 20 20 20 20  -Name typ       
1520: 20 2d 56 61 6c 75 65 20 24 74 79 70 0d 0a 20 20   -Value $typ..  
1530: 20 20 09 09 20 20 20 20 20 20 20 20 41 64 64 2d    ..        Add-
1540: 4d 65 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62 6a  Member -InputObj
1550: 65 63 74 20 24 6f 20 2d 4d 65 6d 62 65 72 54 79  ect $o -MemberTy
1560: 70 65 20 4e 6f 74 65 50 72 6f 70 65 72 74 79 20  pe NoteProperty 
1570: 2d 4e 61 6d 65 20 6e 61 6d 65 20 20 20 20 20 20  -Name name      
1580: 20 2d 56 61 6c 75 65 20 24 6e 61 6d 65 0d 0a 20   -Value $name.. 
1590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a0: 20 20 20 24 6f 0d 0a 20 20 20 20 20 20 20 20 20     $o..         
15b0: 20 20 20 20 20 20 20 20 20 20 20 24 6c 69 6e 65             $line
15c0: 73 20 3d 20 40 28 29 0d 0a 20 20 20 20 20 20 20  s = @()..       
15d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
15e0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
15f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1600: 20 20 7b 20 23 20 63 6f 6c 6c 65 63 74 20 6c 69    { # collect li
1610: 6e 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nes..           
1620: 20 20 20 20 20 20 20 20 20 24 6c 69 6e 65 73 20           $lines 
1630: 2b 3d 20 24 5f 2e 56 42 4c 69 6e 65 0d 0a 20 20  += $_.VBLine..  
1640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1660: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
1670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 20  ..            { 
1680: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20      ..          
1690: 20 20 20 20 20 20 69 66 20 28 24 5f 2e 56 42 4c        if ($_.VBL
16a0: 69 6e 65 20 2d 6d 61 74 63 68 20 22 5e 28 50 75  ine -match "^(Pu
16b0: 62 6c 69 63 7c 50 72 69 76 61 74 65 29 3f 5c 73  blic|Private)?\s
16c0: 2a 50 72 6f 70 65 72 74 79 5c 73 2b 28 47 65 74  *Property\s+(Get
16d0: 7c 53 65 74 29 5c 73 2b 28 5b 5e 5c 73 5c 28 5d  |Set)\s+([^\s\(]
16e0: 2b 29 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20  +)")..          
16f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1700: 20 20 20 20 20 20 20 20 20 20 20 20 20 24 61 63               $ac
1710: 63 65 73 20 3d 20 24 6d 61 74 63 68 65 73 5b 31  ces = $matches[1
1720: 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ]..             
1730: 20 20 20 20 20 20 20 24 74 79 70 20 3d 20 27 50         $typ = 'P
1740: 72 6f 70 65 72 74 79 20 27 20 2b 20 24 6d 61 74  roperty ' + $mat
1750: 63 68 65 73 5b 32 5d 0d 0a 20 20 20 20 20 20 20  ches[2]..       
1760: 20 20 20 20 20 20 20 20 20 20 20 20 20 24 6e 61               $na
1770: 6d 65 20 3d 20 24 6d 61 74 63 68 65 73 5b 33 5d  me = $matches[3]
1780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1790: 20 20 20 20 20 20 24 65 6e 64 20 3d 20 20 27 50        $end =  'P
17a0: 72 6f 70 65 72 74 79 27 0d 0a 20 20 20 20 20 20  roperty'..      
17b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 69                $i
17c0: 6e 4f 62 6a 65 63 74 20 3d 20 24 54 72 75 65 0d  nObject = $True.
17d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17e0: 20 20 20 20 20 23 24 61 63 63 65 73 20 2b 20 22       #$acces + "
17f0: 20 22 20 2b 20 20 24 74 79 70 20 2b 20 22 20 22   " +  $typ + " "
1800: 20 2b 20 24 6e 61 6d 65 0d 0a 20 20 20 20 20 20   + $name..      
1810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 63                $c
1820: 6f 6d 6d 65 6e 74 73 20 3d 20 24 6c 69 6e 65 73  omments = $lines
1830: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1840: 20 20 20 20 20 20 24 6c 69 6e 65 73 20 3d 20 28        $lines = (
1850: 2c 20 24 5f 2e 56 42 4c 69 6e 65 29 0d 0a 20 20  , $_.VBLine)..  
1860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1870: 20 20 24 4c 69 6e 65 4e 75 6d 62 65 72 20 3d 20    $LineNumber = 
1880: 24 5f 2e 4c 69 6e 65 4e 75 6d 62 65 72 0d 0a 20  $_.LineNumber.. 
1890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18a0: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20     ..           
18b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
18c0: 20 20 20 20 20 20 20 20 65 6c 73 65 69 66 20 28          elseif (
18d0: 24 5f 2e 56 42 4c 69 6e 65 20 2d 6d 61 74 63 68  $_.VBLine -match
18e0: 20 22 5e 28 50 75 62 6c 69 63 7c 50 72 69 76 61   "^(Public|Priva
18f0: 74 65 29 3f 5c 73 2a 28 46 75 6e 63 74 69 6f 6e  te)?\s*(Function
1900: 7c 53 75 62 29 5c 73 2b 28 5b 5e 5c 73 5c 28 5d  |Sub)\s+([^\s\(]
1910: 2b 29 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20  +)")..          
1920: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1930: 20 20 20 20 20 20 20 20 20 20 20 20 20 24 61 63               $ac
1940: 63 65 73 20 3d 20 24 6d 61 74 63 68 65 73 5b 31  ces = $matches[1
1950: 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ]..             
1960: 20 20 20 20 20 20 20 24 74 79 70 20 3d 20 24 6d         $typ = $m
1970: 61 74 63 68 65 73 5b 32 5d 0d 0a 20 20 20 20 20  atches[2]..     
1980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24                 $
1990: 6e 61 6d 65 20 3d 20 24 6d 61 74 63 68 65 73 5b  name = $matches[
19a0: 33 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  3]..            
19b0: 20 20 20 20 20 20 20 20 24 65 6e 64 20 3d 20 24          $end = $
19c0: 6d 61 74 63 68 65 73 5b 32 5d 0d 0a 20 20 20 20  matches[2]..    
19d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19e0: 24 69 6e 4f 62 6a 65 63 74 20 3d 20 24 54 72 75  $inObject = $Tru
19f0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1a00: 20 20 20 20 20 20 20 23 24 61 63 63 65 73 20 2b         #$acces +
1a10: 20 22 20 22 20 2b 20 20 24 74 79 70 20 2b 20 22   " " +  $typ + "
1a20: 20 22 20 2b 20 24 6e 61 6d 65 0d 0a 20 20 20 20   " + $name..    
1a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a40: 24 63 6f 6d 6d 65 6e 74 73 20 3d 20 24 6c 69 6e  $comments = $lin
1a50: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
1a60: 20 20 20 20 20 20 20 20 24 6c 69 6e 65 73 20 3d          $lines =
1a70: 20 28 2c 20 24 5f 2e 56 42 4c 69 6e 65 29 0d 0a   (, $_.VBLine)..
1a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a90: 20 20 20 20 24 4c 69 6e 65 4e 75 6d 62 65 72 20      $LineNumber 
1aa0: 3d 20 24 5f 2e 4c 69 6e 65 4e 75 6d 62 65 72 0d  = $_.LineNumber.
1ab0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ac0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1ad0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
1ae0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b00: 20 24 6c 69 6e 65 73 20 2b 3d 20 24 5f 2e 56 42   $lines += $_.VB
1b10: 4c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Line..          
1b20: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1b30: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1b40: 7d 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a 0d  }..    }..}.....
1b50: 0a 66 69 6c 74 65 72 20 53 65 6c 65 63 74 2d 56  .filter Select-V
1b60: 42 43 6f 64 65 5f 53 74 72 69 6e 67 20 28 24 70  BCode_String ($p
1b70: 61 74 74 65 72 6e 29 0d 0a 7b 0d 0a 20 20 20 20  attern)..{..    
1b80: 24 6f 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20  $o = New-Object 
1b90: 6f 62 6a 65 63 74 0d 0a 20 20 20 20 41 64 64 2d  object..    Add-
1ba0: 4d 65 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62 6a  Member -InputObj
1bb0: 65 63 74 20 24 6f 20 2d 4d 65 6d 62 65 72 54 79  ect $o -MemberTy
1bc0: 70 65 20 4e 6f 74 65 50 72 6f 70 65 72 74 79 20  pe NoteProperty 
1bd0: 2d 4e 61 6d 65 20 4c 69 6e 65 4e 75 6d 62 65 72  -Name LineNumber
1be0: 20 2d 56 61 6c 75 65 20 24 5f 2e 4c 69 6e 65 4e   -Value $_.LineN
1bf0: 75 6d 62 65 72 0d 0a 20 20 20 09 41 64 64 2d 4d  umber..   .Add-M
1c00: 65 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62 6a 65  ember -InputObje
1c10: 63 74 20 24 6f 20 2d 4d 65 6d 62 65 72 54 79 70  ct $o -MemberTyp
1c20: 65 20 4e 6f 74 65 50 72 6f 70 65 72 74 79 20 2d  e NoteProperty -
1c30: 4e 61 6d 65 20 43 6f 6d 6d 65 6e 74 73 20 20 20  Name Comments   
1c40: 2d 56 61 6c 75 65 20 24 5f 2e 63 6f 6d 6d 65 6e  -Value $_.commen
1c50: 74 73 0d 0a 20 20 20 20 0d 0a 20 20 20 20 41 64  ts..    ..    Ad
1c60: 64 2d 4d 65 6d 62 65 72 20 2d 49 6e 70 75 74 4f  d-Member -InputO
1c70: 62 6a 65 63 74 20 24 6f 20 2d 4d 65 6d 62 65 72  bject $o -Member
1c80: 54 79 70 65 20 4e 6f 74 65 50 72 6f 70 65 72 74  Type NotePropert
1c90: 79 20 2d 4e 61 6d 65 20 66 69 6c 65 20 20 20 20  y -Name file    
1ca0: 20 20 20 2d 56 61 6c 75 65 20 24 5f 2e 66 69 6c     -Value $_.fil
1cb0: 65 0d 0a 20 20 20 20 41 64 64 2d 4d 65 6d 62 65  e..    Add-Membe
1cc0: 72 20 2d 49 6e 70 75 74 4f 62 6a 65 63 74 20 24  r -InputObject $
1cd0: 6f 20 2d 4d 65 6d 62 65 72 54 79 70 65 20 4e 6f  o -MemberType No
1ce0: 74 65 50 72 6f 70 65 72 74 79 20 2d 4e 61 6d 65  teProperty -Name
1cf0: 20 66 69 6c 65 70 61 74 68 20 20 20 2d 56 61 6c   filepath   -Val
1d00: 75 65 20 24 5f 2e 66 69 6c 65 70 61 74 68 0d 0a  ue $_.filepath..
1d10: 0d 0a 09 41 64 64 2d 4d 65 6d 62 65 72 20 2d 49  ...Add-Member -I
1d20: 6e 70 75 74 4f 62 6a 65 63 74 20 24 6f 20 2d 4d  nputObject $o -M
1d30: 65 6d 62 65 72 54 79 70 65 20 4e 6f 74 65 50 72  emberType NotePr
1d40: 6f 70 65 72 74 79 20 2d 4e 61 6d 65 20 61 63 63  operty -Name acc
1d50: 65 73 20 20 20 20 20 20 2d 56 61 6c 75 65 20 24  es      -Value $
1d60: 5f 2e 61 63 63 65 73 0d 0a 20 20 20 20 41 64 64  _.acces..    Add
1d70: 2d 4d 65 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62  -Member -InputOb
1d80: 6a 65 63 74 20 24 6f 20 2d 4d 65 6d 62 65 72 54  ject $o -MemberT
1d90: 79 70 65 20 4e 6f 74 65 50 72 6f 70 65 72 74 79  ype NoteProperty
1da0: 20 2d 4e 61 6d 65 20 74 79 70 20 20 20 20 20 20   -Name typ      
1db0: 20 20 2d 56 61 6c 75 65 20 24 5f 2e 74 79 70 0d    -Value $_.typ.
1dc0: 0a 09 41 64 64 2d 4d 65 6d 62 65 72 20 2d 49 6e  ..Add-Member -In
1dd0: 70 75 74 4f 62 6a 65 63 74 20 24 6f 20 2d 4d 65  putObject $o -Me
1de0: 6d 62 65 72 54 79 70 65 20 4e 6f 74 65 50 72 6f  mberType NotePro
1df0: 70 65 72 74 79 20 2d 4e 61 6d 65 20 6e 61 6d 65  perty -Name name
1e00: 20 20 20 20 20 20 20 2d 56 61 6c 75 65 20 24 5f         -Value $_
1e10: 2e 6e 61 6d 65 0d 0a 0d 0a 20 20 20 20 24 70 61  .name....    $pa
1e20: 74 74 65 72 6e 46 6f 75 6e 64 20 3d 20 24 46 61  tternFound = $Fa
1e30: 6c 73 65 0d 0a 20 20 20 20 24 6c 69 6e 65 73 20  lse..    $lines 
1e40: 3d 20 40 28 29 20 0d 0a 20 20 20 20 66 6f 72 65  = @() ..    fore
1e50: 61 63 68 20 28 24 6c 20 69 6e 20 24 5f 2e 43 6f  ach ($l in $_.Co
1e60: 64 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  de)..    {..    
1e70: 20 20 20 20 69 66 20 28 24 6c 20 2d 6d 61 74 63      if ($l -matc
1e80: 68 20 24 70 61 74 74 65 72 6e 29 0d 0a 20 20 20  h $pattern)..   
1e90: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1ea0: 20 20 20 20 24 6c 69 6e 65 73 20 2b 3d 20 24 6c      $lines += $l
1eb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 70  ..            $p
1ec0: 61 74 74 65 72 6e 46 6f 75 6e 64 20 3d 20 24 54  atternFound = $T
1ed0: 72 75 65 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  rue..        }..
1ee0: 20 20 20 20 7d 0d 0a 20 20 20 20 69 66 20 28 20      }..    if ( 
1ef0: 24 70 61 74 74 65 72 6e 46 6f 75 6e 64 29 0d 0a  $patternFound)..
1f00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 41      {..        A
1f10: 64 64 2d 4d 65 6d 62 65 72 20 2d 49 6e 70 75 74  dd-Member -Input
1f20: 4f 62 6a 65 63 74 20 24 6f 20 2d 4d 65 6d 62 65  Object $o -Membe
1f30: 72 54 79 70 65 20 4e 6f 74 65 50 72 6f 70 65 72  rType NoteProper
1f40: 74 79 20 2d 4e 61 6d 65 20 43 6f 64 65 20 20 20  ty -Name Code   
1f50: 20 20 20 20 2d 56 61 6c 75 65 20 24 6c 69 6e 65      -Value $line
1f60: 73 0d 0a 20 20 20 20 20 20 20 20 24 6f 0d 0a 20  s..        $o.. 
1f70: 20 20 20 7d 0d 0a 0d 0a 7d 0d 0a 0d 0a 0d 0a 3c     }....}......<
1f80: 23 0d 0a 20 20 20 20 24 6d 79 56 42 50 72 6f 6a  #..    $myVBProj
1f90: 65 63 74 20 3d 20 27 6d 79 44 69 72 74 79 56 62  ect = 'myDirtyVb
1fa0: 36 50 72 6f 6a 65 63 74 2e 76 62 70 27 0d 0a 20  6Project.vbp'.. 
1fb0: 20 20 20 0d 0a 20 20 20 20 0d 0a 20 20 20 20 24     ..    ..    $
1fc0: 76 62 70 20 3d 20 47 65 74 2d 56 42 50 72 6f 6a  vbp = Get-VBProj
1fd0: 65 63 74 20 24 6d 79 56 42 50 72 6f 6a 65 63 74  ect $myVBProject
1fe0: 20 7c 20 47 65 74 2d 56 42 5f 43 6f 64 65 4f 62   | Get-VB_CodeOb
1ff0: 6a 65 63 74 20 0d 0a 0d 0a 20 20 20 20 23 20 4e  ject ....    # N
2000: 6f 77 20 79 6f 75 20 73 65 61 72 63 68 20 79 6f  ow you search yo
2010: 75 72 20 56 42 20 50 72 6f 6a 65 63 74 20 66 6f  ur VB Project fo
2020: 72 20 70 61 74 74 65 72 6e 73 0d 0a 20 20 20 20  r patterns..    
2030: 0d 0a 20 20 20 20 23 20 6c 6f 6f 6b 20 66 6f 72  ..    # look for
2040: 20 73 71 6c 20 53 45 4c 45 43 54 2d 53 74 61 74   sql SELECT-Stat
2050: 65 6d 65 6e 74 73 0d 0a 20 20 20 20 24 76 62 70  ements..    $vbp
2060: 20 7c 20 53 65 6c 65 63 74 2d 56 42 43 6f 64 65   | Select-VBCode
2070: 5f 53 74 72 69 6e 67 28 27 22 73 65 6c 65 63 74  _String('"select
2080: 27 29 20 7c 25 20 7b 20 24 5f 2e 63 6f 64 65 20  ') |% { $_.code 
2090: 7d 0d 0a 0d 0a 20 20 20 20 23 20 6f 72 20 74 68  }....    # or th
20a0: 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 56 62  e location of Vb
20b0: 20 45 58 49 54 20 53 74 61 74 6d 65 6e 74 73 0d   EXIT Statments.
20c0: 0a 20 20 20 20 24 76 62 70 7c 20 53 65 6c 65 63  .    $vbp| Selec
20d0: 74 2d 56 42 43 6f 64 65 5f 53 74 72 69 6e 67 28  t-VBCode_String(
20e0: 27 45 58 49 54 27 29 20 7c 20 66 6c 0d 0a 0d 0a  'EXIT') | fl....
20f0: 20 20 20 20 24 76 62 70 7c 20 73 65 6c 65 63 74      $vbp| select
2100: 20 66 69 6c 65 2c 20 61 63 63 65 73 2c 20 74 79   file, acces, ty
2110: 70 2c 20 6e 61 6d 65 0d 0a 0d 0a 23 3e 0d 0a     p, name....#>..