PoshCode Archive  Hex Artifact Content

Artifact 63346d51602460fbb0f935fb3e4533ef88d0cdda71f03823e4a1e3c3e97ed5b4:

  • File TabExpansion-for-V2CTP3.ps1 — part of check-in [c0b9442171] at 2018-06-10 14:26:35 on branch trunk — Ported TabExpansion from V2CTP2 to V2CTP3 and extended. Please dot souce this script file to use. (user: foobar size: 64466)

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 54  hell..# title: T
0030: 61 62 45 78 70 61 6e 73 69 6f 6e 20 66 6f 72 20  abExpansion for 
0040: 56 32 43 54 50 33 0d 0a 23 20 64 65 73 63 72 69  V2CTP3..# descri
0050: 70 74 69 6f 6e 3a 20 50 6f 72 74 65 64 20 54 61  ption: Ported Ta
0060: 62 45 78 70 61 6e 73 69 6f 6e 20 66 72 6f 6d 20  bExpansion from 
0070: 56 32 43 54 50 32 20 74 6f 20 56 32 43 54 50 33  V2CTP2 to V2CTP3
0080: 20 61 6e 64 20 65 78 74 65 6e 64 65 64 2e 20 50   and extended. P
0090: 6c 65 61 73 65 20 64 6f 74 20 73 6f 75 63 65 20  lease dot souce 
00a0: 74 68 69 73 20 73 63 72 69 70 74 20 66 69 6c 65  this script file
00b0: 20 74 6f 20 75 73 65 2e 0d 0a 23 20 76 65 72 73   to use...# vers
00c0: 69 6f 6e 3a 20 30 2e 31 0d 0a 23 20 74 79 70 65  ion: 0.1..# type
00d0: 3a 20 73 63 72 69 70 74 0d 0a 23 20 61 75 74 68  : script..# auth
00e0: 6f 72 3a 20 66 6f 6f 62 61 72 0d 0a 23 20 6c 69  or: foobar..# li
00f0: 63 65 6e 73 65 3a 20 43 43 30 0d 0a 23 20 66 75  cense: CC0..# fu
0100: 6e 63 74 69 6f 6e 3a 20 57 72 69 74 65 2d 43 6c  nction: Write-Cl
0110: 61 73 73 4e 61 6d 65 73 0d 0a 23 20 78 2d 70 6f  assNames..# x-po
0120: 73 68 63 6f 64 65 2d 69 64 3a 20 39 31 33 0d 0a  shcode-id: 913..
0130: 23 20 78 2d 61 72 63 68 69 76 65 64 3a 20 32 30  # x-archived: 20
0140: 30 39 2d 30 33 2d 31 31 54 30 34 3a 32 33 3a 31  09-03-11T04:23:1
0150: 34 0d 0a 23 0d 0a 23 0d 0a 23 23 20 54 61 62 2d  4..#..#..## Tab-
0160: 43 6f 6d 70 6c 65 74 69 6f 6e 0d 0a 23 23 23 23  Completion..####
0170: 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 23  #############..#
0180: 23 20 46 6f 72 20 56 32 43 54 50 33 2e 0d 0a 23  # For V2CTP3...#
0190: 23 20 54 68 69 73 20 77 6f 6e 27 74 20 77 6f 72  # This won't wor
01a0: 6b 20 6f 6e 20 56 31 20 61 6e 64 20 56 32 43 54  k on V1 and V2CT
01b0: 50 20 61 6e 64 20 56 32 43 54 50 32 2e 0d 0a 23  P and V2CTP2...#
01c0: 23 20 50 6c 65 61 73 65 20 64 6f 74 20 73 6f 75  # Please dot sou
01d0: 63 65 20 74 68 69 73 20 73 63 72 69 70 74 20 66  ce this script f
01e0: 69 6c 65 2e 0d 0a 23 23 20 49 6e 20 66 69 72 73  ile...## In firs
01f0: 74 20 6c 6f 61 64 69 6e 67 2c 20 69 74 20 6d 61  t loading, it ma
0200: 79 20 74 61 6b 65 20 61 20 73 65 76 65 72 61 6c  y take a several
0210: 20 6d 69 6e 75 74 65 73 2c 20 69 6e 20 6f 72 64   minutes, in ord
0220: 65 72 20 74 6f 20 67 65 6e 65 72 61 74 65 20 50  er to generate P
0230: 72 6f 67 49 44 73 20 61 6e 64 20 54 79 70 65 4e  rogIDs and TypeN
0240: 61 6d 65 73 20 6c 69 73 74 2e 0d 0a 23 23 20 0d  ames list...## .
0250: 0a 23 23 20 57 68 61 74 20 74 68 69 73 20 63 61  .## What this ca
0260: 6e 20 64 6f 20 69 73 3a 0d 0a 23 23 0d 0a 23 23  n do is:..##..##
0270: 20 5b 64 61 74 65 74 69 6d 65 5d 3a 3a 6e 3c 74   [datetime]::n<t
0280: 61 62 3e 0d 0a 23 23 20 5b 64 61 74 65 74 69 6d  ab>..## [datetim
0290: 65 5d 3a 3a 6e 6f 77 2e 64 3c 74 61 62 3e 0d 0a  e]::now.d<tab>..
02a0: 23 23 20 24 61 20 3d 20 4e 65 77 2d 4f 62 6a 65  ## $a = New-Obje
02b0: 63 74 20 22 49 6e 74 33 32 5b 2c 5d 22 20 32 2c  ct "Int32[,]" 2,
02c0: 33 3b 20 24 62 20 3d 20 22 50 6f 77 65 72 53 68  3; $b = "PowerSh
02d0: 65 6c 6c 22 2c 22 50 6f 77 65 72 53 68 65 6c 6c  ell","PowerShell
02e0: 22 0d 0a 23 23 20 24 63 20 3d 20 5b 72 65 66 5d  "..## $c = [ref]
02f0: 24 61 3b 20 24 64 20 3d 20 5b 72 65 66 5d 24 62  $a; $d = [ref]$b
0300: 2c 24 63 0d 0a 23 23 20 24 64 5b 30 5d 2e 56 3c  ,$c..## $d[0].V<
0310: 74 61 62 3e 5b 30 5d 5b 30 5d 2e 47 65 74 3c 74  tab>[0][0].Get<t
0320: 61 62 3e 0d 0a 23 23 20 24 64 5b 31 5d 2e 56 3c  ab>..## $d[1].V<
0330: 74 61 62 3e 5b 30 2c 30 5d 2e 74 6f 73 3c 74 61  tab>[0,0].tos<ta
0340: 62 3e 0d 0a 23 23 20 24 66 75 6e 63 74 69 6f 6e  b>..## $function
0350: 3a 61 3c 74 61 62 3e 0d 0a 23 23 20 24 65 6e 76  :a<tab>..## $env
0360: 3a 61 3c 74 61 62 3e 0d 0a 23 23 20 5b 53 79 73  :a<tab>..## [Sys
0370: 74 65 6d 2e 54 79 70 65 5d 2e 61 3c 74 61 62 3e  tem.Type].a<tab>
0380: 0d 0a 23 23 20 5b 64 61 74 65 74 69 6d 65 5d 2e  ..## [datetime].
0390: 41 73 73 65 6d 62 6c 79 2e 61 3c 74 61 62 3e 0d  Assembly.a<tab>.
03a0: 0a 23 23 20 29 2e 61 3c 74 61 62 3e 20 23 20 73  .## ).a<tab> # s
03b0: 68 6f 77 73 20 53 79 73 74 65 6d 2e 54 79 70 65  hows System.Type
03c0: 20 70 72 6f 70 65 72 74 69 65 73 20 61 6e 64 20   properties and 
03d0: 6d 65 74 68 6f 64 73 2e 2e 2e 0d 0a 0d 0a 23 23  methods.......##
03e0: 20 23 6e 61 74 69 76 65 20 63 6f 6d 6d 61 6e 64   #native command
03f0: 20 6e 61 6d 65 20 65 78 70 61 6e 73 69 6f 6e 0d   name expansion.
0400: 0a 23 23 20 66 73 75 3c 74 61 62 3e 0d 0a 0d 0a  .## fsu<tab>....
0410: 23 23 20 23 63 6f 6d 6d 61 6e 64 20 6f 70 74 69  ## #command opti
0420: 6f 6e 20 6e 61 6d 65 20 65 78 70 61 6e 73 69 6f  on name expansio
0430: 6e 20 28 66 6f 72 20 66 73 75 74 69 6c 20 69 70  n (for fsutil ip
0440: 63 6f 6e 66 69 67 20 6e 65 74 20 70 6f 77 65 72  config net power
0450: 73 68 65 6c 6c 20 6f 6e 6c 79 29 0d 0a 23 23 20  shell only)..## 
0460: 66 73 75 74 69 6c 20 3c 74 61 62 3e 0d 0a 23 23  fsutil <tab>..##
0470: 20 69 70 63 6f 6e 66 69 67 20 3c 74 61 62 3e 0d   ipconfig <tab>.
0480: 0a 23 23 20 6e 65 74 20 3c 74 61 62 3e 0d 0a 23  .## net <tab>..#
0490: 23 20 70 6f 77 65 72 73 68 65 6c 6c 20 3c 74 61  # powershell <ta
04a0: 62 3e 0d 0a 0d 0a 23 23 20 23 54 79 70 65 4e 61  b>....## #TypeNa
04b0: 6d 65 73 20 61 6e 64 20 54 79 70 65 20 61 63 63  mes and Type acc
04c0: 65 6c 65 72 61 74 6f 72 73 20 65 78 70 61 6e 73  elerators expans
04d0: 69 6f 6e 0d 0a 23 23 20 5b 44 65 63 3c 74 61 62  ion..## [Dec<tab
04e0: 3e 0d 0a 23 23 20 5b 73 79 73 74 65 6d 2e 4d 61  >..## [system.Ma
04f0: 6e 3c 74 61 62 3e 2e 61 75 74 6f 3c 74 61 62 3e  n<tab>.auto<tab>
0500: 2e 70 3c 74 61 62 3e 0d 0a 23 23 20 4e 65 77 2d  .p<tab>..## New-
0510: 4f 62 6a 65 63 74 20 2d 54 79 70 65 4e 61 6d 65  Object -TypeName
0520: 20 49 4f 2e 44 69 72 3c 74 61 62 3e 0d 0a 23 23   IO.Dir<tab>..##
0530: 20 4e 65 77 2d 4f 62 6a 65 63 74 20 53 79 73 74   New-Object Syst
0540: 65 6d 2e 77 69 6e 3c 74 61 62 3e 2e 66 6f 72 3c  em.win<tab>.for<
0550: 74 61 62 3e 2e 62 75 3c 74 61 62 3e 0d 0a 0d 0a  tab>.bu<tab>....
0560: 23 23 20 23 50 72 6f 67 49 44 73 20 65 78 70 61  ## #ProgIDs expa
0570: 6e 73 69 6f 6e 0d 0a 23 23 20 4e 65 77 2d 4f 62  nsion..## New-Ob
0580: 6a 65 63 74 20 2d 43 6f 6d 20 73 68 65 6c 3c 74  ject -Com shel<t
0590: 61 62 3e 0d 0a 0d 0a 23 23 20 23 45 6e 75 6d 20  ab>....## #Enum 
05a0: 6f 70 74 69 6f 6e 20 65 78 70 61 6e 73 69 6f 6e  option expansion
05b0: 0d 0a 23 23 20 53 65 74 2d 45 78 65 63 75 74 69  ..## Set-Executi
05c0: 6f 6e 50 6f 6c 69 63 79 20 3c 74 61 62 3e 0d 0a  onPolicy <tab>..
05d0: 23 23 20 53 65 74 2d 45 78 65 63 75 74 69 6f 6e  ## Set-Execution
05e0: 50 6f 6c 69 63 79 20 41 6c 6c 3c 74 61 62 3e 0d  Policy All<tab>.
05f0: 0a 23 23 20 53 65 74 2d 45 78 63 75 73 69 6f 6e  .## Set-Excusion
0600: 50 6f 6c 69 73 79 20 2d 65 78 20 3c 74 61 62 3e  Polisy -ex <tab>
0610: 0d 0a 23 23 20 47 65 74 2d 54 72 61 63 65 53 6f  ..## Get-TraceSo
0620: 75 72 63 65 20 49 6e 74 65 3c 74 61 62 3e 0d 0a  urce Inte<tab>..
0630: 23 23 20 69 65 78 20 2d 45 72 72 6f 72 61 20 3c  ## iex -Errora <
0640: 74 61 62 3e 20 2d 77 61 20 53 69 6c 3c 74 61 62  tab> -wa Sil<tab
0650: 3e 0d 0a 0d 0a 23 23 20 23 57 6d 69 43 6c 61 73  >....## #WmiClas
0660: 73 65 73 20 65 78 70 61 6e 73 69 6f 6e 0d 0a 23  ses expansion..#
0670: 23 20 47 65 74 2d 57 6d 69 4f 62 6a 65 63 74 20  # Get-WmiObject 
0680: 2d 63 6c 61 73 73 20 57 69 6e 33 32 5f 3c 74 61  -class Win32_<ta
0690: 62 3e 0d 0a 23 23 20 67 77 6d 69 20 5f 5f 49 6e  b>..## gwmi __In
06a0: 73 74 61 6e 63 65 3c 74 61 62 3e 0d 0a 0d 0a 23  stance<tab>....#
06b0: 23 20 23 45 6e 63 6f 64 69 6e 67 20 65 78 70 61  # #Encoding expa
06c0: 6e 73 69 6f 6e 0d 0a 23 23 20 5b 4f 75 74 2d 46  nsion..## [Out-F
06d0: 69 6c 65 20 7c 20 45 78 70 6f 72 74 2d 43 53 56  ile | Export-CSV
06e0: 20 7c 20 53 65 6c 65 63 74 2d 53 74 72 69 6e 67   | Select-String
06f0: 20 7c 20 45 78 70 6f 72 74 2d 43 6c 69 78 6d 6c   | Export-Clixml
0700: 5d 20 2d 65 6e 63 20 3c 74 61 62 3e 0d 0a 23 23  ] -enc <tab>..##
0710: 20 5b 41 64 64 2d 43 6f 6e 74 65 6e 74 20 7c 20   [Add-Content | 
0720: 47 65 74 2d 43 6f 6e 74 65 6e 74 20 7c 20 53 65  Get-Content | Se
0730: 74 2d 43 6f 6e 74 65 6e 74 7d 20 2d 45 6e 63 6f  t-Content} -Enco
0740: 64 69 6e 67 20 42 69 67 3c 74 61 62 3e 0d 0a 0d  ding Big<tab>...
0750: 0a 23 23 20 23 50 53 50 72 6f 76 69 64 65 72 20  .## #PSProvider 
0760: 6e 61 6d 65 20 65 78 70 61 6e 73 69 6f 6e 0d 0a  name expansion..
0770: 23 23 20 5b 47 65 74 2d 4c 6f 63 61 74 69 6f 6e  ## [Get-Location
0780: 20 7c 20 47 65 74 2d 50 53 44 72 69 76 65 20 7c   | Get-PSDrive |
0790: 20 47 65 74 2d 50 53 50 72 6f 76 69 64 65 72 20   Get-PSProvider 
07a0: 7c 20 4e 65 77 2d 50 53 44 72 69 76 65 20 7c 20  | New-PSDrive | 
07b0: 52 65 6d 6f 76 65 2d 50 53 44 72 69 76 65 5d 20  Remove-PSDrive] 
07c0: 2d 50 53 50 72 6f 76 69 64 65 72 20 3c 74 61 62  -PSProvider <tab
07d0: 3e 0d 0a 23 23 20 47 65 74 2d 50 53 50 72 6f 76  >..## Get-PSProv
07e0: 69 64 65 72 20 3c 74 61 62 3e 0d 0a 23 23 20 70  ider <tab>..## p
07f0: 77 64 20 2d 70 73 70 20 61 6c 3c 74 61 62 3e 0d  wd -psp al<tab>.
0800: 0a 0d 0a 23 23 20 23 50 53 44 72 69 76 65 20 6e  ...## #PSDrive n
0810: 61 6d 65 20 65 78 70 61 6e 73 69 6f 6e 0d 0a 23  ame expansion..#
0820: 23 20 5b 47 65 74 2d 50 53 44 72 69 76 65 20 7c  # [Get-PSDrive |
0830: 20 4e 65 77 2d 50 53 44 72 69 76 65 20 7c 20 52   New-PSDrive | R
0840: 65 6d 6f 76 65 2d 50 53 44 72 69 76 65 5d 20 5b  emove-PSDrive] [
0850: 2d 4e 61 6d 65 5d 20 3c 74 61 62 3e 0d 0a 23 23  -Name] <tab>..##
0860: 20 47 65 74 2d 50 53 44 72 69 76 65 20 3c 74 61   Get-PSDrive <ta
0870: 62 3e 0d 0a 23 23 20 70 77 64 20 2d 70 73 64 20  b>..## pwd -psd 
0880: 3c 74 61 62 3e 0d 0a 0d 0a 23 23 20 23 50 53 53  <tab>....## #PSS
0890: 6e 61 70 69 6e 20 6e 61 6d 65 20 65 78 70 61 6e  napin name expan
08a0: 73 69 6f 6e 0d 0a 23 23 20 5b 41 64 64 2d 50 53  sion..## [Add-PS
08b0: 53 6e 61 70 69 6e 20 7c 20 47 65 74 2d 50 53 53  Snapin | Get-PSS
08c0: 6e 61 70 69 6e 20 7c 20 52 65 6d 6f 76 65 2d 50  napin | Remove-P
08d0: 53 53 6e 61 70 69 6e 20 5d 20 5b 2d 4e 61 6d 65  SSnapin ] [-Name
08e0: 5d 20 3c 74 61 62 3e 0d 0a 23 23 20 47 65 74 2d  ] <tab>..## Get-
08f0: 43 6f 6d 6d 61 6e 64 20 2d 50 53 53 6e 61 70 69  Command -PSSnapi
0900: 6e 20 3c 74 61 62 3e 0d 0a 23 23 20 52 65 6d 6f  n <tab>..## Remo
0910: 76 65 2d 50 53 53 6e 61 70 69 6e 20 3c 74 61 62  ve-PSSnapin <tab
0920: 3e 0d 0a 23 23 20 47 65 74 2d 50 53 53 6e 61 70  >..## Get-PSSnap
0930: 69 6e 20 4d 3c 74 61 62 3e 0d 0a 0d 0a 23 23 20  in M<tab>....## 
0940: 23 45 76 65 6e 74 6c 6f 67 20 6e 61 6d 65 20 61  #Eventlog name a
0950: 6e 64 20 65 78 70 61 6e 73 69 6f 6e 0d 0a 23 23  nd expansion..##
0960: 20 47 65 74 2d 45 76 65 6e 74 6c 6f 67 20 2d 4c   Get-Eventlog -L
0970: 6f 67 20 3c 74 61 62 3e 0d 0a 23 23 20 47 65 74  og <tab>..## Get
0980: 2d 45 76 65 6e 74 6c 6f 67 20 77 3c 74 61 62 3e  -Eventlog w<tab>
0990: 0d 0a 0d 0a 23 23 20 23 45 76 65 6e 74 6c 6f 67  ....## #Eventlog
09a0: 27 73 20 65 6e 74 72 79 74 79 70 65 20 65 78 70  's entrytype exp
09b0: 61 6e 73 69 6f 6e 0d 0a 23 23 20 47 65 74 2d 45  ansion..## Get-E
09c0: 76 65 6e 74 4c 6f 67 20 2d 45 6e 74 72 79 54 79  ventLog -EntryTy
09d0: 70 65 20 3c 74 61 62 3e 0d 0a 23 23 20 47 65 74  pe <tab>..## Get
09e0: 2d 45 76 65 6e 74 4c 6f 67 20 2d 45 6e 74 72 79  -EventLog -Entry
09f0: 54 79 70 65 20 45 72 3c 74 61 62 3e 0d 0a 23 23  Type Er<tab>..##
0a00: 20 47 65 74 2d 45 76 65 6e 74 4c 6f 67 20 2d 45   Get-EventLog -E
0a10: 6e 74 20 3c 74 61 62 3e 0d 0a 0d 0a 23 23 20 23  nt <tab>....## #
0a20: 53 65 72 76 69 63 65 20 6e 61 6d 65 20 65 78 70  Service name exp
0a30: 61 6e 73 69 6f 6e 0d 0a 23 23 20 5b 47 65 74 2d  ansion..## [Get-
0a40: 53 65 72 76 69 63 65 20 7c 20 52 65 73 74 61 72  Service | Restar
0a50: 74 2d 53 65 72 76 69 63 65 20 7c 20 52 65 73 75  t-Service | Resu
0a60: 6d 65 2d 53 65 72 76 69 63 65 20 7c 20 53 74 61  me-Service | Sta
0a70: 72 74 2d 53 65 72 76 69 63 65 20 7c 20 53 74 6f  rt-Service | Sto
0a80: 70 2d 53 65 72 76 69 63 65 20 7c 20 53 75 73 70  p-Service | Susp
0a90: 65 6e 64 2d 53 65 72 76 69 63 65 5d 20 5b 2d 4e  end-Service] [-N
0aa0: 61 6d 65 5d 20 3c 74 61 62 3e 0d 0a 23 23 20 4e  ame] <tab>..## N
0ab0: 65 77 2d 53 65 72 76 69 63 65 20 2d 44 65 70 65  ew-Service -Depe
0ac0: 6e 64 73 4f 6e 20 3c 74 61 62 3e 0d 0a 23 23 20  ndsOn <tab>..## 
0ad0: 4e 65 77 2d 53 65 72 76 69 63 65 20 2d 44 65 70  New-Service -Dep
0ae0: 20 65 3c 74 61 62 3e 0d 0a 23 23 20 47 65 74 2d   e<tab>..## Get-
0af0: 53 65 72 76 69 63 65 20 2d 6e 20 3c 74 61 62 3e  Service -n <tab>
0b00: 0d 0a 23 23 20 47 65 74 2d 53 65 72 76 69 63 65  ..## Get-Service
0b10: 20 3c 74 61 62 3e 2c 61 3c 74 61 62 3e 2c 70 3c   <tab>,a<tab>,p<
0b20: 74 61 62 3e 0d 0a 23 23 20 67 73 76 20 3c 74 61  tab>..## gsv <ta
0b30: 62 3e 0d 0a 0d 0a 23 23 20 23 53 65 72 76 69 63  b>....## #Servic
0b40: 65 20 64 69 73 70 6c 61 79 20 6e 61 6d 65 20 65  e display name e
0b50: 78 70 61 6e 73 69 6f 6e 0d 0a 23 23 20 5b 47 65  xpansion..## [Ge
0b60: 74 2d 53 65 72 76 69 63 65 20 7c 20 52 65 73 74  t-Service | Rest
0b70: 61 72 74 2d 53 65 72 76 69 63 65 20 7c 20 52 65  art-Service | Re
0b80: 73 75 6d 65 2d 53 65 72 76 69 63 65 20 7c 20 53  sume-Service | S
0b90: 74 61 72 74 2d 53 65 72 76 69 63 65 20 7c 20 53  tart-Service | S
0ba0: 74 6f 70 2d 53 65 72 76 69 63 65 20 7c 20 53 75  top-Service | Su
0bb0: 73 70 65 6e 64 2d 53 65 72 76 69 63 65 5d 20 5b  spend-Service] [
0bc0: 2d 44 69 73 70 6c 61 79 4e 61 6d 65 5d 20 3c 74  -DisplayName] <t
0bd0: 61 62 3e 0d 0a 23 23 20 47 65 74 2d 53 65 72 76  ab>..## Get-Serv
0be0: 69 63 65 20 2d 44 69 73 20 3c 74 61 62 3e 0d 0a  ice -Dis <tab>..
0bf0: 23 23 20 67 73 76 20 2d 44 69 73 20 3c 74 61 62  ## gsv -Dis <tab
0c00: 3e 2c 77 3c 74 61 62 3e 2c 62 3c 74 61 62 3e 0d  >,w<tab>,b<tab>.
0c10: 0a 0d 0a 23 23 20 23 43 6d 64 6c 65 74 20 61 6e  ...## #Cmdlet an
0c20: 64 20 54 6f 70 69 63 20 6e 61 6d 65 20 65 78 70  d Topic name exp
0c30: 61 6e 73 69 6f 6e 20 28 74 68 69 73 20 61 6c 73  ansion (this als
0c40: 6f 20 73 75 70 70 6f 72 74 20 64 65 66 61 75 6c  o support defaul
0c50: 74 20 68 65 6c 70 20 66 75 6e 63 74 69 6f 6e 20  t help function 
0c60: 61 6e 64 20 6d 61 6e 20 61 6c 69 61 73 29 0d 0a  and man alias)..
0c70: 23 23 20 47 65 74 2d 48 65 6c 70 20 5b 2d 4e 61  ## Get-Help [-Na
0c80: 6d 65 5d 20 61 62 6f 75 74 5f 3c 74 61 62 3e 0d  me] about_<tab>.
0c90: 0a 23 23 20 47 65 74 2d 48 65 6c 70 20 3c 74 61  .## Get-Help <ta
0ca0: 62 3e 0d 0a 0d 0a 23 23 20 23 43 61 74 65 67 6f  b>....## #Catego
0cb0: 72 79 20 6e 61 6d 65 20 65 78 70 61 6e 73 69 6f  ry name expansio
0cc0: 6e 20 28 74 68 69 73 20 61 6c 73 6f 20 73 75 70  n (this also sup
0cd0: 70 6f 72 74 20 64 65 66 61 75 6c 74 20 68 65 6c  port default hel
0ce0: 70 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 6d  p function and m
0cf0: 61 6e 20 61 6c 69 61 73 29 0d 0a 23 23 20 47 65  an alias)..## Ge
0d00: 74 2d 48 65 6c 70 20 2d 43 61 74 65 67 6f 72 79  t-Help -Category
0d10: 20 63 3c 74 61 62 3e 2c 3c 74 61 62 3e 0d 0a 0d   c<tab>,<tab>...
0d20: 0a 23 23 20 23 43 6f 6d 6d 61 6e 64 20 6e 61 6d  .## #Command nam
0d30: 65 20 65 78 70 61 6e 73 69 6f 6e 0d 0a 23 23 20  e expansion..## 
0d40: 47 65 74 2d 43 6f 6d 6d 61 6e 64 20 5b 2d 4e 61  Get-Command [-Na
0d50: 6d 65 5d 20 3c 74 61 62 3e 0d 0a 23 23 20 47 65  me] <tab>..## Ge
0d60: 74 2d 43 6f 6d 6d 61 6e 64 20 2d 4e 61 6d 65 20  t-Command -Name 
0d70: 3c 74 61 62 3e 0d 0a 23 23 20 67 63 6d 20 61 3c  <tab>..## gcm a<
0d80: 74 61 62 3e 2c 3c 74 61 62 3e 0d 0a 0d 0a 23 23  tab>,<tab>....##
0d90: 20 23 53 63 6f 70 65 20 65 78 70 61 6e 73 69 6f   #Scope expansio
0da0: 6e 0d 0a 23 23 20 5b 43 6c 65 61 72 2d 56 61 72  n..## [Clear-Var
0db0: 69 61 62 6c 65 20 7c 20 45 78 70 6f 72 74 2d 41  iable | Export-A
0dc0: 6c 69 61 73 20 7c 20 47 65 74 2d 41 6c 69 61 73  lias | Get-Alias
0dd0: 20 7c 20 47 65 74 2d 50 53 44 72 69 76 65 20 7c   | Get-PSDrive |
0de0: 20 47 65 74 2d 56 61 72 69 61 62 6c 65 20 7c 20   Get-Variable | 
0df0: 49 6d 70 6f 72 74 2d 41 6c 69 61 73 0d 0a 23 23  Import-Alias..##
0e00: 20 4e 65 77 2d 41 6c 69 61 73 20 7c 20 4e 65 77   New-Alias | New
0e10: 2d 50 53 44 72 69 76 65 20 7c 20 4e 65 77 2d 56  -PSDrive | New-V
0e20: 61 72 69 61 62 6c 65 20 7c 20 52 65 6d 6f 76 65  ariable | Remove
0e30: 2d 56 61 72 69 61 62 6c 65 20 7c 20 53 65 74 2d  -Variable | Set-
0e40: 41 6c 69 61 73 20 7c 20 53 65 74 2d 56 61 72 69  Alias | Set-Vari
0e50: 61 62 6c 65 5d 20 2d 53 63 6f 70 65 20 3c 74 61  able] -Scope <ta
0e60: 62 3e 0d 0a 23 23 20 43 6c 65 61 72 2d 56 61 72  b>..## Clear-Var
0e70: 69 61 62 6c 65 20 2d 53 63 6f 70 65 20 47 3c 74  iable -Scope G<t
0e80: 61 62 3e 0d 0a 23 23 20 53 65 74 2d 41 6c 69 61  ab>..## Set-Alia
0e90: 73 20 20 2d 73 20 3c 74 61 62 3e 0d 0a 0d 0a 23  s  -s <tab>....#
0ea0: 23 20 23 50 72 6f 63 65 73 73 20 6e 61 6d 65 20  # #Process name 
0eb0: 65 78 70 61 6e 73 69 6f 6e 0d 0a 23 23 20 5b 47  expansion..## [G
0ec0: 65 74 2d 50 72 6f 63 65 73 73 20 7c 20 53 74 6f  et-Process | Sto
0ed0: 70 2d 50 72 6f 63 65 73 73 5d 20 5b 2d 4e 61 6d  p-Process] [-Nam
0ee0: 65 5d 20 3c 74 61 62 3e 0d 0a 23 23 20 53 74 6f  e] <tab>..## Sto
0ef0: 70 2d 50 72 6f 63 65 73 73 20 2d 4e 61 6d 65 20  p-Process -Name 
0f00: 3c 74 61 62 3e 0d 0a 23 23 20 53 74 6f 70 2d 50  <tab>..## Stop-P
0f10: 72 6f 63 65 73 73 20 2d 4e 20 70 6f 77 3c 74 61  rocess -N pow<ta
0f20: 62 3e 0d 0a 23 23 20 47 65 74 2d 50 72 6f 63 65  b>..## Get-Proce
0f30: 73 73 20 3c 74 61 62 3e 0d 0a 23 23 20 70 73 20  ss <tab>..## ps 
0f40: 70 6f 77 65 72 3c 74 61 62 3e 0d 0a 0d 0a 23 23  power<tab>....##
0f50: 20 23 54 72 61 63 65 20 73 6f 75 72 63 65 73 20   #Trace sources 
0f60: 65 78 70 61 6e 73 69 6f 6e 0d 0a 23 23 20 5b 54  expansion..## [T
0f70: 72 61 63 65 2d 43 6f 6d 6d 61 6e 64 20 7c 20 47  race-Command | G
0f80: 65 74 2d 54 72 61 63 65 53 6f 75 72 63 65 20 7c  et-TraceSource |
0f90: 20 53 65 74 2d 54 72 61 63 65 53 6f 75 72 63 65   Set-TraceSource
0fa0: 5d 20 5b 2d 4e 61 6d 65 5d 20 3c 74 61 62 3e 2c  ] [-Name] <tab>,
0fb0: 61 3c 74 61 62 3e 2c 70 3c 74 61 62 3e 0d 0a 0d  a<tab>,p<tab>...
0fc0: 0a 23 23 20 23 54 72 61 63 65 20 2d 4c 69 73 74  .## #Trace -List
0fd0: 65 6e 65 72 4f 70 74 69 6f 6e 20 65 78 70 61 6e  enerOption expan
0fe0: 73 69 6f 6e 0d 0a 23 23 20 5b 53 65 74 2d 54 72  sion..## [Set-Tr
0ff0: 61 63 65 53 6f 75 72 63 65 20 7c 20 54 72 61 63  aceSource | Trac
1000: 65 2d 43 6f 6d 6d 61 6e 64 5d 20 2d 4c 69 73 74  e-Command] -List
1010: 65 6e 65 72 4f 70 74 69 6f 6e 20 3c 74 61 62 3e  enerOption <tab>
1020: 0d 0a 23 23 20 53 65 74 2d 54 72 61 63 65 53 6f  ..## Set-TraceSo
1030: 75 72 63 65 20 2d 4c 69 73 20 3c 74 61 62 3e 2c  urce -Lis <tab>,
1040: 6e 3c 74 61 62 3e 0d 0a 0d 0a 23 23 20 23 54 72  n<tab>....## #Tr
1050: 61 63 65 20 2d 4f 70 74 69 6f 6e 20 65 78 70 61  ace -Option expa
1060: 6e 73 69 6f 6e 0d 0a 23 23 20 5b 53 65 74 2d 54  nsion..## [Set-T
1070: 72 61 63 65 53 6f 75 72 63 65 20 7c 20 54 72 61  raceSource | Tra
1080: 63 65 2d 43 6f 6d 6d 61 6e 64 5d 20 2d 4f 70 74  ce-Command] -Opt
1090: 69 6f 6e 20 3c 74 61 62 3e 0d 0a 23 23 20 53 65  ion <tab>..## Se
10a0: 74 2d 54 72 61 63 65 53 6f 75 72 63 65 20 2d 6f  t-TraceSource -o
10b0: 70 20 3c 74 61 62 3e 2c 63 6f 6e 3c 74 61 62 3e  p <tab>,con<tab>
10c0: 0d 0a 0d 0a 23 23 20 23 49 74 65 6d 54 79 70 65  ....## #ItemType
10d0: 20 65 78 70 61 6e 73 69 6f 6e 0d 0a 23 23 20 4e   expansion..## N
10e0: 65 77 2d 49 74 65 6d 20 2d 49 74 65 6d 20 3c 74  ew-Item -Item <t
10f0: 61 62 3e 0d 0a 23 23 20 6e 69 20 2d 49 74 65 6d  ab>..## ni -Item
1100: 54 79 70 65 20 64 3c 74 61 62 3e 0d 0a 0d 0a 23  Type d<tab>....#
1110: 23 20 23 45 72 72 6f 72 41 63 74 69 6f 6e 20 61  # #ErrorAction a
1120: 6e 64 20 57 61 72 6e 69 6e 67 41 63 74 69 6f 6e  nd WarningAction
1130: 20 6f 70 74 69 6f 6e 20 65 78 70 61 6e 73 69 6f   option expansio
1140: 6e 0d 0a 23 23 20 43 4d 44 4c 45 54 20 5b 2d 45  n..## CMDLET [-E
1150: 72 72 6f 72 41 63 74 69 6f 6e 20 7c 20 2d 57 61  rrorAction | -Wa
1160: 72 6e 69 6e 67 41 63 74 69 6f 6e 5d 20 3c 74 61  rningAction] <ta
1170: 62 3e 0d 0a 23 23 20 43 4d 44 4c 45 54 20 2d 45  b>..## CMDLET -E
1180: 72 72 6f 72 61 20 73 3c 74 61 62 3e 0d 0a 23 23  rrora s<tab>..##
1190: 20 43 4d 44 4c 45 54 20 2d 65 61 20 63 6f 6e 3c   CMDLET -ea con<
11a0: 74 61 62 3e 0d 0a 23 23 20 43 4d 44 4c 45 54 20  tab>..## CMDLET 
11b0: 2d 77 61 20 3c 74 61 62 3e 0d 0a 0d 0a 23 23 20  -wa <tab>....## 
11c0: 23 43 6f 6e 74 69 6e 75 6f 75 73 20 65 78 70 61  #Continuous expa
11d0: 6e 73 69 6f 6e 20 77 69 74 68 20 63 6f 6d 6d 61  nsion with comma
11e0: 20 77 68 65 6e 20 70 61 72 61 6d 65 74 65 72 20   when parameter 
11f0: 63 61 6e 20 74 72 65 61 74 20 6d 75 6c 74 69 70  can treat multip
1200: 6c 65 20 6f 70 74 69 6f 6e 0d 0a 23 23 20 23 20  le option..## # 
1210: 69 66 20 74 68 65 72 65 20 61 72 65 20 73 70 61  if there are spa
1220: 63 65 73 2c 20 6f 63 63 75 72 20 64 69 73 70 6c  ces, occur displ
1230: 61 79 20 62 75 67 20 69 6e 20 74 68 65 20 6c 69  ay bug in the li
1240: 6e 65 0d 0a 23 23 20 23 20 69 66 20 73 74 72 69  ne..## # if stri
1250: 6e 67 73 20 63 6f 6e 74 61 69 6e 73 20 27 24 27  ngs contains '$'
1260: 20 6f 72 20 27 2d 27 2c 20 6e 6f 74 20 77 6f 72   or '-', not wor
1270: 6b 0d 0a 23 23 20 47 65 74 2d 43 6f 6d 6d 61 6e  k..## Get-Comman
1280: 64 20 2d 43 6f 6d 6d 61 6e 64 54 79 70 65 20 3c  d -CommandType <
1290: 74 61 62 3e 2c 3c 74 61 62 3e 3c 74 61 62 3e 2c  tab>,<tab><tab>,
12a0: 63 6d 3c 74 61 62 3e 0d 0a 23 23 20 70 77 64 20  cm<tab>..## pwd 
12b0: 2d 70 73 70 20 3c 74 61 62 3e 2c 66 3c 74 61 62  -psp <tab>,f<tab
12c0: 3e 2c 76 61 3c 74 61 62 3e 0d 0a 23 23 20 47 65  >,va<tab>..## Ge
12d0: 74 2d 45 76 65 6e 74 4c 6f 67 20 2d 45 6e 74 72  t-EventLog -Entr
12e0: 79 54 79 70 65 20 3c 74 61 62 3e 2c 69 3c 74 61  yType <tab>,i<ta
12f0: 62 3e 2c 73 3c 74 61 62 3e 0d 0a 0d 0a 23 23 20  b>,s<tab>....## 
1300: 23 45 6e 75 6d 20 65 78 70 61 6e 73 69 6f 6e 20  #Enum expansion 
1310: 69 6e 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20 65  in method call e
1320: 78 70 72 65 73 73 69 6f 6e 0d 0a 23 23 20 23 20  xpression..## # 
1330: 74 68 69 73 20 6e 65 65 64 73 20 6f 6e 65 20 6f  this needs one o
1340: 72 20 6d 6f 72 65 20 73 70 61 63 65 73 20 61 66  r more spaces af
1350: 74 65 72 20 6c 65 66 74 20 70 61 72 65 6e 74 68  ter left parenth
1360: 65 73 69 73 20 6f 72 20 63 6f 6d 6d 61 0d 0a 23  esis or comma..#
1370: 23 20 24 73 74 72 20 3d 20 22 64 61 79 20 20 20  # $str = "day   
1380: 6e 69 67 68 74 22 0d 0a 23 23 20 24 73 74 72 2e  night"..## $str.
1390: 53 70 6c 69 74 28 20 22 20 22 2c 3c 73 70 61 63  Split( " ",<spac
13a0: 65 3e 72 65 6d 3c 74 61 62 3e 0d 0a 23 23 20 3e  e>rem<tab>..## >
13b0: 3e 3e 20 24 73 74 72 2e 53 70 6c 69 74 28 20 22  >> $str.Split( "
13c0: 20 22 2c 20 22 52 65 6d 6f 76 65 45 6d 70 74 79   ", "RemoveEmpty
13d0: 45 6e 74 72 69 65 73 22 20 29 20 3c 45 6e 74 65  Entries" ) <Ente
13e0: 72 3e 20 45 52 52 4f 52 0d 0a 23 23 20 24 73 74  r> ERROR..## $st
13f0: 72 2e 53 70 6c 69 74 28 20 22 20 22 2c 20 22 52  r.Split( " ", "R
1400: 65 6d 6f 76 65 45 6d 70 74 79 45 6e 74 72 69 65  emoveEmptyEntrie
1410: 73 22 20 2d 61 73 3c 73 70 61 63 65 3e 3c 74 61  s" -as<space><ta
1420: 62 3e 0d 0a 23 23 20 3e 3e 3e 20 24 73 74 72 2e  b>..## >>> $str.
1430: 53 70 6c 69 74 28 20 22 20 22 2c 20 22 52 65 6d  Split( " ", "Rem
1440: 6f 76 65 45 6d 70 74 79 45 6e 74 72 69 65 73 22  oveEmptyEntries"
1450: 20 2d 61 73 20 5b 53 79 73 74 65 6d 2e 53 74 72   -as [System.Str
1460: 69 6e 67 53 70 6c 69 74 4f 70 74 69 6f 6e 73 5d  ingSplitOptions]
1470: 20 29 20 3c 45 6e 74 65 72 3e 20 53 75 63 63 65   ) <Enter> Succe
1480: 73 73 0d 0a 23 23 20 24 74 79 70 65 20 3d 20 5b  ss..## $type = [
1490: 53 79 73 74 65 6d 2e 54 79 70 65 5d 0d 0a 23 23  System.Type]..##
14a0: 20 24 74 79 70 65 2e 47 65 74 4d 65 6d 62 65 72   $type.GetMember
14b0: 73 28 3c 73 70 61 63 65 3e 44 65 66 3c 74 61 62  s(<space>Def<tab
14c0: 3e 0d 0a 23 23 20 5b 49 4f 2e 44 69 72 65 63 74  >..## [IO.Direct
14d0: 6f 72 79 5d 3a 3a 47 65 74 46 69 6c 65 73 28 20  ory]::GetFiles( 
14e0: 22 43 3a 5c 22 2c 20 22 2a 22 2c 3c 73 70 61 63  "C:\", "*",<spac
14f0: 65 3e 41 6c 6c 3c 74 61 62 3e 0d 0a 23 23 20 23  e>All<tab>..## #
1500: 20 74 68 69 73 20 63 61 6e 20 64 6f 20 63 6f 6e   this can do con
1510: 74 69 6e 75 6f 75 73 20 65 6e 75 6d 20 65 78 70  tinuous enum exp
1520: 61 6e 73 69 6f 6e 20 77 69 74 68 20 63 6f 6d 6d  ansion with comm
1530: 61 20 61 6e 64 20 6e 6f 20 73 70 61 63 65 73 0d  a and no spaces.
1540: 0a 23 23 20 24 74 79 70 65 2e 47 65 74 4d 65 6d  .## $type.GetMem
1550: 62 65 72 73 28 20 22 49 67 6e 6f 72 65 43 61 73  bers( "IgnoreCas
1560: 65 3c 63 6f 6d 6d 61 3e 44 65 63 3c 74 61 62 3e  e<comma>Dec<tab>
1570: 3c 63 6f 6d 6d 61 3e 49 6e 3c 74 61 62 3e 22 0d  <comma>In<tab>".
1580: 0a 23 23 20 5b 49 4f 2e 44 69 72 65 63 74 6f 72  .## [IO.Director
1590: 79 5d 3a 3a 47 65 74 41 63 63 65 73 73 43 6f 6e  y]::GetAccessCon
15a0: 74 72 6f 6c 28 20 22 43 3a 5c 22 2c 3c 73 70 61  trol( "C:\",<spa
15b0: 63 65 3e 61 75 3c 74 61 62 3e 3c 63 6f 6d 6d 61  ce>au<tab><comma
15c0: 3e 61 63 3c 74 61 62 3e 3c 63 6f 6d 6d 61 3e 47  >ac<tab><comma>G
15d0: 3c 74 61 62 3e 0d 0a 0d 0a 23 23 20 23 42 65 74  <tab>....## #Bet
15e0: 74 65 72 20 27 24 5f 2e 27 20 65 78 70 61 6e 73  ter '$_.' expans
15f0: 69 6f 6e 20 77 68 65 6e 20 63 6d 64 6c 65 74 20  ion when cmdlet 
1600: 6f 75 74 70 75 74 20 6f 62 6a 65 63 74 73 20 6f  output objects o
1610: 72 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 20  r method return 
1620: 6f 62 6a 65 63 74 73 0d 0a 23 23 20 6c 73 20 7c  objects..## ls |
1630: 67 72 6f 75 70 20 7b 20 24 5f 2e 43 72 3c 74 61  group { $_.Cr<ta
1640: 62 3e 2e 54 6f 73 74 3c 74 61 62 3e 22 79 22 29  b>.Tost<tab>"y")
1650: 7d 20 7c 20 74 65 65 20 2d 76 61 72 20 66 6f 6f  } | tee -var foo
1660: 7c 20 3f 20 7b 20 24 5f 2e 47 3c 74 61 62 3e 2e  | ? { $_.G<tab>.
1670: 63 3c 74 61 62 3e 20 2d 67 74 20 35 20 7d 20 7c  c<tab> -gt 5 } |
1680: 20 25 20 7b 20 6d 64 20 24 5f 2e 4e 3c 74 61 62   % { md $_.N<tab
1690: 3e 20 3b 20 63 6f 70 79 20 24 5f 2e 47 3c 74 61  > ; copy $_.G<ta
16a0: 62 3e 20 24 5f 2e 4e 3c 74 61 62 3e 20 20 7d 0d  b> $_.N<tab>  }.
16b0: 0a 23 23 20 5b 49 4f 2e 44 72 69 76 65 49 6e 66  .## [IO.DriveInf
16c0: 6f 5d 3a 3a 47 65 74 44 72 69 76 65 73 28 29 20  o]::GetDrives() 
16d0: 7c 20 3f 20 7b 20 24 5f 2e 41 3c 74 61 62 3e 20  | ? { $_.A<tab> 
16e0: 2d 67 74 20 31 47 42 20 7d 0d 0a 23 23 20 24 48  -gt 1GB }..## $H
16f0: 6f 73 74 2e 55 49 2e 52 61 77 55 49 2e 47 65 74  ost.UI.RawUI.Get
1700: 42 75 66 66 65 72 43 6f 6e 74 65 6e 74 73 28 24  BufferContents($
1710: 72 65 63 74 29 20 7c 20 25 20 7b 20 24 73 74 72  rect) | % { $str
1720: 20 2b 3d 20 24 5f 2e 63 3c 74 61 62 3e 20 7d 0d   += $_.c<tab> }.
1730: 0a 23 23 20 67 63 6d 20 41 64 64 2d 43 6f 6e 74  .## gcm Add-Cont
1740: 65 6e 74 20 7c 73 65 6c 65 63 74 20 2d 65 78 70  ent |select -exp
1750: 20 50 61 72 3c 74 61 62 3e 7c 20 73 65 6c 65 63   Par<tab>| selec
1760: 74 20 2d 45 78 70 61 6e 64 50 72 6f 70 65 72 74  t -ExpandPropert
1770: 79 20 50 61 72 3c 74 61 62 3e 20 7c 20 3f 20 7b  y Par<tab> | ? {
1780: 20 24 5f 2e 50 61 72 3c 74 61 62 3e 2e 4e 3c 74   $_.Par<tab>.N<t
1790: 61 62 3e 20 2d 65 71 20 22 73 74 72 69 6e 67 22  ab> -eq "string"
17a0: 20 7d 0d 0a 23 23 20 24 64 61 74 61 20 3d 20 47   }..## $data = G
17b0: 65 74 2d 50 72 6f 63 65 73 73 0d 0a 23 23 20 24  et-Process..## $
17c0: 64 61 74 61 5b 32 2c 34 2c 35 5d 20 20 7c 20 25  data[2,4,5]  | %
17d0: 20 7b 20 24 5f 2e 3c 74 61 62 3e 0d 0a 23 23 20   { $_.<tab>..## 
17e0: 23 77 68 65 6e 20 47 65 74 2d 50 69 70 65 4c 69  #when Get-PipeLi
17f0: 6e 65 4f 62 6a 65 63 74 20 66 61 69 6c 65 64 2c  neObject failed,
1800: 20 27 24 5f 2e 27 20 73 68 6f 77 73 20 6d 65 74   '$_.' shows met
1810: 68 6f 64 73 20 61 6e 64 20 70 72 6f 70 65 72 74  hods and propert
1820: 69 65 73 20 6e 61 6d 65 20 6f 66 20 46 69 6c 65  ies name of File
1830: 49 6e 66 6f 20 61 6e 64 20 53 74 72 69 6e 67 20  Info and String 
1840: 61 6e 64 20 54 79 70 65 0d 0a 0d 0a 23 23 20 23  and Type....## #
1850: 50 72 6f 70 65 72 74 79 20 6e 61 6d 65 20 65 78  Property name ex
1860: 70 61 6e 73 69 6f 6e 20 62 79 20 2d 50 72 6f 70  pansion by -Prop
1870: 65 72 74 79 20 70 61 72 61 6d 65 74 65 72 0d 0a  erty parameter..
1880: 23 23 20 5b 20 46 6f 72 6d 61 74 2d 4c 69 73 74  ## [ Format-List
1890: 20 7c 20 46 6f 72 6d 61 74 2d 43 75 73 74 6f 6d   | Format-Custom
18a0: 20 7c 20 46 6f 72 6d 61 74 2d 54 61 62 6c 65 20   | Format-Table 
18b0: 7c 20 46 6f 72 6d 61 74 2d 57 69 64 65 20 7c 20  | Format-Wide | 
18c0: 43 6f 6d 70 61 72 65 2d 4f 62 6a 65 63 74 20 7c  Compare-Object |
18d0: 0d 0a 23 23 20 20 43 6f 6e 76 65 72 74 54 6f 2d  ..##  ConvertTo-
18e0: 48 74 6d 6c 20 7c 20 4d 65 61 73 75 72 65 2d 4f  Html | Measure-O
18f0: 62 6a 65 63 74 20 7c 20 53 65 6c 65 63 74 2d 4f  bject | Select-O
1900: 62 6a 65 63 74 20 7c 20 47 72 6f 75 70 2d 4f 62  bject | Group-Ob
1910: 6a 65 63 74 20 7c 20 53 6f 72 74 2d 4f 62 6a 65  ject | Sort-Obje
1920: 63 74 20 5d 20 5b 2d 50 72 6f 70 65 72 74 79 5d  ct ] [-Property]
1930: 20 3c 74 61 62 3e 0d 0a 23 23 20 53 65 6c 65 63   <tab>..## Selec
1940: 74 2d 4f 62 6a 65 63 74 20 2d 45 78 63 6c 75 64  t-Object -Exclud
1950: 65 50 72 6f 70 65 72 74 79 20 3c 74 61 62 3e 0d  eProperty <tab>.
1960: 0a 23 23 20 53 65 6c 65 63 74 2d 4f 62 6a 65 63  .## Select-Objec
1970: 74 20 2d 45 78 70 61 6e 64 50 72 6f 70 65 72 74  t -ExpandPropert
1980: 79 20 3c 74 61 62 3e 0d 0a 23 23 20 67 63 6d 20  y <tab>..## gcm 
1990: 47 65 74 2d 41 63 6c 7c 73 65 6c 65 63 74 20 2d  Get-Acl|select -
19a0: 65 78 70 20 50 61 72 3c 74 61 62 3e 0d 0a 23 23  exp Par<tab>..##
19b0: 20 70 73 20 7c 67 72 6f 75 70 20 6e 61 3c 74 61   ps |group na<ta
19c0: 62 3e 0d 0a 23 23 20 6c 73 20 7c 20 66 74 20 41  b>..## ls | ft A
19d0: 3c 74 61 62 3e 2c 4d 3c 74 61 62 3e 2c 4c 3c 74  <tab>,M<tab>,L<t
19e0: 61 62 3e 0d 0a 0d 0a 23 23 20 23 48 61 73 68 74  ab>....## #Hasht
19f0: 61 62 6c 65 20 6b 65 79 20 65 78 70 61 6e 73 69  able key expansi
1a00: 6f 6e 20 69 6e 20 74 68 65 20 76 61 72 69 61 62  on in the variab
1a10: 6c 65 20 6e 61 6d 65 20 61 6e 64 20 27 2e 3c 74  le name and '.<t
1a20: 61 62 3e 27 0d 0a 23 23 20 47 65 74 2d 50 72 6f  ab>'..## Get-Pro
1a30: 63 65 73 73 20 7c 20 47 65 74 2d 55 6e 69 71 75  cess | Get-Uniqu
1a40: 65 20 7c 20 25 20 7b 20 24 68 61 73 68 20 2b 3d  e | % { $hash +=
1a50: 20 40 7b 24 5f 2e 50 72 6f 63 65 73 73 4e 61 6d   @{$_.ProcessNam
1a60: 65 3d 24 5f 7d 20 7d 0d 0a 23 23 20 24 68 61 73  e=$_} }..## $has
1a70: 68 2e 70 6f 77 3c 74 61 62 3e 2e 70 72 6f 3c 74  h.pow<tab>.pro<t
1a80: 61 62 3e 0d 0a 0d 0a 23 23 20 23 50 61 72 61 6d  ab>....## #Param
1a90: 65 74 65 72 20 65 78 70 61 6e 73 69 6f 6e 20 66  eter expansion f
1aa0: 6f 72 20 66 75 6e 63 74 69 6f 6e 2c 20 66 69 6c  or function, fil
1ab0: 74 65 72 20 61 6e 64 20 73 63 72 69 70 74 0d 0a  ter and script..
1ac0: 23 23 20 6d 61 6e 20 2d 66 3c 74 61 62 3e 0d 0a  ## man -f<tab>..
1ad0: 23 23 20 27 70 61 72 61 6d 28 5b 53 79 73 74 65  ## 'param([Syste
1ae0: 6d 2e 53 74 72 69 6e 67 53 70 6c 69 74 4f 70 74  m.StringSplitOpt
1af0: 69 6f 6e 73 5d 24 66 6f 6f 2c 5b 53 79 73 74 65  ions]$foo,[Syste
1b00: 6d 2e 4d 61 6e 61 67 65 6d 65 6e 74 2e 41 75 74  m.Management.Aut
1b10: 6f 6d 61 74 69 6f 6e 2e 41 63 74 69 6f 6e 50 72  omation.ActionPr
1b20: 65 66 65 72 65 6e 63 65 5d 24 62 61 72 2c 5b 53  eference]$bar,[S
1b30: 79 73 74 65 6d 2e 4d 61 6e 61 67 65 6d 65 6e 74  ystem.Management
1b40: 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 43 6f 6d 6d  .Automation.Comm
1b50: 61 6e 64 54 79 70 65 73 5d 24 62 61 7a 29 20 7b  andTypes]$baz) {
1b60: 7d 27 20 3e 20 66 6f 6f 62 61 72 2e 70 73 31 0d  }' > foobar.ps1.
1b70: 0a 23 23 20 2e 5c 66 6f 6f 62 61 72 2e 70 73 31  .## .\foobar.ps1
1b80: 20 2d 3c 74 61 62 3e 20 2d 62 3c 74 61 62 3e 0d   -<tab> -b<tab>.
1b90: 0a 0d 0a 23 23 20 23 45 6e 75 6d 20 65 78 70 61  ...## #Enum expa
1ba0: 6e 73 69 6f 6e 20 66 6f 72 20 66 75 6e 63 74 69  nsion for functi
1bb0: 6f 6e 2c 20 66 69 6c 74 65 72 20 61 6e 64 20 73  on, filter and s
1bc0: 63 72 69 70 74 73 0d 0a 23 23 20 23 20 74 68 69  cripts..## # thi
1bd0: 73 20 63 61 6e 20 64 6f 20 63 6f 6e 74 69 6e 75  s can do continu
1be0: 6f 75 73 20 65 6e 75 6d 20 65 78 70 61 6e 73 69  ous enum expansi
1bf0: 6f 6e 20 77 69 74 68 20 63 6f 6d 6d 61 20 61 6e  on with comma an
1c00: 64 20 6e 6f 20 73 70 61 63 65 73 0d 0a 23 23 20  d no spaces..## 
1c10: 2e 5c 66 6f 6f 62 61 72 2e 70 73 31 20 2d 66 6f  .\foobar.ps1 -fo
1c20: 6f 20 72 65 6d 3c 74 61 62 3e 20 2d 62 61 72 20  o rem<tab> -bar 
1c30: 3c 74 61 62 3e 3c 63 6f 6d 6d 61 3e 63 3c 74 61  <tab><comma>c<ta
1c40: 62 3e 3c 63 6f 6d 6d 61 3e 73 63 3c 74 61 62 3e  b><comma>sc<tab>
1c50: 20 2d 65 61 20 73 69 6c 65 6e 74 3c 74 61 62 3e   -ea silent<tab>
1c60: 20 2d 77 61 20 63 6f 6e 3c 74 61 62 3e 0d 0a 0d   -wa con<tab>...
1c70: 0a 23 23 20 23 45 6e 75 6d 20 65 78 70 61 6e 73  .## #Enum expans
1c80: 69 6f 6e 20 66 6f 72 20 61 73 73 69 67 6e 6d 65  ion for assignme
1c90: 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 0d 0a 23  nt expression..#
1ca0: 23 20 23 6e 65 65 64 73 20 73 70 61 63 65 28 73  # #needs space(s
1cb0: 29 20 61 66 74 65 72 20 27 3d 27 20 61 6e 64 20  ) after '=' and 
1cc0: 63 6f 6d 6d 61 0d 0a 23 23 20 23 73 74 72 6f 6e  comma..## #stron
1cd0: 67 6c 79 2d 74 79 70 65 64 20 77 69 74 68 20 2d  gly-typed with -
1ce0: 61 73 20 6f 70 65 72 61 74 6f 72 20 61 6e 64 20  as operator and 
1cf0: 73 70 61 63 65 28 73 29 0d 0a 23 23 20 24 45 72  space(s)..## $Er
1d00: 72 6f 72 41 63 74 69 6f 6e 50 72 65 66 65 72 65  rorActionPrefere
1d10: 6e 63 65 20 3d 3c 73 70 61 63 65 3e 3c 74 61 62  nce =<space><tab
1d20: 3e 0d 0a 23 23 20 24 63 6d 64 74 79 70 65 73 20  >..## $cmdtypes 
1d30: 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 53 79 73  = New-Object Sys
1d40: 74 65 6d 2e 4d 61 6e 61 67 65 6d 65 6e 74 2e 41  tem.Management.A
1d50: 75 74 6f 6d 61 74 69 6f 6e 2e 43 6f 6d 6d 61 6e  utomation.Comman
1d60: 64 54 79 70 65 73 5b 5d 20 33 0d 0a 23 23 20 24  dTypes[] 3..## $
1d70: 63 6d 64 74 79 70 65 73 20 3d 3c 73 70 61 63 65  cmdtypes =<space
1d80: 3e 3c 74 61 62 3e 3c 63 6f 6d 6d 61 3e 3c 73 70  ><tab><comma><sp
1d90: 61 63 65 3e 66 75 6e 63 3c 74 61 62 3e 3c 63 6f  ace>func<tab><co
1da0: 6d 6d 61 3e 3c 73 70 61 63 65 3e 63 6d 64 3c 74  mma><space>cmd<t
1db0: 61 62 3e 20 2d 61 73 3c 73 70 61 63 65 3e 3c 74  ab> -as<space><t
1dc0: 61 62 3e 0d 0a 0d 0a 23 23 20 23 50 61 74 68 20  ab>....## #Path 
1dd0: 65 78 70 61 6e 73 69 6f 6e 20 77 69 74 68 20 76  expansion with v
1de0: 61 72 69 61 62 6c 65 20 61 6e 64 20 27 5c 27 20  ariable and '\' 
1df0: 6f 72 20 27 2f 27 0d 0a 23 23 20 24 50 57 44 5c  or '/'..## $PWD\
1e00: 2e 2e 2f 2e 2e 2f 3c 74 61 62 3e 5c 3c 74 61 62  ../../<tab>\<tab
1e10: 3e 0d 0a 23 23 20 22 24 65 6e 76 3a 53 79 73 74  >..## "$env:Syst
1e20: 65 6d 44 72 69 76 65 2f 70 72 6f 3c 74 61 62 3e  emDrive/pro<tab>
1e30: 2f 3c 74 61 62 3e 0d 0a 0d 0a 23 23 20 23 4f 70  /<tab>....## #Op
1e40: 65 72 61 74 6f 72 20 65 78 70 61 6e 73 69 6f 6e  erator expansion
1e50: 20 77 68 69 63 68 20 73 74 61 72 74 73 20 77 69   which starts wi
1e60: 74 68 20 27 2d 27 0d 0a 23 23 20 22 50 6f 77 65  th '-'..## "Powe
1e70: 72 22 2c 22 53 68 65 6c 6c 22 20 2d 6d 3c 74 61  r","Shell" -m<ta
1e80: 62 3e 20 22 50 6f 77 65 72 22 20 2d 72 3c 74 61  b> "Power" -r<ta
1e90: 62 3e 20 27 28 50 6f 77 29 28 65 72 29 27 2c 27  b> '(Pow)(er)','
1ea0: 24 31 64 24 32 27 0d 0a 23 23 20 31 2e 2e 39 20  $1d$2'..## 1..9 
1eb0: 2d 63 6f 3c 74 61 62 3e 20 35 0d 0a 0d 0a 23 23  -co<tab> 5....##
1ec0: 20 23 4b 65 79 77 6f 72 64 20 65 78 70 61 6e 73   #Keyword expans
1ed0: 69 6f 6e 0d 0a 23 23 20 66 75 3c 74 61 62 3e 20  ion..## fu<tab> 
1ee0: 74 65 73 74 20 7b 20 70 3c 74 61 62 3e 20 24 66  test { p<tab> $f
1ef0: 6f 6f 2c 20 24 62 61 72 20 29 20 62 3c 74 61 62  oo, $bar ) b<tab
1f00: 3e 20 22 66 6f 6f 22 20 7d 20 70 72 3c 74 61 62  > "foo" } pr<tab
1f10: 3e 20 24 5f 20 7d 20 65 6e 3c 74 61 62 3e 20 22  > $_ } en<tab> "
1f20: 24 62 61 72 22 20 7d 20 7d 0d 0a 0d 0a 23 23 20  $bar" } }....## 
1f30: 23 56 61 72 69 61 62 6c 65 20 6e 61 6d 65 20 65  #Variable name e
1f40: 78 70 61 6e 73 69 6f 6e 20 28 6f 6e 6c 79 20 67  xpansion (only g
1f50: 6c 6f 62 61 6c 20 73 63 6f 70 65 29 0d 0a 23 23  lobal scope)..##
1f60: 20 5b 43 6c 65 61 72 2d 56 61 72 69 61 62 6c 65   [Clear-Variable
1f70: 20 7c 20 47 65 74 2d 56 61 72 69 61 62 6c 65 20   | Get-Variable 
1f80: 7c 20 4e 65 77 2d 56 61 72 69 61 62 6c 65 20 7c  | New-Variable |
1f90: 20 52 65 6d 6f 76 65 2d 56 61 72 69 61 62 6c 65   Remove-Variable
1fa0: 20 7c 20 53 65 74 2d 56 61 72 69 61 62 6c 65 5d   | Set-Variable]
1fb0: 20 5b 2d 4e 61 6d 65 5d 20 3c 74 61 62 3e 0d 0a   [-Name] <tab>..
1fc0: 23 23 20 5b 43 6d 64 6c 65 74 20 7c 20 46 75 6e  ## [Cmdlet | Fun
1fd0: 63 74 69 6f 6e 20 7c 20 46 69 6c 74 65 72 20 7c  ction | Filter |
1fe0: 20 45 78 74 65 72 6e 61 6c 53 63 72 69 70 74 5d   ExternalScript]
1ff0: 20 2d 45 72 72 6f 72 56 61 72 69 61 62 6c 65 20   -ErrorVariable 
2000: 3c 74 61 62 3e 0d 0a 23 23 20 5b 43 6d 64 6c 65  <tab>..## [Cmdle
2010: 74 20 7c 20 46 75 6e 63 74 69 6f 6e 20 7c 20 46  t | Function | F
2020: 69 6c 74 65 72 20 7c 20 45 78 74 65 72 6e 61 6c  ilter | External
2030: 53 63 72 69 70 74 5d 20 2d 4f 75 74 56 61 72 69  Script] -OutVari
2040: 61 62 6c 65 20 3c 74 61 62 3e 0d 0a 23 23 20 54  able <tab>..## T
2050: 65 65 2d 4f 62 6a 65 63 74 20 2d 56 61 72 69 61  ee-Object -Varia
2060: 62 6c 65 20 3c 74 61 62 3e 0d 0a 23 23 20 20 67  ble <tab>..##  g
2070: 76 20 70 72 6f 3c 74 61 62 3e 2c 3c 74 61 62 3e  v pro<tab>,<tab>
2080: 0d 0a 23 23 20 20 52 65 6d 6f 76 65 2d 56 61 72  ..##  Remove-Var
2090: 69 61 62 6c 65 20 2d 4e 61 6d 65 20 6f 75 74 3c  iable -Name out<
20a0: 74 61 62 3e 2c 3c 74 61 62 3e 2c 70 73 3c 74 61  tab>,<tab>,ps<ta
20b0: 62 3e 0d 0a 23 23 20 20 2e 2e 2e 20 7c 20 2e 2e  b>..##  ... | ..
20c0: 2e 20 7c 20 74 65 65 20 2d 76 20 3c 74 61 62 3e  . | tee -v <tab>
20d0: 0d 0a 0d 0a 23 23 20 23 41 6c 69 61 73 20 6e 61  ....## #Alias na
20e0: 6d 65 20 65 78 70 61 6e 73 69 6f 6e 0d 0a 23 23  me expansion..##
20f0: 20 5b 47 65 74 2d 41 6c 69 61 73 20 7c 20 4e 65   [Get-Alias | Ne
2100: 77 2d 41 6c 69 61 73 20 7c 20 53 65 74 2d 41 6c  w-Alias | Set-Al
2110: 69 61 73 5d 20 5b 2d 4e 61 6d 65 5d 20 3c 74 61  ias] [-Name] <ta
2120: 62 3e 0d 0a 23 23 20 45 78 70 6f 72 74 2d 41 6c  b>..## Export-Al
2130: 69 61 73 20 2d 4e 61 6d 65 20 3c 74 61 62 3e 0d  ias -Name <tab>.
2140: 0a 23 23 20 20 47 65 74 2d 41 6c 69 61 73 20 69  .##  Get-Alias i
2150: 3c 74 61 62 3e 2c 65 3c 74 61 62 3e 2c 61 3c 74  <tab>,e<tab>,a<t
2160: 61 62 3e 0d 0a 23 23 20 20 65 70 61 6c 20 2d 6e  ab>..##  epal -n
2170: 20 66 6f 72 3c 74 61 62 3e 0d 0a 0d 0a 23 23 20   for<tab>....## 
2180: 23 50 72 6f 70 65 72 74 79 20 6e 61 6d 65 20 65  #Property name e
2190: 78 70 61 6e 73 69 6f 6e 20 77 69 74 68 20 2d 67  xpansion with -g
21a0: 72 6f 75 70 42 79 20 70 61 72 61 6d 65 74 65 72  roupBy parameter
21b0: 0d 0a 23 23 20 5b 46 6f 72 6d 61 74 2d 4c 69 73  ..## [Format-Lis
21c0: 74 20 7c 20 46 6f 72 6d 61 74 2d 43 75 73 74 6f  t | Format-Custo
21d0: 6d 20 7c 20 46 6f 72 6d 61 74 2d 54 61 62 6c 65  m | Format-Table
21e0: 20 7c 20 46 6f 72 6d 61 74 2d 57 69 64 65 5d 20   | Format-Wide] 
21f0: 2d 67 72 6f 75 70 42 79 20 3c 74 61 62 3e 0d 0a  -groupBy <tab>..
2200: 23 23 20 20 70 73 20 7c 20 66 74 20 2d 67 20 3c  ##  ps | ft -g <
2210: 74 61 62 3e 0d 0a 23 23 20 20 67 63 6d 20 7c 20  tab>..##  gcm | 
2220: 46 6f 72 6d 61 74 2d 57 69 64 65 20 2d 47 72 6f  Format-Wide -Gro
2230: 75 70 42 79 20 50 61 72 3c 74 61 62 3e 0d 0a 0d  upBy Par<tab>...
2240: 0a 23 23 20 23 54 79 70 65 20 61 63 63 65 6c 65  .## #Type accele
2250: 72 61 74 6f 72 73 20 65 78 70 61 6e 73 69 6f 6e  rators expansion
2260: 20 77 69 74 68 20 6e 6f 20 63 68 61 72 61 63 74   with no charact
2270: 6f 72 73 0d 0a 23 23 20 20 5b 3c 74 61 62 3e 0d  ors..##  [<tab>.
2280: 0a 23 23 20 20 4e 65 77 2d 4f 62 6a 65 63 74 20  .##  New-Object 
2290: 2d 74 79 70 65 6e 61 6d 65 20 3c 74 61 62 3e 0d  -typename <tab>.
22a0: 0a 23 23 20 20 4e 65 77 2d 4f 62 6a 65 63 74 20  .##  New-Object 
22b0: 3c 74 61 62 3e 0d 0a 0d 0a 23 23 20 23 20 46 69  <tab>....## # Fi
22c0: 6c 65 20 67 6c 6f 62 20 65 78 70 61 6e 73 69 6f  le glob expansio
22d0: 6e 20 77 69 74 68 20 27 40 27 0d 0a 23 23 20 20  n with '@'..##  
22e0: 6c 73 20 2a 2e 74 78 74 40 3c 74 61 62 3e 0d 0a  ls *.txt@<tab>..
22f0: 23 23 20 20 6c 73 20 66 69 6c 65 2e 74 78 74 2c  ##  ls file.txt,
2300: 20 66 6f 6f 31 2e 74 78 74 2c 20 27 62 61 72 60   foo1.txt, 'bar`
2310: 60 5b 31 60 60 5d 2e 74 78 74 27 2c 20 27 66 6f  `[1``].txt', 'fo
2320: 6f 20 62 61 72 20 2e 74 78 74 27 09 23 20 31 20  o bar .txt'.# 1 
2330: 3c 74 61 62 3e 20 65 78 70 61 6e 64 69 6e 67 20  <tab> expanding 
2340: 77 69 74 68 20 63 6f 6d 6d 61 0d 0a 23 23 20 20  with comma..##  
2350: 6c 73 20 2a 20 2d 46 69 6c 74 65 72 20 2a 2e 74  ls * -Filter *.t
2360: 78 74 09 09 09 09 09 09 23 20 32 20 3c 74 61 62  xt......# 2 <tab
2370: 3e 20 72 65 66 61 63 74 6f 72 69 6e 67 20 0d 0a  > refactoring ..
2380: 23 23 20 20 6c 73 20 2a 2e 74 78 74 09 09 09 09  ##  ls *.txt....
2390: 09 09 09 23 20 33 20 3c 74 61 62 3e 20 28 6f 72  ...# 3 <tab> (or
23a0: 20 31 20 3c 74 61 62 3e 20 26 20 31 20 3c 73 68   1 <tab> & 1 <sh
23b0: 69 66 74 3e 2b 3c 74 61 62 3e 29 20 72 65 74 75  ift>+<tab>) retu
23c0: 72 6e 20 6f 72 69 67 69 6e 61 6c 20 67 6c 6f 62  rn original glob
23d0: 20 70 61 74 74 65 72 6e 0d 0a 0d 0a 23 23 20 54   pattern....## T
23e0: 68 69 73 20 63 61 6e 20 61 6c 73 6f 20 75 73 65  his can also use
23f0: 20 27 5e 27 28 68 61 74 29 20 6f 72 20 27 7e 27   '^'(hat) or '~'
2400: 28 74 69 6c 64 65 29 20 66 6f 72 20 45 78 63 6c  (tilde) for Excl
2410: 75 64 69 6e 67 0d 0a 23 23 20 20 6c 73 20 3c 68  uding..##  ls <h
2420: 61 74 3e 2a 2e 74 78 74 40 3c 74 61 62 3e 0d 0a  at>*.txt@<tab>..
2430: 23 23 20 20 6c 73 20 66 6f 6f 2e 70 73 31 2c 20  ##  ls foo.ps1, 
2440: 27 62 61 72 60 60 5b 31 60 60 5d 2e 78 6d 6c 27  'bar``[1``].xml'
2450: 09 09 23 20 31 20 3c 74 61 62 3e 20 65 78 70 61  ..# 1 <tab> expa
2460: 6e 64 69 6e 67 20 77 69 74 68 20 63 6f 6d 6d 61  nding with comma
2470: 0d 0a 23 23 20 20 6c 73 20 2a 20 2d 46 69 6c 74  ..##  ls * -Filt
2480: 65 72 20 2a 20 2d 45 78 63 6c 75 64 69 6e 67 20  er * -Excluding 
2490: 2a 2e 74 78 74 09 09 23 20 32 20 3c 74 61 62 3e  *.txt..# 2 <tab>
24a0: 20 72 65 66 61 63 74 6f 72 69 6e 67 20 0d 0a 23   refactoring ..#
24b0: 23 20 20 2a 2e 74 78 74 3c 74 69 6c 64 65 3e 66  #  *.txt<tilde>f
24c0: 6f 6f 2a 3c 74 69 6c 64 65 3e 62 61 72 2a 40 3c  oo*<tilde>bar*@<
24d0: 74 61 62 3e 0d 0a 23 23 20 20 6c 73 20 66 69 6c  tab>..##  ls fil
24e0: 65 2e 74 78 74 09 09 09 09 09 23 20 31 20 3c 74  e.txt.....# 1 <t
24f0: 61 62 3e 20 65 78 70 61 6e 64 69 6e 67 20 77 69  ab> expanding wi
2500: 74 68 20 63 6f 6d 6d 61 0d 0a 23 23 20 20 6c 73  th comma..##  ls
2510: 20 2a 20 2d 46 69 6c 74 65 72 20 2a 2e 74 78 74   * -Filter *.txt
2520: 20 2d 45 78 63 6c 75 64 69 6e 67 20 66 6f 6f 2a   -Excluding foo*
2530: 2c 20 62 61 72 2a 09 23 20 32 20 3c 74 61 62 3e  , bar*.# 2 <tab>
2540: 20 72 65 66 61 63 74 6f 72 69 6e 67 20 0d 0a 0d   refactoring ...
2550: 0a 23 23 20 23 20 50 6f 72 74 65 64 20 68 69 73  .## # Ported his
2560: 74 6f 72 79 20 65 78 70 61 6e 73 69 6f 6e 20 66  tory expansion f
2570: 72 6f 6d 20 56 32 43 54 50 33 20 54 61 62 45 78  rom V2CTP3 TabEx
2580: 70 61 6e 73 69 6f 6e 20 77 69 74 68 20 27 23 27  pansion with '#'
2590: 20 28 20 23 3c 70 61 74 74 65 72 6e 3e 20 6f 72   ( #<pattern> or
25a0: 20 23 3c 69 64 3e 20 29 0d 0a 23 23 20 20 6c 73   #<id> )..##  ls
25b0: 20 2a 20 2d 46 69 6c 74 65 72 20 2a 20 2d 45 78   * -Filter * -Ex
25c0: 63 6c 75 64 69 6e 67 20 66 6f 6f 2a 2c 20 62 61  cluding foo*, ba
25d0: 72 2a 3c 45 6e 74 65 72 3e 0d 0a 23 23 20 20 23  r*<Enter>..##  #
25e0: 6c 73 3c 74 61 62 3e 0d 0a 23 23 20 20 23 31 3c  ls<tab>..##  #1<
25f0: 74 61 62 3e 0d 0a 0d 0a 23 23 20 23 20 43 6f 6d  tab>....## # Com
2600: 6d 61 6e 64 20 62 75 66 66 65 72 20 73 74 61 63  mand buffer stac
2610: 6b 20 77 69 74 68 20 27 3b 27 28 73 65 6d 69 63  k with ';'(semic
2620: 6f 6c 6f 6e 29 0d 0a 23 23 20 20 6c 73 20 2a 20  olon)..##  ls * 
2630: 2d 46 69 6c 74 65 72 20 2a 20 2d 45 78 63 6c 75  -Filter * -Exclu
2640: 64 69 6e 67 20 66 6f 6f 2a 2c 20 62 61 72 2a 3c  ding foo*, bar*<
2650: 73 65 6d 69 63 6f 6c 6f 6e 3e 3c 74 61 62 3e 20  semicolon><tab> 
2660: 23 20 70 75 73 68 20 63 6f 6d 6d 61 6e 64 31 0d  # push command1.
2670: 0a 23 23 20 20 65 63 68 6f 20 22 50 6f 77 65 72  .##  echo "Power
2680: 53 68 65 6c 6c 22 3c 73 65 6d 69 63 6f 6c 6f 6e  Shell"<semicolon
2690: 3e 3c 74 61 62 3e 20 23 20 70 75 73 68 20 63 6f  ><tab> # push co
26a0: 6d 6d 61 6e 64 32 0d 0a 23 23 20 20 67 65 74 2d  mmand2..##  get-
26b0: 70 72 6f 63 65 73 73 3c 73 65 6d 69 63 6f 6c 6f  process<semicolo
26c0: 6e 3e 3c 74 61 62 3e 20 23 20 70 75 73 68 20 63  n><tab> # push c
26d0: 6f 6d 6d 61 6e 64 33 0d 0a 23 23 20 20 7b 43 4f  ommand3..##  {CO
26e0: 4d 4d 41 4e 44 7d 3c 45 6e 74 65 72 3e 20 23 20  MMAND}<Enter> # 
26f0: 65 78 65 63 75 74 65 20 61 6e 6f 74 68 65 72 20  execute another 
2700: 63 6f 6d 6d 61 6e 64 20 0d 0a 23 23 20 20 67 65  command ..##  ge
2710: 74 2d 70 72 6f 63 65 73 73 20 23 20 41 75 74 6f  t-process # Auto
2720: 20 70 6f 70 20 63 6f 6d 6d 61 6e 64 33 20 66 72   pop command3 fr
2730: 6f 6d 20 73 74 61 63 6b 20 62 79 20 4c 49 46 4f  om stack by LIFO
2740: 0d 0a 23 23 20 54 68 69 73 20 63 61 6e 20 61 6c  ..## This can al
2750: 73 6f 20 68 61 6e 64 2d 6f 70 65 72 61 74 65 64  so hand-operated
2760: 20 70 6f 70 20 77 69 74 68 20 27 3b 2c 27 28 73   pop with ';,'(s
2770: 65 6d 69 63 6f 6c 6f 6e 26 63 6f 6d 6d 61 29 20  emicolon&comma) 
2780: 6f 72 20 27 3b 3a 27 28 73 65 6d 69 63 6f 6c 6f  or ';:'(semicolo
2790: 6e 26 63 6f 6c 6f 6e 29 0d 0a 23 23 20 20 67 65  n&colon)..##  ge
27a0: 74 2d 70 72 6f 63 65 73 73 3b 20 3c 73 65 6d 69  t-process; <semi
27b0: 63 6f 6c 6f 6e 3e 3c 63 6f 6d 6d 61 3e 3c 74 61  colon><comma><ta
27c0: 62 3e 0d 0a 23 23 20 20 67 65 74 2d 70 72 6f 63  b>..##  get-proc
27d0: 65 73 73 3b 20 65 63 68 6f 20 22 50 6f 77 65 72  ess; echo "Power
27e0: 53 68 65 6c 6c 22 20 23 20 70 6f 70 20 63 6f 6d  Shell" # pop com
27f0: 6d 61 6e 64 32 20 66 72 6f 6d 20 73 74 61 63 6b  mand2 from stack
2800: 20 62 79 20 4c 49 46 4f 0d 0a 0d 0a 23 23 20 23   by LIFO....## #
2810: 20 46 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 20 65   Function name e
2820: 78 70 61 6e 73 69 6f 6e 20 61 66 74 65 72 20 27  xpansion after '
2830: 66 75 6e 63 74 69 6f 6e 27 20 6f 72 20 27 66 69  function' or 'fi
2840: 6c 74 65 72 27 20 6b 65 79 77 6f 72 64 73 0d 0a  lter' keywords..
2850: 23 23 20 66 75 6e 63 74 69 6f 6e 20 63 6c 3c 74  ## function cl<t
2860: 61 62 3e 0d 0a 0d 0a 23 23 20 23 53 77 69 74 63  ab>....## #Switc
2870: 68 20 73 79 6e 74 61 78 20 6f 70 74 69 6f 6e 20  h syntax option 
2880: 65 78 70 61 6e 73 69 6f 6e 0d 0a 23 23 20 20 73  expansion..##  s
2890: 77 69 74 63 68 20 2d 77 3c 74 61 62 3e 20 2d 66  witch -w<tab> -f
28a0: 3c 74 61 62 3e 0d 0a 0d 0a 23 23 20 23 42 65 74  <tab>....## #Bet
28b0: 74 65 72 20 70 6f 77 65 72 73 68 65 6c 6c 2e 65  ter powershell.e
28c0: 78 65 20 6f 70 74 69 6f 6e 20 65 78 70 61 6e 73  xe option expans
28d0: 69 6f 6e 20 77 69 74 68 20 27 2d 27 0d 0a 23 23  ion with '-'..##
28e0: 20 20 70 6f 77 65 72 73 68 65 6c 6c 20 2d 6e 6f    powershell -no
28f0: 3c 74 61 62 3e 20 2d 3c 74 61 62 3e 20 2d 65 6e  <tab> -<tab> -en
2900: 3c 74 61 62 3e 0d 0a 0d 0a 23 23 20 23 41 20 70  <tab>....## #A p
2910: 61 72 74 20 6f 66 20 50 6f 77 65 72 53 68 65 6c  art of PowerShel
2920: 6c 20 61 74 74 72 69 62 75 74 65 73 20 65 78 70  l attributes exp
2930: 61 6e 73 69 6f 6e 20 28 20 43 6d 64 6c 65 74 42  ansion ( CmdletB
2940: 69 6e 64 69 6e 67 2c 20 50 61 72 61 6d 65 74 65  inding, Paramete
2950: 72 2c 20 41 6c 69 61 73 2c 20 56 61 6c 69 64 61  r, Alias, Valida
2960: 74 65 2a 2c 20 41 6c 6c 6f 77 2a 20 29 0d 0a 23  te*, Allow* )..#
2970: 23 20 20 5b 70 61 72 3c 74 61 62 3e 0d 0a 23 23  #  [par<tab>..##
2980: 20 20 5b 63 6d 64 3c 74 61 62 3e 0d 0a 0d 0a 23    [cmd<tab>....#
2990: 23 20 23 4d 65 6d 62 65 72 20 65 78 70 61 6e 73  # #Member expans
29a0: 69 6f 6e 20 66 6f 72 20 43 6d 64 6c 65 74 42 69  ion for CmdletBi
29b0: 6e 64 69 6e 67 20 61 6e 64 20 50 61 72 61 6d 65  nding and Parame
29c0: 74 65 72 20 61 74 74 72 69 62 75 74 65 73 0d 0a  ter attributes..
29d0: 23 23 20 20 5b 50 61 72 61 6d 65 74 65 72 28 6d  ##  [Parameter(m
29e0: 61 6e 3c 74 61 62 3e 2c 3c 74 61 62 3e 31 2c 76  an<tab>,<tab>1,v
29f0: 61 6c 3c 74 61 62 3e 24 74 72 75 65 29 5d 0d 0a  al<tab>$true)]..
2a00: 23 23 20 20 5b 43 6d 64 6c 65 74 42 69 6e 64 69  ##  [CmdletBindi
2a10: 6e 67 28 20 3c 74 61 62 3e 22 66 6f 6f 22 2c 20  ng( <tab>"foo", 
2a20: 73 75 3c 74 61 62 3e 24 74 72 75 65 29 5d 0d 0a  su<tab>$true)]..
2a30: 0d 0a 23 23 20 23 53 65 76 65 72 61 6c 20 63 75  ..## #Several cu
2a40: 72 72 65 6e 74 20 64 61 74 65 2f 74 69 6d 65 20  rrent date/time 
2a50: 66 6f 72 6d 61 74 73 20 77 69 74 68 20 43 74 72  formats with Ctr
2a60: 6c 2b 44 0d 0a 23 23 20 20 3c 43 74 72 6c 2b 44  l+D..##  <Ctrl+D
2a70: 3e 3c 74 61 62 3e 3c 74 61 62 3e 3c 74 61 62 3e  ><tab><tab><tab>
2a80: 3c 74 61 62 3e 3c 74 61 62 3e 2e 2e 2e 0d 0a 0d  <tab><tab>......
2a90: 0a 23 23 20 23 48 61 6e 64 2d 6f 70 65 72 61 74  .## #Hand-operat
2aa0: 65 64 20 70 6f 70 20 66 72 6f 6d 20 63 6f 6d 6d  ed pop from comm
2ab0: 61 6e 64 20 62 75 66 66 65 72 20 77 69 74 68 20  and buffer with 
2ac0: 43 74 72 6c 2b 50 20 28 74 68 69 73 20 69 73 20  Ctrl+P (this is 
2ad0: 61 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 20 77  also available w
2ae0: 69 74 68 20 27 3b 3a 27 20 6f 72 20 27 3b 2c 27  ith ';:' or ';,'
2af0: 29 0d 0a 23 23 20 20 3c 63 6f 6d 6d 61 6e 64 3e  )..##  <command>
2b00: 3b 3c 74 61 62 3e 20 23 20 70 75 73 68 20 63 6f  ;<tab> # push co
2b10: 6d 6d 61 6e 64 0d 0a 23 23 20 20 3c 43 74 72 6c  mmand..##  <Ctrl
2b20: 2b 44 3e 3c 74 61 62 3e 20 23 20 70 6f 70 0d 0a  +D><tab> # pop..
2b30: 0d 0a 23 23 20 23 50 61 73 74 65 20 63 6c 69 70  ..## #Paste clip
2b40: 62 6f 61 72 64 20 77 69 74 68 20 43 74 72 6c 2b  board with Ctrl+
2b50: 56 0d 0a 23 23 20 20 3c 43 74 72 6c 2b 56 3e 3c  V..##  <Ctrl+V><
2b60: 74 61 62 3e 0d 0a 0d 0a 23 23 23 20 47 65 6e 65  tab>....### Gene
2b70: 72 61 74 65 20 50 72 6f 67 49 44 73 20 6c 69 73  rate ProgIDs lis
2b80: 74 2e 2e 2e 0d 0a 69 66 20 28 20 54 65 73 74 2d  t.....if ( Test-
2b90: 50 61 74 68 20 24 50 53 48 4f 4d 45 5c 50 72 6f  Path $PSHOME\Pro
2ba0: 67 49 44 73 2e 74 78 74 20 29 0d 0a 7b 0d 0a 24  gIDs.txt )..{..$
2bb0: 5f 50 72 6f 67 49 44 20 3d 20 74 79 70 65 20 24  _ProgID = type $
2bc0: 50 53 48 4f 4d 45 5c 50 72 6f 67 49 44 73 2e 74  PSHOME\ProgIDs.t
2bd0: 78 74 20 2d 52 65 61 64 43 6f 75 6e 74 20 30 0d  xt -ReadCount 0.
2be0: 0a 7d 0d 0a 65 6c 73 65 0d 0a 7b 0d 0a 24 5f 48  .}..else..{..$_H
2bf0: 4b 43 52 20 3d 20 5b 4d 69 63 72 6f 73 6f 66 74  KCR = [Microsoft
2c00: 2e 57 69 6e 33 32 2e 52 65 67 69 73 74 72 79 5d  .Win32.Registry]
2c10: 3a 3a 43 6c 61 73 73 65 73 52 6f 6f 74 2e 4f 70  ::ClassesRoot.Op
2c20: 65 6e 53 75 62 4b 65 79 28 22 43 4c 53 49 44 5c  enSubKey("CLSID\
2c30: 22 29 0d 0a 24 5f 50 72 6f 67 49 44 20 3d 20 4e  ")..$_ProgID = N
2c40: 65 77 2d 4f 62 6a 65 63 74 20 28 20 5b 53 79 73  ew-Object ( [Sys
2c50: 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e  tem.Collections.
2c60: 47 65 6e 65 72 69 63 2e 4c 69 73 74 60 60 31 5d  Generic.List``1]
2c70: 2e 4d 61 6b 65 47 65 6e 65 72 69 63 54 79 70 65  .MakeGenericType
2c80: 28 5b 53 74 72 69 6e 67 5d 29 20 29 0d 0a 66 6f  ([String]) )..fo
2c90: 72 65 61 63 68 20 28 20 24 5f 73 75 62 6b 65 79  reach ( $_subkey
2ca0: 20 69 6e 20 24 5f 48 4b 43 52 2e 47 65 74 53 75   in $_HKCR.GetSu
2cb0: 62 4b 65 79 4e 61 6d 65 73 28 29 20 29 0d 0a 7b  bKeyNames() )..{
2cc0: 0d 0a 66 6f 72 65 61 63 68 20 28 20 24 5f 69 20  ..foreach ( $_i 
2cd0: 69 6e 20 5b 4d 69 63 72 6f 73 6f 66 74 2e 57 69  in [Microsoft.Wi
2ce0: 6e 33 32 2e 52 65 67 69 73 74 72 79 5d 3a 3a 43  n32.Registry]::C
2cf0: 6c 61 73 73 65 73 52 6f 6f 74 2e 4f 70 65 6e 53  lassesRoot.OpenS
2d00: 75 62 4b 65 79 28 22 43 4c 53 49 44 5c 24 5f 73  ubKey("CLSID\$_s
2d10: 75 62 6b 65 79 5c 50 72 6f 67 49 44 22 29 20 29  ubkey\ProgID") )
2d20: 0d 0a 7b 0d 0a 69 66 20 28 24 5f 69 20 2d 6e 65  ..{..if ($_i -ne
2d30: 20 24 6e 75 6c 6c 29 0d 0a 7b 0d 0a 24 5f 50 72   $null)..{..$_Pr
2d40: 6f 67 49 44 2e 41 64 64 28 24 5f 69 2e 47 65 74  ogID.Add($_i.Get
2d50: 56 61 6c 75 65 28 22 22 29 29 0d 0a 7d 0d 0a 7d  Value(""))..}..}
2d60: 0d 0a 7d 0d 0a 27 24 5f 50 72 6f 67 49 44 20 77  ..}..'$_ProgID w
2d70: 61 73 20 75 70 64 61 74 65 64 2e 2e 2e 27 20 7c  as updated...' |
2d80: 20 4f 75 74 2d 48 6f 73 74 0d 0a 24 5f 50 72 6f   Out-Host..$_Pro
2d90: 67 49 44 20 3d 20 24 5f 50 72 6f 67 49 44 7c 73  gID = $_ProgID|s
2da0: 6f 72 74 20 2d 55 6e 69 71 75 65 0d 0a 0d 0a 53  ort -Unique....S
2db0: 65 74 2d 43 6f 6e 74 65 6e 74 20 2d 56 61 6c 75  et-Content -Valu
2dc0: 65 20 24 5f 50 72 6f 67 49 44 20 2d 50 61 74 68  e $_ProgID -Path
2dd0: 20 24 50 53 48 4f 4d 45 5c 50 72 6f 67 49 44 73   $PSHOME\ProgIDs
2de0: 2e 74 78 74 20 2d 56 65 72 62 6f 73 65 0d 0a 7d  .txt -Verbose..}
2df0: 0d 0a 0d 0a 23 23 23 20 47 65 6e 65 72 61 74 65  ....### Generate
2e00: 20 54 79 70 65 4e 61 6d 65 73 20 6c 69 73 74 2e   TypeNames list.
2e10: 2e 2e 0d 0a 0d 0a 69 66 20 28 20 54 65 73 74 2d  ......if ( Test-
2e20: 50 61 74 68 20 24 50 53 48 4f 4d 45 5c 54 79 70  Path $PSHOME\Typ
2e30: 65 4e 61 6d 65 73 2e 74 78 74 20 29 0d 0a 7b 0d  eNames.txt )..{.
2e40: 0a 24 5f 54 79 70 65 4e 61 6d 65 73 20 3d 20 74  .$_TypeNames = t
2e50: 79 70 65 20 24 50 53 48 4f 4d 45 5c 54 79 70 65  ype $PSHOME\Type
2e60: 4e 61 6d 65 73 2e 74 78 74 20 2d 52 65 61 64 43  Names.txt -ReadC
2e70: 6f 75 6e 74 20 30 0d 0a 7d 0d 0a 65 6c 73 65 0d  ount 0..}..else.
2e80: 0a 7b 0d 0a 24 5f 54 79 70 65 4e 61 6d 65 73 20  .{..$_TypeNames 
2e90: 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 28 20 5b  = New-Object ( [
2ea0: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
2eb0: 6e 73 2e 47 65 6e 65 72 69 63 2e 4c 69 73 74 60  ns.Generic.List`
2ec0: 60 31 5d 2e 4d 61 6b 65 47 65 6e 65 72 69 63 54  `1].MakeGenericT
2ed0: 79 70 65 28 5b 53 74 72 69 6e 67 5d 29 20 29 0d  ype([String]) ).
2ee0: 0a 66 6f 72 65 61 63 68 20 28 20 24 5f 61 73 6d  .foreach ( $_asm
2ef0: 20 69 6e 20 5b 41 70 70 44 6f 6d 61 69 6e 5d 3a   in [AppDomain]:
2f00: 3a 43 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 47  :CurrentDomain.G
2f10: 65 74 41 73 73 65 6d 62 6c 69 65 73 28 29 20 29  etAssemblies() )
2f20: 0d 0a 7b 0d 0a 66 6f 72 65 61 63 68 20 28 20 24  ..{..foreach ( $
2f30: 5f 74 79 70 65 20 69 6e 20 24 5f 61 73 6d 2e 47  _type in $_asm.G
2f40: 65 74 54 79 70 65 73 28 29 20 29 0d 0a 7b 0d 0a  etTypes() )..{..
2f50: 24 5f 54 79 70 65 4e 61 6d 65 73 2e 41 64 64 28  $_TypeNames.Add(
2f60: 24 5f 74 79 70 65 2e 46 75 6c 6c 4e 61 6d 65 29  $_type.FullName)
2f70: 0d 0a 7d 0d 0a 7d 0d 0a 27 24 5f 54 79 70 65 4e  ..}..}..'$_TypeN
2f80: 61 6d 65 73 20 77 61 73 20 75 70 64 61 74 65 64  ames was updated
2f90: 2e 2e 2e 27 20 7c 20 4f 75 74 2d 48 6f 73 74 0d  ...' | Out-Host.
2fa0: 0a 24 5f 54 79 70 65 4e 61 6d 65 73 20 3d 20 24  .$_TypeNames = $
2fb0: 5f 54 79 70 65 4e 61 6d 65 73 20 7c 20 73 6f 72  _TypeNames | sor
2fc0: 74 20 2d 55 6e 69 71 75 65 0d 0a 0d 0a 53 65 74  t -Unique....Set
2fd0: 2d 43 6f 6e 74 65 6e 74 20 2d 56 61 6c 75 65 20  -Content -Value 
2fe0: 24 5f 54 79 70 65 4e 61 6d 65 73 20 2d 50 61 74  $_TypeNames -Pat
2ff0: 68 20 24 50 53 48 4f 4d 45 5c 54 79 70 65 4e 61  h $PSHOME\TypeNa
3000: 6d 65 73 2e 74 78 74 20 2d 56 65 72 62 6f 73 65  mes.txt -Verbose
3010: 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 54 65 73 74  ..}....if ( Test
3020: 2d 50 61 74 68 20 24 50 53 48 4f 4d 45 5c 54 79  -Path $PSHOME\Ty
3030: 70 65 4e 61 6d 65 73 5f 53 79 73 74 65 6d 2e 74  peNames_System.t
3040: 78 74 20 29 0d 0a 7b 0d 0a 24 5f 54 79 70 65 4e  xt )..{..$_TypeN
3050: 61 6d 65 73 5f 53 79 73 74 65 6d 20 3d 20 74 79  ames_System = ty
3060: 70 65 20 24 50 53 48 4f 4d 45 5c 54 79 70 65 4e  pe $PSHOME\TypeN
3070: 61 6d 65 73 5f 53 79 73 74 65 6d 2e 74 78 74 20  ames_System.txt 
3080: 2d 52 65 61 64 43 6f 75 6e 74 20 30 0d 0a 7d 0d  -ReadCount 0..}.
3090: 0a 65 6c 73 65 0d 0a 7b 0d 0a 24 5f 54 79 70 65  .else..{..$_Type
30a0: 4e 61 6d 65 73 5f 53 79 73 74 65 6d 20 3d 20 24  Names_System = $
30b0: 5f 54 79 70 65 4e 61 6d 65 73 20 2d 6c 69 6b 65  _TypeNames -like
30c0: 20 22 53 79 73 74 65 6d 2e 2a 22 20 2d 72 65 70   "System.*" -rep
30d0: 6c 61 63 65 20 27 5e 53 79 73 74 65 6d 5c 2e 27  lace '^System\.'
30e0: 0d 0a 27 24 5f 54 79 70 65 4e 61 6d 65 73 5f 53  ..'$_TypeNames_S
30f0: 79 73 74 65 6d 20 77 61 73 20 75 70 64 61 74 65  ystem was update
3100: 64 2e 2e 2e 27 20 7c 20 4f 75 74 2d 48 6f 73 74  d...' | Out-Host
3110: 0d 0a 53 65 74 2d 43 6f 6e 74 65 6e 74 20 2d 56  ..Set-Content -V
3120: 61 6c 75 65 20 24 5f 54 79 70 65 4e 61 6d 65 73  alue $_TypeNames
3130: 5f 53 79 73 74 65 6d 20 2d 50 61 74 68 20 24 50  _System -Path $P
3140: 53 48 4f 4d 45 5c 54 79 70 65 4e 61 6d 65 73 5f  SHOME\TypeNames_
3150: 53 79 73 74 65 6d 2e 74 78 74 20 2d 56 65 72 62  System.txt -Verb
3160: 6f 73 65 0d 0a 7d 0d 0a 0d 0a 23 23 23 20 47 65  ose..}....### Ge
3170: 6e 65 72 61 74 65 20 57 4d 49 43 6c 61 73 73 65  nerate WMIClasse
3180: 73 20 6c 69 73 74 2e 2e 2e 0d 0a 69 66 20 28 20  s list.....if ( 
3190: 54 65 73 74 2d 50 61 74 68 20 24 50 53 48 4f 4d  Test-Path $PSHOM
31a0: 45 5c 57 4d 49 43 6c 61 73 73 65 73 2e 74 78 74  E\WMIClasses.txt
31b0: 20 29 0d 0a 7b 0d 0a 24 5f 57 4d 49 43 6c 61 73   )..{..$_WMIClas
31c0: 73 65 73 20 3d 20 74 79 70 65 20 24 50 53 48 4f  ses = type $PSHO
31d0: 4d 45 5c 57 4d 49 43 6c 61 73 73 65 73 2e 74 78  ME\WMIClasses.tx
31e0: 74 20 2d 52 65 61 64 43 6f 75 6e 74 20 30 0d 0a  t -ReadCount 0..
31f0: 7d 0d 0a 65 6c 73 65 0d 0a 7b 0d 0a 24 5f 57 4d  }..else..{..$_WM
3200: 49 43 6c 61 73 73 65 73 20 3d 20 4e 65 77 2d 4f  IClasses = New-O
3210: 62 6a 65 63 74 20 28 20 5b 53 79 73 74 65 6d 2e  bject ( [System.
3220: 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65  Collections.Gene
3230: 72 69 63 2e 4c 69 73 74 60 60 31 5d 2e 4d 61 6b  ric.List``1].Mak
3240: 65 47 65 6e 65 72 69 63 54 79 70 65 28 5b 53 74  eGenericType([St
3250: 72 69 6e 67 5d 29 20 29 0d 0a 66 6f 72 65 61 63  ring]) )..foreac
3260: 68 20 28 20 24 5f 63 6c 61 73 73 20 69 6e 20 67  h ( $_class in g
3270: 77 6d 69 20 2d 4c 69 73 74 20 29 0d 0a 7b 0d 0a  wmi -List )..{..
3280: 24 5f 57 4d 49 43 6c 61 73 73 65 73 2e 41 64 64  $_WMIClasses.Add
3290: 28 24 5f 63 6c 61 73 73 2e 4e 61 6d 65 29 0d 0a  ($_class.Name)..
32a0: 7d 0d 0a 24 5f 57 4d 49 43 6c 61 73 73 65 73 20  }..$_WMIClasses 
32b0: 3d 20 24 5f 57 4d 49 43 6c 61 73 73 65 73 20 7c  = $_WMIClasses |
32c0: 20 73 6f 72 74 20 2d 55 6e 69 71 75 65 0d 0a 27   sort -Unique..'
32d0: 24 5f 57 4d 49 43 6c 61 73 73 65 73 20 77 61 73  $_WMIClasses was
32e0: 20 75 70 64 61 74 65 64 2e 2e 2e 27 20 7c 20 4f   updated...' | O
32f0: 75 74 2d 48 6f 73 74 0d 0a 53 65 74 2d 43 6f 6e  ut-Host..Set-Con
3300: 74 65 6e 74 20 2d 56 61 6c 75 65 20 24 5f 57 4d  tent -Value $_WM
3310: 49 43 6c 61 73 73 65 73 20 2d 50 61 74 68 20 24  IClasses -Path $
3320: 50 53 48 4f 4d 45 5c 57 4d 49 43 6c 61 73 73 65  PSHOME\WMIClasse
3330: 73 2e 74 78 74 20 2d 56 65 72 62 6f 73 65 0d 0a  s.txt -Verbose..
3340: 7d 0d 0a 0d 0a 5b 52 65 66 6c 65 63 74 69 6f 6e  }....[Reflection
3350: 2e 41 73 73 65 6d 62 6c 79 5d 3a 3a 4c 6f 61 64  .Assembly]::Load
3360: 57 69 74 68 50 61 72 74 69 61 6c 4e 61 6d 65 28  WithPartialName(
3370: 20 22 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73   "System.Windows
3380: 2e 46 6f 72 6d 73 22 20 29 20 7c 20 4f 75 74 2d  .Forms" ) | Out-
3390: 4e 75 6c 6c 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 63  Null..$global:_c
33a0: 6d 64 73 74 61 63 6b 20 3d 20 4e 65 77 2d 4f 62  mdstack = New-Ob
33b0: 6a 65 63 74 20 43 6f 6c 6c 65 63 74 69 6f 6e 73  ject Collections
33c0: 2e 53 74 61 63 6b 0d 0a 24 67 6c 6f 62 61 6c 3a  .Stack..$global:
33d0: 5f 73 6e 61 70 69 6e 20 3d 20 24 6e 75 6c 6c 0d  _snapin = $null.
33e0: 0a 24 67 6c 6f 62 61 6c 3a 5f 54 79 70 65 41 63  .$global:_TypeAc
33f0: 63 65 6c 65 72 61 74 6f 72 73 20 3d 20 5b 74 79  celerators = [ty
3400: 70 65 5d 3a 3a 67 65 74 74 79 70 65 28 22 53 79  pe]::gettype("Sy
3410: 73 74 65 6d 2e 4d 61 6e 61 67 65 6d 65 6e 74 2e  stem.Management.
3420: 41 75 74 6f 6d 61 74 69 6f 6e 2e 54 79 70 65 41  Automation.TypeA
3430: 63 63 65 6c 65 72 61 74 6f 72 73 22 29 3a 3a 67  ccelerators")::g
3440: 65 74 2e 6b 65 79 73 20 7c 20 73 6f 72 74 0d 0a  et.keys | sort..
3450: 0d 0a 69 65 78 20 28 40 27 0d 0a 66 75 6e 63 74  ..iex (@'..funct
3460: 69 6f 6e 20 70 72 6f 6d 70 74 20 7b 0d 0a 69 66  ion prompt {..if
3470: 20 28 24 5f 63 6d 64 73 74 61 63 6b 2e 43 6f 75   ($_cmdstack.Cou
3480: 6e 74 20 2d 67 74 20 30 29 20 7b 0d 0a 24 6c 69  nt -gt 0) {..$li
3490: 6e 65 20 3d 20 24 67 6c 6f 62 61 6c 3a 5f 63 6d  ne = $global:_cm
34a0: 64 73 74 61 63 6b 2e 50 6f 70 28 29 20 2d 72 65  dstack.Pop() -re
34b0: 70 6c 61 63 65 20 27 28 5b 5b 5c 5d 5c 28 5c 29  place '([[\]\(\)
34c0: 2b 7b 7d 3f 7e 25 5d 29 27 2c 27 7b 24 31 7d 27  +{}?~%])','{$1}'
34d0: 0d 0a 5b 53 79 73 74 65 6d 2e 57 69 6e 64 6f 77  ..[System.Window
34e0: 73 2e 46 6f 72 6d 73 2e 53 65 6e 64 4b 65 79 73  s.Forms.SendKeys
34f0: 5d 3a 3a 53 65 6e 64 57 61 69 74 28 24 6c 69 6e  ]::SendWait($lin
3500: 65 29 0d 0a 7d 0d 0a 27 40 20 2b 20 40 22 0d 0a  e)..}..'@ + @"..
3510: 24 7b 66 75 6e 63 74 69 6f 6e 3a 70 72 6f 6d 70  ${function:promp
3520: 74 7d 0d 0a 7d 0d 0a 22 40 29 0d 0a 0d 0a 66 75  t}..}.."@)....fu
3530: 6e 63 74 69 6f 6e 20 57 72 69 74 65 2d 43 6c 61  nction Write-Cla
3540: 73 73 4e 61 6d 65 73 20 28 20 24 64 61 74 61 2c  ssNames ( $data,
3550: 20 24 69 2c 20 24 70 72 65 66 69 78 3d 27 27 2c   $i, $prefix='',
3560: 20 24 73 65 70 3d 27 2e 27 20 29 0d 0a 7b 0d 0a   $sep='.' )..{..
3570: 24 70 72 65 49 74 65 6d 20 3d 20 22 22 0d 0a 66  $preItem = ""..f
3580: 6f 72 65 61 63 68 20 28 20 24 63 6c 61 73 73 20  oreach ( $class 
3590: 69 6e 20 24 64 61 74 61 20 2d 6c 69 6b 65 20 24  in $data -like $
35a0: 5f 6f 70 74 20 29 0d 0a 7b 0d 0a 24 49 74 65 6d  _opt )..{..$Item
35b0: 20 3d 20 24 63 6c 61 73 73 2e 53 70 6c 69 74 28   = $class.Split(
35c0: 24 73 65 70 29 0d 0a 69 66 20 28 20 24 70 72 65  $sep)..if ( $pre
35d0: 49 74 65 6d 20 2d 6e 65 20 24 49 74 65 6d 5b 24  Item -ne $Item[$
35e0: 69 5d 20 29 0d 0a 7b 0d 0a 69 66 20 28 20 24 69  i] )..{..if ( $i
35f0: 2b 31 20 2d 65 71 20 24 49 74 65 6d 2e 43 6f 75  +1 -eq $Item.Cou
3600: 6e 74 20 29 0d 0a 7b 0d 0a 69 66 20 28 20 24 70  nt )..{..if ( $p
3610: 72 65 66 69 78 20 2d 65 71 20 22 5b 22 20 29 0d  refix -eq "[" ).
3620: 0a 7b 0d 0a 24 73 75 66 66 69 78 20 3d 20 22 5d  .{..$suffix = "]
3630: 22 0d 0a 7d 0d 0a 65 6c 73 65 69 66 20 28 20 24  "..}..elseif ( $
3640: 73 65 70 20 2d 65 71 20 22 5f 22 20 29 0d 0a 7b  sep -eq "_" )..{
3650: 0d 0a 24 73 75 66 66 69 78 20 3d 20 22 22 0d 0a  ..$suffix = ""..
3660: 7d 0d 0a 65 6c 73 65 0d 0a 7b 0d 0a 24 73 75 66  }..else..{..$suf
3670: 66 69 78 20 3d 20 22 20 22 0d 0a 7d 0d 0a 7d 0d  fix = " "..}..}.
3680: 0a 65 6c 73 65 0d 0a 7b 0d 0a 24 73 75 66 66 69  .else..{..$suffi
3690: 78 20 3d 20 22 22 0d 0a 7d 0d 0a 24 70 72 65 66  x = ""..}..$pref
36a0: 69 78 20 2b 20 24 5f 6f 70 74 2e 53 75 62 73 74  ix + $_opt.Subst
36b0: 72 69 6e 67 28 30 2c 20 24 5f 6f 70 74 2e 4c 61  ring(0, $_opt.La
36c0: 73 74 49 6e 64 65 78 4f 66 28 24 73 65 70 29 2b  stIndexOf($sep)+
36d0: 31 29 20 2b 20 24 49 74 65 6d 5b 24 69 5d 20 2b  1) + $Item[$i] +
36e0: 20 24 73 75 66 66 69 78 0d 0a 0d 0a 24 70 72 65   $suffix....$pre
36f0: 49 74 65 6d 20 3d 20 24 49 74 65 6d 5b 24 69 5d  Item = $Item[$i]
3700: 0d 0a 7d 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a 66 75 6e  ..}..}..}....fun
3710: 63 74 69 6f 6e 20 47 65 74 2d 50 69 70 65 4c 69  ction Get-PipeLi
3720: 6e 65 4f 62 6a 65 63 74 20 7b 0d 0a 0d 0a 24 69  neObject {....$i
3730: 20 3d 20 2d 32 0d 0a 24 70 72 6f 70 65 72 74 79   = -2..$property
3740: 20 3d 20 24 6e 75 6c 6c 0d 0a 64 6f 20 7b 0d 0a   = $null..do {..
3750: 24 73 74 72 20 3d 20 24 6c 69 6e 65 2e 53 70 6c  $str = $line.Spl
3760: 69 74 28 22 7c 22 29 0d 0a 23 20 65 78 74 72 61  it("|")..# extra
3770: 63 74 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6e  ct the command n
3780: 61 6d 65 20 66 72 6f 6d 20 74 68 65 20 73 74 72  ame from the str
3790: 69 6e 67 0d 0a 23 20 66 69 72 73 74 20 73 70 6c  ing..# first spl
37a0: 69 74 20 74 68 65 20 73 74 72 69 6e 67 20 69 6e  it the string in
37b0: 74 6f 20 73 74 61 74 65 6d 65 6e 74 73 20 61 6e  to statements an
37c0: 64 20 70 69 70 65 6c 69 6e 65 20 65 6c 65 6d 65  d pipeline eleme
37d0: 6e 74 73 0d 0a 23 20 54 68 69 73 20 64 6f 65 73  nts..# This does
37e0: 6e 27 74 20 68 61 6e 64 6c 65 20 73 74 72 69 6e  n't handle strin
37f0: 67 73 20 68 6f 77 65 76 65 72 2e 0d 0a 24 5f 63  gs however...$_c
3800: 6d 64 6c 65 74 20 3d 20 5b 72 65 67 65 78 5d 3a  mdlet = [regex]:
3810: 3a 53 70 6c 69 74 28 24 73 74 72 5b 24 69 5d 2c  :Split($str[$i],
3820: 20 27 5b 7c 3b 3d 5d 27 29 5b 2d 31 5d 0d 0a 0d   '[|;=]')[-1]...
3830: 0a 23 20 74 61 6b 65 20 74 68 65 20 66 69 72 73  .# take the firs
3840: 74 20 73 70 61 63 65 20 73 65 70 61 72 61 74 65  t space separate
3850: 64 20 74 6f 6b 65 6e 20 6f 66 20 74 68 65 20 72  d token of the r
3860: 65 6d 61 69 6e 69 6e 67 20 73 74 72 69 6e 67 0d  emaining string.
3870: 0a 23 20 61 73 20 74 68 65 20 63 6f 6d 6d 61 6e  .# as the comman
3880: 64 20 74 6f 20 6c 6f 6f 6b 20 75 70 2e 20 54 72  d to look up. Tr
3890: 69 6d 20 61 6e 79 20 6c 65 61 64 69 6e 67 20 6f  im any leading o
38a0: 72 20 74 72 61 69 6c 69 6e 67 20 73 70 61 63 65  r trailing space
38b0: 73 0d 0a 23 20 73 6f 20 79 6f 75 20 64 6f 6e 27  s..# so you don'
38c0: 74 20 67 65 74 20 6c 65 61 64 69 6e 67 20 65 6d  t get leading em
38d0: 70 74 79 20 65 6c 65 6d 65 6e 74 73 2e 0d 0a 24  pty elements...$
38e0: 5f 63 6d 64 6c 65 74 20 3d 20 24 5f 63 6d 64 6c  _cmdlet = $_cmdl
38f0: 65 74 2e 54 72 69 6d 28 29 2e 53 70 6c 69 74 28  et.Trim().Split(
3900: 29 5b 30 5d 0d 0a 0d 0a 69 66 20 28 20 24 5f 63  )[0]....if ( $_c
3910: 6d 64 6c 65 74 20 2d 65 71 20 22 3f 22 20 29 0d  mdlet -eq "?" ).
3920: 0a 7b 0d 0a 24 5f 63 6d 64 6c 65 74 20 3d 20 22  .{..$_cmdlet = "
3930: 57 68 65 72 65 2d 4f 62 6a 65 63 74 22 0d 0a 7d  Where-Object"..}
3940: 0d 0a 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 65 78 70  ....$global:_exp
3950: 20 3d 20 24 5f 63 6d 64 6c 65 74 0d 0a 0d 0a 23   = $_cmdlet....#
3960: 20 6e 6f 77 20 67 65 74 20 74 68 65 20 69 6e 66   now get the inf
3970: 6f 20 6f 62 6a 65 63 74 20 66 6f 72 20 69 74 2e  o object for it.
3980: 2e 2e 0d 0a 24 5f 63 6d 64 6c 65 74 20 3d 20 40  ....$_cmdlet = @
3990: 28 47 65 74 2d 43 6f 6d 6d 61 6e 64 20 2d 74 79  (Get-Command -ty
39a0: 70 65 20 27 63 6d 64 6c 65 74 2c 61 6c 69 61 73  pe 'cmdlet,alias
39b0: 27 20 24 5f 63 6d 64 6c 65 74 29 5b 30 5d 0d 0a  ' $_cmdlet)[0]..
39c0: 0d 0a 23 20 6c 6f 6f 70 20 72 65 73 6f 6c 76 69  ..# loop resolvi
39d0: 6e 67 20 61 6c 69 61 73 65 73 2e 2e 2e 0d 0a 77  ng aliases.....w
39e0: 68 69 6c 65 20 28 24 5f 63 6d 64 6c 65 74 2e 43  hile ($_cmdlet.C
39f0: 6f 6d 6d 61 6e 64 54 79 70 65 20 2d 65 71 20 27  ommandType -eq '
3a00: 61 6c 69 61 73 27 29 0d 0a 7b 0d 0a 24 5f 63 6d  alias')..{..$_cm
3a10: 64 6c 65 74 20 3d 20 40 28 47 65 74 2d 43 6f 6d  dlet = @(Get-Com
3a20: 6d 61 6e 64 20 2d 74 79 70 65 20 27 63 6d 64 6c  mand -type 'cmdl
3a30: 65 74 2c 61 6c 69 61 73 27 20 24 5f 63 6d 64 6c  et,alias' $_cmdl
3a40: 65 74 2e 44 65 66 69 6e 69 74 69 6f 6e 29 5b 30  et.Definition)[0
3a50: 5d 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 22 53 65  ]..}....if ( "Se
3a60: 6c 65 63 74 2d 4f 62 6a 65 63 74 22 20 2d 65 71  lect-Object" -eq
3a70: 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a   $_cmdlet )..{..
3a80: 69 66 20 28 20 24 73 74 72 5b 24 69 5d 20 2d 6d  if ( $str[$i] -m
3a90: 61 74 63 68 20 27 5c 73 2b 2d 45 78 70 5c 77 2a  atch '\s+-Exp\w*
3aa0: 5b 5c 73 3a 5d 2b 28 5c 77 2b 29 27 20 29 0d 0a  [\s:]+(\w+)' )..
3ab0: 7b 0d 0a 24 70 72 6f 70 65 72 74 79 20 3d 20 24  {..$property = $
3ac0: 4d 61 74 63 68 65 73 5b 31 5d 20 2b 20 22 3b 22  Matches[1] + ";"
3ad0: 20 2b 20 24 70 72 6f 70 65 72 74 79 0d 0a 7d 0d   + $property..}.
3ae0: 0a 7d 0d 0a 0d 0a 24 69 2d 2d 0d 0a 7d 20 77 68  .}....$i--..} wh
3af0: 69 6c 65 20 28 20 22 47 65 74 2d 55 6e 69 71 75  ile ( "Get-Uniqu
3b00: 65 22 2c 20 22 53 65 6c 65 63 74 2d 4f 62 6a 65  e", "Select-Obje
3b10: 63 74 22 2c 20 22 53 6f 72 74 2d 4f 62 6a 65 63  ct", "Sort-Objec
3b20: 74 22 2c 20 22 54 65 65 2d 4f 62 6a 65 63 74 22  t", "Tee-Object"
3b30: 2c 20 22 57 68 65 72 65 2d 4f 62 6a 65 63 74 22  , "Where-Object"
3b40: 20 2d 63 6f 6e 74 61 69 6e 73 20 24 5f 63 6d 64   -contains $_cmd
3b50: 6c 65 74 20 29 0d 0a 0d 0a 69 66 20 28 20 24 67  let )....if ( $g
3b60: 6c 6f 62 61 6c 3a 5f 66 6f 72 67 63 69 20 2d 65  lobal:_forgci -e
3b70: 71 20 24 6e 75 6c 6c 20 29 0d 0a 7b 0d 0a 24 61  q $null )..{..$a
3b80: 20 3d 20 40 28 6c 73 20 22 41 6c 69 61 73 3a 5c   = @(ls "Alias:\
3b90: 22 29 5b 30 5d 0d 0a 24 65 20 3d 20 40 28 6c 73  ")[0]..$e = @(ls
3ba0: 20 22 45 6e 76 3a 5c 22 29 5b 30 5d 0d 0a 24 66   "Env:\")[0]..$f
3bb0: 20 3d 20 40 28 6c 73 20 22 46 75 6e 63 74 69 6f   = @(ls "Functio
3bc0: 6e 3a 5c 22 29 5b 30 5d 0d 0a 24 68 20 3d 20 40  n:\")[0]..$h = @
3bd0: 28 6c 73 20 22 48 4b 43 55 3a 5c 22 29 5b 30 5d  (ls "HKCU:\")[0]
3be0: 0d 0a 24 76 20 3d 20 40 28 6c 73 20 22 56 61 72  ..$v = @(ls "Var
3bf0: 69 61 62 6c 65 3a 5c 22 29 5b 30 5d 0d 0a 24 63  iable:\")[0]..$c
3c00: 20 3d 20 40 28 6c 73 20 22 63 65 72 74 3a 5c 22   = @(ls "cert:\"
3c10: 29 5b 30 5d 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 66  )[0]..$global:_f
3c20: 6f 72 67 63 69 20 3d 20 67 69 20 24 50 53 48 4f  orgci = gi $PSHO
3c30: 4d 45 5c 70 6f 77 65 72 73 68 65 6c 6c 2e 65 78  ME\powershell.ex
3c40: 65 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20  e |..Add-Member 
3c50: 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20   'NoteProperty' 
3c60: 20 43 6f 6d 6d 61 6e 64 54 79 70 65 20 20 24 66   CommandType  $f
3c70: 2e 43 6f 6d 6d 61 6e 64 54 79 70 65 20 2d 50 20  .CommandType -P 
3c80: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
3c90: 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 44  NoteProperty'  D
3ca0: 65 66 69 6e 69 74 69 6f 6e 20 20 24 61 2e 44 65  efinition  $a.De
3cb0: 66 69 6e 69 74 69 6f 6e 20 2d 50 20 7c 0d 0a 41  finition -P |..A
3cc0: 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65  dd-Member  'Note
3cd0: 50 72 6f 70 65 72 74 79 27 20 20 44 65 73 63 72  Property'  Descr
3ce0: 69 70 74 69 6f 6e 20 20 24 61 2e 44 65 73 63 72  iption  $a.Descr
3cf0: 69 70 74 69 6f 6e 20 2d 50 20 7c 0d 0a 41 64 64  iption -P |..Add
3d00: 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72  -Member  'NotePr
3d10: 6f 70 65 72 74 79 27 20 20 4b 65 79 20 20 24 65  operty'  Key  $e
3d20: 2e 4b 65 79 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d  .Key -P |..Add-M
3d30: 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70  ember  'NoteProp
3d40: 65 72 74 79 27 20 20 4c 6f 63 61 74 69 6f 6e 20  erty'  Location 
3d50: 20 24 63 2e 4c 6f 63 61 74 69 6f 6e 20 2d 50 20   $c.Location -P 
3d60: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
3d70: 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 4c  NoteProperty'  L
3d80: 6f 63 61 74 69 6f 6e 4e 61 6d 65 20 20 24 63 2e  ocationName  $c.
3d90: 4c 6f 63 61 74 69 6f 6e 4e 61 6d 65 20 2d 50 20  LocationName -P 
3da0: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
3db0: 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 4f  NoteProperty'  O
3dc0: 70 74 69 6f 6e 73 20 20 24 61 2e 4f 70 74 69 6f  ptions  $a.Optio
3dd0: 6e 73 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d  ns -P |..Add-Mem
3de0: 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72  ber  'NoteProper
3df0: 74 79 27 20 20 52 65 66 65 72 65 6e 63 65 64 43  ty'  ReferencedC
3e00: 6f 6d 6d 61 6e 64 20 20 24 61 2e 52 65 66 65 72  ommand  $a.Refer
3e10: 65 6e 63 65 64 43 6f 6d 6d 61 6e 64 20 2d 50 20  encedCommand -P 
3e20: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
3e30: 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 52  NoteProperty'  R
3e40: 65 73 6f 6c 76 65 64 43 6f 6d 6d 61 6e 64 20 20  esolvedCommand  
3e50: 24 61 2e 52 65 73 6f 6c 76 65 64 43 6f 6d 6d 61  $a.ResolvedComma
3e60: 6e 64 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d  nd -P |..Add-Mem
3e70: 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72  ber  'NoteProper
3e80: 74 79 27 20 20 53 63 72 69 70 74 42 6c 6f 63 6b  ty'  ScriptBlock
3e90: 20 20 24 66 2e 53 63 72 69 70 74 42 6c 6f 63 6b    $f.ScriptBlock
3ea0: 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65   -P |..Add-Membe
3eb0: 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79  r  'NoteProperty
3ec0: 27 20 20 53 74 6f 72 65 4e 61 6d 65 73 20 20 24  '  StoreNames  $
3ed0: 63 2e 53 74 6f 72 65 4e 61 6d 65 73 20 2d 50 20  c.StoreNames -P 
3ee0: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
3ef0: 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 53  NoteProperty'  S
3f00: 75 62 4b 65 79 43 6f 75 6e 74 20 20 24 68 2e 53  ubKeyCount  $h.S
3f10: 75 62 4b 65 79 43 6f 75 6e 74 20 2d 50 20 7c 0d  ubKeyCount -P |.
3f20: 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f  .Add-Member  'No
3f30: 74 65 50 72 6f 70 65 72 74 79 27 20 20 56 61 6c  teProperty'  Val
3f40: 75 65 20 20 24 65 2e 56 61 6c 75 65 20 2d 50 20  ue  $e.Value -P 
3f50: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
3f60: 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 56  NoteProperty'  V
3f70: 61 6c 75 65 43 6f 75 6e 74 20 20 24 68 2e 56 61  alueCount  $h.Va
3f80: 6c 75 65 43 6f 75 6e 74 20 2d 50 20 7c 0d 0a 41  lueCount -P |..A
3f90: 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65  dd-Member  'Note
3fa0: 50 72 6f 70 65 72 74 79 27 20 20 56 69 73 69 62  Property'  Visib
3fb0: 69 6c 69 74 79 20 20 24 61 2e 56 69 73 69 62 69  ility  $a.Visibi
3fc0: 6c 69 74 79 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d  lity -P |..Add-M
3fd0: 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70  ember  'NoteProp
3fe0: 65 72 74 79 27 20 20 50 72 6f 70 65 72 74 79 20  erty'  Property 
3ff0: 20 24 68 2e 50 72 6f 70 65 72 74 79 20 2d 50 20   $h.Property -P 
4000: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
4010: 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 52  NoteProperty'  R
4020: 65 73 6f 6c 76 65 64 43 6f 6d 6d 61 6e 64 4e 61  esolvedCommandNa
4030: 6d 65 20 20 24 61 2e 52 65 73 6f 6c 76 65 64 43  me  $a.ResolvedC
4040: 6f 6d 6d 61 6e 64 4e 61 6d 65 20 2d 50 20 7c 0d  ommandName -P |.
4050: 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63  .Add-Member  'Sc
4060: 72 69 70 74 4d 65 74 68 6f 64 27 20 20 43 6c 6f  riptMethod'  Clo
4070: 73 65 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64  se  {} -P |..Add
4080: 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74  -Member  'Script
4090: 4d 65 74 68 6f 64 27 20 20 43 72 65 61 74 65 53  Method'  CreateS
40a0: 75 62 4b 65 79 20 20 7b 7d 20 2d 50 20 7c 0d 0a  ubKey  {} -P |..
40b0: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72  Add-Member  'Scr
40c0: 69 70 74 4d 65 74 68 6f 64 27 20 20 44 65 6c 65  iptMethod'  Dele
40d0: 74 65 53 75 62 4b 65 79 20 20 7b 7d 20 2d 50 20  teSubKey  {} -P 
40e0: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
40f0: 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20 44  ScriptMethod'  D
4100: 65 6c 65 74 65 53 75 62 4b 65 79 54 72 65 65 20  eleteSubKeyTree 
4110: 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65   {} -P |..Add-Me
4120: 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d 65 74  mber  'ScriptMet
4130: 68 6f 64 27 20 20 44 65 6c 65 74 65 56 61 6c 75  hod'  DeleteValu
4140: 65 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d  e  {} -P |..Add-
4150: 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d  Member  'ScriptM
4160: 65 74 68 6f 64 27 20 20 46 6c 75 73 68 20 20 7b  ethod'  Flush  {
4170: 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  } -P |..Add-Memb
4180: 65 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f  er  'ScriptMetho
4190: 64 27 20 20 47 65 74 53 75 62 4b 65 79 4e 61 6d  d'  GetSubKeyNam
41a0: 65 73 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64  es  {} -P |..Add
41b0: 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74  -Member  'Script
41c0: 4d 65 74 68 6f 64 27 20 20 47 65 74 56 61 6c 75  Method'  GetValu
41d0: 65 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d  e  {} -P |..Add-
41e0: 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d  Member  'ScriptM
41f0: 65 74 68 6f 64 27 20 20 47 65 74 56 61 6c 75 65  ethod'  GetValue
4200: 4b 69 6e 64 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41  Kind  {} -P |..A
4210: 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69  dd-Member  'Scri
4220: 70 74 4d 65 74 68 6f 64 27 20 20 47 65 74 56 61  ptMethod'  GetVa
4230: 6c 75 65 4e 61 6d 65 73 20 20 7b 7d 20 2d 50 20  lueNames  {} -P 
4240: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
4250: 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20 49  ScriptMethod'  I
4260: 73 56 61 6c 69 64 56 61 6c 75 65 20 20 7b 7d 20  sValidValue  {} 
4270: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
4280: 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27    'ScriptMethod'
4290: 20 20 4f 70 65 6e 53 75 62 4b 65 79 20 20 7b 7d    OpenSubKey  {}
42a0: 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65   -P |..Add-Membe
42b0: 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64  r  'ScriptMethod
42c0: 27 20 20 53 65 74 56 61 6c 75 65 20 20 7b 7d 20  '  SetValue  {} 
42d0: 2d 50 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 24 67  -P..}....if ( $g
42e0: 6c 6f 62 61 6c 3a 5f 6d 69 78 20 2d 65 71 20 24  lobal:_mix -eq $
42f0: 6e 75 6c 6c 20 29 0d 0a 7b 0d 0a 24 66 20 3d 20  null )..{..$f = 
4300: 67 69 20 24 50 53 48 4f 4d 45 5c 70 6f 77 65 72  gi $PSHOME\power
4310: 73 68 65 6c 6c 2e 65 78 65 0d 0a 24 74 20 3d 20  shell.exe..$t = 
4320: 5b 74 79 70 65 5d 0d 0a 24 73 20 3d 20 22 22 0d  [type]..$s = "".
4330: 0a 24 67 6c 6f 62 61 6c 3a 5f 6d 69 78 20 3d 20  .$global:_mix = 
4340: 60 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 2d 49  `..Add-Member -I
4350: 6e 70 75 74 4f 62 6a 65 63 74 20 28 4e 65 77 2d  nputObject (New-
4360: 4f 62 6a 65 63 74 20 50 53 4f 62 6a 65 63 74 29  Object PSObject)
4370: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
4380: 20 20 4d 6f 64 65 20 20 24 66 2e 4d 6f 64 65 20    Mode  $f.Mode 
4390: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
43a0: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
43b0: 20 20 41 73 73 65 6d 62 6c 79 20 20 24 74 2e 41    Assembly  $t.A
43c0: 73 73 65 6d 62 6c 79 20 2d 50 20 7c 0d 0a 41 64  ssembly -P |..Ad
43d0: 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50  d-Member  'NoteP
43e0: 72 6f 70 65 72 74 79 27 20 20 41 73 73 65 6d 62  roperty'  Assemb
43f0: 6c 79 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 20  lyQualifiedName 
4400: 20 24 74 2e 41 73 73 65 6d 62 6c 79 51 75 61 6c   $t.AssemblyQual
4410: 69 66 69 65 64 4e 61 6d 65 20 2d 50 20 7c 0d 0a  ifiedName -P |..
4420: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74  Add-Member  'Not
4430: 65 50 72 6f 70 65 72 74 79 27 20 20 41 74 74 72  eProperty'  Attr
4440: 69 62 75 74 65 73 20 20 24 66 2e 41 74 74 72 69  ibutes  $f.Attri
4450: 62 75 74 65 73 20 2d 50 20 7c 0d 0a 41 64 64 2d  butes -P |..Add-
4460: 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f  Member  'NotePro
4470: 70 65 72 74 79 27 20 20 42 61 73 65 54 79 70 65  perty'  BaseType
4480: 20 20 24 74 2e 42 61 73 65 54 79 70 65 20 2d 50    $t.BaseType -P
4490: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
44a0: 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20  'NoteProperty'  
44b0: 43 6f 6e 74 61 69 6e 73 47 65 6e 65 72 69 63 50  ContainsGenericP
44c0: 61 72 61 6d 65 74 65 72 73 20 20 24 74 2e 43 6f  arameters  $t.Co
44d0: 6e 74 61 69 6e 73 47 65 6e 65 72 69 63 50 61 72  ntainsGenericPar
44e0: 61 6d 65 74 65 72 73 20 2d 50 20 7c 0d 0a 41 64  ameters -P |..Ad
44f0: 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50  d-Member  'NoteP
4500: 72 6f 70 65 72 74 79 27 20 20 43 72 65 61 74 69  roperty'  Creati
4510: 6f 6e 54 69 6d 65 20 20 24 66 2e 43 72 65 61 74  onTime  $f.Creat
4520: 69 6f 6e 54 69 6d 65 20 2d 50 20 7c 0d 0a 41 64  ionTime -P |..Ad
4530: 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50  d-Member  'NoteP
4540: 72 6f 70 65 72 74 79 27 20 20 43 72 65 61 74 69  roperty'  Creati
4550: 6f 6e 54 69 6d 65 55 74 63 20 20 24 66 2e 43 72  onTimeUtc  $f.Cr
4560: 65 61 74 69 6f 6e 54 69 6d 65 55 74 63 20 2d 50  eationTimeUtc -P
4570: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
4580: 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20  'NoteProperty'  
4590: 44 65 63 6c 61 72 69 6e 67 4d 65 74 68 6f 64 20  DeclaringMethod 
45a0: 20 24 74 2e 44 65 63 6c 61 72 69 6e 67 4d 65 74   $t.DeclaringMet
45b0: 68 6f 64 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65  hod -P |..Add-Me
45c0: 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65  mber  'NotePrope
45d0: 72 74 79 27 20 20 44 65 63 6c 61 72 69 6e 67 54  rty'  DeclaringT
45e0: 79 70 65 20 20 24 74 2e 44 65 63 6c 61 72 69 6e  ype  $t.Declarin
45f0: 67 54 79 70 65 20 2d 50 20 7c 0d 0a 41 64 64 2d  gType -P |..Add-
4600: 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f  Member  'NotePro
4610: 70 65 72 74 79 27 20 20 45 78 69 73 74 73 20 20  perty'  Exists  
4620: 24 66 2e 45 78 69 73 74 73 20 2d 50 20 7c 0d 0a  $f.Exists -P |..
4630: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74  Add-Member  'Not
4640: 65 50 72 6f 70 65 72 74 79 27 20 20 45 78 74 65  eProperty'  Exte
4650: 6e 73 69 6f 6e 20 20 24 66 2e 45 78 74 65 6e 73  nsion  $f.Extens
4660: 69 6f 6e 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65  ion -P |..Add-Me
4670: 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65  mber  'NotePrope
4680: 72 74 79 27 20 20 46 75 6c 6c 4e 61 6d 65 20 20  rty'  FullName  
4690: 24 66 2e 46 75 6c 6c 4e 61 6d 65 20 2d 50 20 7c  $f.FullName -P |
46a0: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e  ..Add-Member  'N
46b0: 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 47 65  oteProperty'  Ge
46c0: 6e 65 72 69 63 50 61 72 61 6d 65 74 65 72 41 74  nericParameterAt
46d0: 74 72 69 62 75 74 65 73 20 20 24 74 2e 47 65 6e  tributes  $t.Gen
46e0: 65 72 69 63 50 61 72 61 6d 65 74 65 72 41 74 74  ericParameterAtt
46f0: 72 69 62 75 74 65 73 20 2d 50 20 7c 0d 0a 41 64  ributes -P |..Ad
4700: 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50  d-Member  'NoteP
4710: 72 6f 70 65 72 74 79 27 20 20 47 65 6e 65 72 69  roperty'  Generi
4720: 63 50 61 72 61 6d 65 74 65 72 50 6f 73 69 74 69  cParameterPositi
4730: 6f 6e 20 20 24 74 2e 47 65 6e 65 72 69 63 50 61  on  $t.GenericPa
4740: 72 61 6d 65 74 65 72 50 6f 73 69 74 69 6f 6e 20  rameterPosition 
4750: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
4760: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
4770: 20 20 47 55 49 44 20 20 24 74 2e 47 55 49 44 20    GUID  $t.GUID 
4780: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
4790: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
47a0: 20 20 48 61 73 45 6c 65 6d 65 6e 74 54 79 70 65    HasElementType
47b0: 20 20 24 74 2e 48 61 73 45 6c 65 6d 65 6e 74 54    $t.HasElementT
47c0: 79 70 65 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65  ype -P |..Add-Me
47d0: 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65  mber  'NotePrope
47e0: 72 74 79 27 20 20 49 73 41 62 73 74 72 61 63 74  rty'  IsAbstract
47f0: 20 20 24 74 2e 49 73 41 62 73 74 72 61 63 74 20    $t.IsAbstract 
4800: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
4810: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
4820: 20 20 49 73 41 6e 73 69 43 6c 61 73 73 20 20 24    IsAnsiClass  $
4830: 74 2e 49 73 41 6e 73 69 43 6c 61 73 73 20 2d 50  t.IsAnsiClass -P
4840: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
4850: 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20  'NoteProperty'  
4860: 49 73 41 72 72 61 79 20 20 24 74 2e 49 73 41 72  IsArray  $t.IsAr
4870: 72 61 79 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65  ray -P |..Add-Me
4880: 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65  mber  'NotePrope
4890: 72 74 79 27 20 20 49 73 41 75 74 6f 43 6c 61 73  rty'  IsAutoClas
48a0: 73 20 20 24 74 2e 49 73 41 75 74 6f 43 6c 61 73  s  $t.IsAutoClas
48b0: 73 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  s -P |..Add-Memb
48c0: 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74  er  'NotePropert
48d0: 79 27 20 20 49 73 41 75 74 6f 4c 61 79 6f 75 74  y'  IsAutoLayout
48e0: 20 20 24 74 2e 49 73 41 75 74 6f 4c 61 79 6f 75    $t.IsAutoLayou
48f0: 74 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  t -P |..Add-Memb
4900: 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74  er  'NotePropert
4910: 79 27 20 20 49 73 42 79 52 65 66 20 20 24 74 2e  y'  IsByRef  $t.
4920: 49 73 42 79 52 65 66 20 2d 50 20 7c 0d 0a 41 64  IsByRef -P |..Ad
4930: 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50  d-Member  'NoteP
4940: 72 6f 70 65 72 74 79 27 20 20 49 73 43 6c 61 73  roperty'  IsClas
4950: 73 20 20 24 74 2e 49 73 43 6c 61 73 73 20 2d 50  s  $t.IsClass -P
4960: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
4970: 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20  'NoteProperty'  
4980: 49 73 43 4f 4d 4f 62 6a 65 63 74 20 20 24 74 2e  IsCOMObject  $t.
4990: 49 73 43 4f 4d 4f 62 6a 65 63 74 20 2d 50 20 7c  IsCOMObject -P |
49a0: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e  ..Add-Member  'N
49b0: 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 49 73  oteProperty'  Is
49c0: 43 6f 6e 74 65 78 74 66 75 6c 20 20 24 74 2e 49  Contextful  $t.I
49d0: 73 43 6f 6e 74 65 78 74 66 75 6c 20 2d 50 20 7c  sContextful -P |
49e0: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e  ..Add-Member  'N
49f0: 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 49 73  oteProperty'  Is
4a00: 45 6e 75 6d 20 20 24 74 2e 49 73 45 6e 75 6d 20  Enum  $t.IsEnum 
4a10: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
4a20: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
4a30: 20 20 49 73 45 78 70 6c 69 63 69 74 4c 61 79 6f    IsExplicitLayo
4a40: 75 74 20 20 24 74 2e 49 73 45 78 70 6c 69 63 69  ut  $t.IsExplici
4a50: 74 4c 61 79 6f 75 74 20 2d 50 20 7c 0d 0a 41 64  tLayout -P |..Ad
4a60: 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50  d-Member  'NoteP
4a70: 72 6f 70 65 72 74 79 27 20 20 49 73 47 65 6e 65  roperty'  IsGene
4a80: 72 69 63 50 61 72 61 6d 65 74 65 72 20 20 24 74  ricParameter  $t
4a90: 2e 49 73 47 65 6e 65 72 69 63 50 61 72 61 6d 65  .IsGenericParame
4aa0: 74 65 72 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65  ter -P |..Add-Me
4ab0: 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65  mber  'NotePrope
4ac0: 72 74 79 27 20 20 49 73 47 65 6e 65 72 69 63 54  rty'  IsGenericT
4ad0: 79 70 65 20 20 24 74 2e 49 73 47 65 6e 65 72 69  ype  $t.IsGeneri
4ae0: 63 54 79 70 65 20 2d 50 20 7c 0d 0a 41 64 64 2d  cType -P |..Add-
4af0: 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f  Member  'NotePro
4b00: 70 65 72 74 79 27 20 20 49 73 47 65 6e 65 72 69  perty'  IsGeneri
4b10: 63 54 79 70 65 44 65 66 69 6e 69 74 69 6f 6e 20  cTypeDefinition 
4b20: 20 24 74 2e 49 73 47 65 6e 65 72 69 63 54 79 70   $t.IsGenericTyp
4b30: 65 44 65 66 69 6e 69 74 69 6f 6e 20 2d 50 20 7c  eDefinition -P |
4b40: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e  ..Add-Member  'N
4b50: 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 49 73  oteProperty'  Is
4b60: 49 6d 70 6f 72 74 20 20 24 74 2e 49 73 49 6d 70  Import  $t.IsImp
4b70: 6f 72 74 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65  ort -P |..Add-Me
4b80: 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65  mber  'NotePrope
4b90: 72 74 79 27 20 20 49 73 49 6e 74 65 72 66 61 63  rty'  IsInterfac
4ba0: 65 20 20 24 74 2e 49 73 49 6e 74 65 72 66 61 63  e  $t.IsInterfac
4bb0: 65 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  e -P |..Add-Memb
4bc0: 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74  er  'NotePropert
4bd0: 79 27 20 20 49 73 4c 61 79 6f 75 74 53 65 71 75  y'  IsLayoutSequ
4be0: 65 6e 74 69 61 6c 20 20 24 74 2e 49 73 4c 61 79  ential  $t.IsLay
4bf0: 6f 75 74 53 65 71 75 65 6e 74 69 61 6c 20 2d 50  outSequential -P
4c00: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
4c10: 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20  'NoteProperty'  
4c20: 49 73 4d 61 72 73 68 61 6c 42 79 52 65 66 20 20  IsMarshalByRef  
4c30: 24 74 2e 49 73 4d 61 72 73 68 61 6c 42 79 52 65  $t.IsMarshalByRe
4c40: 66 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  f -P |..Add-Memb
4c50: 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74  er  'NotePropert
4c60: 79 27 20 20 49 73 4e 65 73 74 65 64 20 20 24 74  y'  IsNested  $t
4c70: 2e 49 73 4e 65 73 74 65 64 20 2d 50 20 7c 0d 0a  .IsNested -P |..
4c80: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74  Add-Member  'Not
4c90: 65 50 72 6f 70 65 72 74 79 27 20 20 49 73 4e 65  eProperty'  IsNe
4ca0: 73 74 65 64 41 73 73 65 6d 62 6c 79 20 20 24 74  stedAssembly  $t
4cb0: 2e 49 73 4e 65 73 74 65 64 41 73 73 65 6d 62 6c  .IsNestedAssembl
4cc0: 79 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  y -P |..Add-Memb
4cd0: 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74  er  'NotePropert
4ce0: 79 27 20 20 49 73 4e 65 73 74 65 64 46 61 6d 41  y'  IsNestedFamA
4cf0: 4e 44 41 73 73 65 6d 20 20 24 74 2e 49 73 4e 65  NDAssem  $t.IsNe
4d00: 73 74 65 64 46 61 6d 41 4e 44 41 73 73 65 6d 20  stedFamANDAssem 
4d10: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
4d20: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
4d30: 20 20 49 73 4e 65 73 74 65 64 46 61 6d 69 6c 79    IsNestedFamily
4d40: 20 20 24 74 2e 49 73 4e 65 73 74 65 64 46 61 6d    $t.IsNestedFam
4d50: 69 6c 79 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65  ily -P |..Add-Me
4d60: 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65  mber  'NotePrope
4d70: 72 74 79 27 20 20 49 73 4e 65 73 74 65 64 46 61  rty'  IsNestedFa
4d80: 6d 4f 52 41 73 73 65 6d 20 20 24 74 2e 49 73 4e  mORAssem  $t.IsN
4d90: 65 73 74 65 64 46 61 6d 4f 52 41 73 73 65 6d 20  estedFamORAssem 
4da0: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
4db0: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
4dc0: 20 20 49 73 4e 65 73 74 65 64 50 72 69 76 61 74    IsNestedPrivat
4dd0: 65 20 20 24 74 2e 49 73 4e 65 73 74 65 64 50 72  e  $t.IsNestedPr
4de0: 69 76 61 74 65 20 2d 50 20 7c 0d 0a 41 64 64 2d  ivate -P |..Add-
4df0: 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f  Member  'NotePro
4e00: 70 65 72 74 79 27 20 20 49 73 4e 65 73 74 65 64  perty'  IsNested
4e10: 50 75 62 6c 69 63 20 20 24 74 2e 49 73 4e 65 73  Public  $t.IsNes
4e20: 74 65 64 50 75 62 6c 69 63 20 2d 50 20 7c 0d 0a  tedPublic -P |..
4e30: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74  Add-Member  'Not
4e40: 65 50 72 6f 70 65 72 74 79 27 20 20 49 73 4e 6f  eProperty'  IsNo
4e50: 74 50 75 62 6c 69 63 20 20 24 74 2e 49 73 4e 6f  tPublic  $t.IsNo
4e60: 74 50 75 62 6c 69 63 20 2d 50 20 7c 0d 0a 41 64  tPublic -P |..Ad
4e70: 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50  d-Member  'NoteP
4e80: 72 6f 70 65 72 74 79 27 20 20 49 73 50 6f 69 6e  roperty'  IsPoin
4e90: 74 65 72 20 20 24 74 2e 49 73 50 6f 69 6e 74 65  ter  $t.IsPointe
4ea0: 72 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  r -P |..Add-Memb
4eb0: 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74  er  'NotePropert
4ec0: 79 27 20 20 49 73 50 72 69 6d 69 74 69 76 65 20  y'  IsPrimitive 
4ed0: 20 24 74 2e 49 73 50 72 69 6d 69 74 69 76 65 20   $t.IsPrimitive 
4ee0: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
4ef0: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
4f00: 20 20 49 73 50 75 62 6c 69 63 20 20 24 74 2e 49    IsPublic  $t.I
4f10: 73 50 75 62 6c 69 63 20 2d 50 20 7c 0d 0a 41 64  sPublic -P |..Ad
4f20: 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50  d-Member  'NoteP
4f30: 72 6f 70 65 72 74 79 27 20 20 49 73 53 65 61 6c  roperty'  IsSeal
4f40: 65 64 20 20 24 74 2e 49 73 53 65 61 6c 65 64 20  ed  $t.IsSealed 
4f50: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
4f60: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
4f70: 20 20 49 73 53 65 72 69 61 6c 69 7a 61 62 6c 65    IsSerializable
4f80: 20 20 24 74 2e 49 73 53 65 72 69 61 6c 69 7a 61    $t.IsSerializa
4f90: 62 6c 65 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65  ble -P |..Add-Me
4fa0: 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65  mber  'NotePrope
4fb0: 72 74 79 27 20 20 49 73 53 70 65 63 69 61 6c 4e  rty'  IsSpecialN
4fc0: 61 6d 65 20 20 24 74 2e 49 73 53 70 65 63 69 61  ame  $t.IsSpecia
4fd0: 6c 4e 61 6d 65 20 2d 50 20 7c 0d 0a 41 64 64 2d  lName -P |..Add-
4fe0: 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f  Member  'NotePro
4ff0: 70 65 72 74 79 27 20 20 49 73 55 6e 69 63 6f 64  perty'  IsUnicod
5000: 65 43 6c 61 73 73 20 20 24 74 2e 49 73 55 6e 69  eClass  $t.IsUni
5010: 63 6f 64 65 43 6c 61 73 73 20 2d 50 20 7c 0d 0a  codeClass -P |..
5020: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74  Add-Member  'Not
5030: 65 50 72 6f 70 65 72 74 79 27 20 20 49 73 56 61  eProperty'  IsVa
5040: 6c 75 65 54 79 70 65 20 20 24 74 2e 49 73 56 61  lueType  $t.IsVa
5050: 6c 75 65 54 79 70 65 20 2d 50 20 7c 0d 0a 41 64  lueType -P |..Ad
5060: 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50  d-Member  'NoteP
5070: 72 6f 70 65 72 74 79 27 20 20 49 73 56 69 73 69  roperty'  IsVisi
5080: 62 6c 65 20 20 24 74 2e 49 73 56 69 73 69 62 6c  ble  $t.IsVisibl
5090: 65 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  e -P |..Add-Memb
50a0: 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74  er  'NotePropert
50b0: 79 27 20 20 4c 61 73 74 41 63 63 65 73 73 54 69  y'  LastAccessTi
50c0: 6d 65 20 20 24 66 2e 4c 61 73 74 41 63 63 65 73  me  $f.LastAcces
50d0: 73 54 69 6d 65 20 2d 50 20 7c 0d 0a 41 64 64 2d  sTime -P |..Add-
50e0: 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f  Member  'NotePro
50f0: 70 65 72 74 79 27 20 20 4c 61 73 74 41 63 63 65  perty'  LastAcce
5100: 73 73 54 69 6d 65 55 74 63 20 20 24 66 2e 4c 61  ssTimeUtc  $f.La
5110: 73 74 41 63 63 65 73 73 54 69 6d 65 55 74 63 20  stAccessTimeUtc 
5120: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
5130: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
5140: 20 20 4c 61 73 74 57 72 69 74 65 54 69 6d 65 20    LastWriteTime 
5150: 20 24 66 2e 4c 61 73 74 57 72 69 74 65 54 69 6d   $f.LastWriteTim
5160: 65 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  e -P |..Add-Memb
5170: 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74  er  'NotePropert
5180: 79 27 20 20 4c 61 73 74 57 72 69 74 65 54 69 6d  y'  LastWriteTim
5190: 65 55 74 63 20 20 24 66 2e 4c 61 73 74 57 72 69  eUtc  $f.LastWri
51a0: 74 65 54 69 6d 65 55 74 63 20 2d 50 20 7c 0d 0a  teTimeUtc -P |..
51b0: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74  Add-Member  'Not
51c0: 65 50 72 6f 70 65 72 74 79 27 20 20 4d 65 6d 62  eProperty'  Memb
51d0: 65 72 54 79 70 65 20 20 24 74 2e 4d 65 6d 62 65  erType  $t.Membe
51e0: 72 54 79 70 65 20 2d 50 20 7c 0d 0a 41 64 64 2d  rType -P |..Add-
51f0: 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f  Member  'NotePro
5200: 70 65 72 74 79 27 20 20 4d 65 74 61 64 61 74 61  perty'  Metadata
5210: 54 6f 6b 65 6e 20 20 24 74 2e 4d 65 74 61 64 61  Token  $t.Metada
5220: 74 61 54 6f 6b 65 6e 20 2d 50 20 7c 0d 0a 41 64  taToken -P |..Ad
5230: 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50  d-Member  'NoteP
5240: 72 6f 70 65 72 74 79 27 20 20 4d 6f 64 75 6c 65  roperty'  Module
5250: 20 20 24 74 2e 4d 6f 64 75 6c 65 20 2d 50 20 7c    $t.Module -P |
5260: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e  ..Add-Member  'N
5270: 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 4e 61  oteProperty'  Na
5280: 6d 65 20 20 24 74 2e 4e 61 6d 65 20 2d 50 20 7c  me  $t.Name -P |
5290: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e  ..Add-Member  'N
52a0: 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 4e 61  oteProperty'  Na
52b0: 6d 65 73 70 61 63 65 20 20 24 74 2e 4e 61 6d 65  mespace  $t.Name
52c0: 73 70 61 63 65 20 2d 50 20 7c 0d 0a 41 64 64 2d  space -P |..Add-
52d0: 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f  Member  'NotePro
52e0: 70 65 72 74 79 27 20 20 50 61 72 65 6e 74 20 20  perty'  Parent  
52f0: 24 66 2e 50 61 72 65 6e 74 20 2d 50 20 7c 0d 0a  $f.Parent -P |..
5300: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74  Add-Member  'Not
5310: 65 50 72 6f 70 65 72 74 79 27 20 20 52 65 66 6c  eProperty'  Refl
5320: 65 63 74 65 64 54 79 70 65 20 20 24 74 2e 52 65  ectedType  $t.Re
5330: 66 6c 65 63 74 65 64 54 79 70 65 20 2d 50 20 7c  flectedType -P |
5340: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e  ..Add-Member  'N
5350: 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 52 6f  oteProperty'  Ro
5360: 6f 74 20 20 24 66 2e 52 6f 6f 74 20 2d 50 20 7c  ot  $f.Root -P |
5370: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e  ..Add-Member  'N
5380: 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20 53 74  oteProperty'  St
5390: 72 75 63 74 4c 61 79 6f 75 74 41 74 74 72 69 62  ructLayoutAttrib
53a0: 75 74 65 20 20 24 74 2e 53 74 72 75 63 74 4c 61  ute  $t.StructLa
53b0: 79 6f 75 74 41 74 74 72 69 62 75 74 65 20 2d 50  youtAttribute -P
53c0: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
53d0: 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20  'NoteProperty'  
53e0: 54 79 70 65 48 61 6e 64 6c 65 20 20 24 74 2e 54  TypeHandle  $t.T
53f0: 79 70 65 48 61 6e 64 6c 65 20 2d 50 20 7c 0d 0a  ypeHandle -P |..
5400: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74  Add-Member  'Not
5410: 65 50 72 6f 70 65 72 74 79 27 20 20 54 79 70 65  eProperty'  Type
5420: 49 6e 69 74 69 61 6c 69 7a 65 72 20 20 24 74 2e  Initializer  $t.
5430: 54 79 70 65 49 6e 69 74 69 61 6c 69 7a 65 72 20  TypeInitializer 
5440: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
5450: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
5460: 20 20 55 6e 64 65 72 6c 79 69 6e 67 53 79 73 74    UnderlyingSyst
5470: 65 6d 54 79 70 65 20 20 24 74 2e 55 6e 64 65 72  emType  $t.Under
5480: 6c 79 69 6e 67 53 79 73 74 65 6d 54 79 70 65 20  lyingSystemType 
5490: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
54a0: 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27    'NoteProperty'
54b0: 20 20 50 53 43 68 69 6c 64 4e 61 6d 65 20 20 24    PSChildName  $
54c0: 66 2e 50 53 43 68 69 6c 64 4e 61 6d 65 20 2d 50  f.PSChildName -P
54d0: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
54e0: 27 4e 6f 74 65 50 72 6f 70 65 72 74 79 27 20 20  'NoteProperty'  
54f0: 50 53 44 72 69 76 65 20 20 24 66 2e 50 53 44 72  PSDrive  $f.PSDr
5500: 69 76 65 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65  ive -P |..Add-Me
5510: 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65  mber  'NotePrope
5520: 72 74 79 27 20 20 50 53 49 73 43 6f 6e 74 61 69  rty'  PSIsContai
5530: 6e 65 72 20 20 24 66 2e 50 53 49 73 43 6f 6e 74  ner  $f.PSIsCont
5540: 61 69 6e 65 72 20 2d 50 20 7c 0d 0a 41 64 64 2d  ainer -P |..Add-
5550: 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f  Member  'NotePro
5560: 70 65 72 74 79 27 20 20 50 53 50 61 72 65 6e 74  perty'  PSParent
5570: 50 61 74 68 20 20 24 66 2e 50 53 50 61 72 65 6e  Path  $f.PSParen
5580: 74 50 61 74 68 20 2d 50 20 7c 0d 0a 41 64 64 2d  tPath -P |..Add-
5590: 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f  Member  'NotePro
55a0: 70 65 72 74 79 27 20 20 50 53 50 61 74 68 20 20  perty'  PSPath  
55b0: 24 66 2e 50 53 50 61 74 68 20 2d 50 20 7c 0d 0a  $f.PSPath -P |..
55c0: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74  Add-Member  'Not
55d0: 65 50 72 6f 70 65 72 74 79 27 20 20 50 53 50 72  eProperty'  PSPr
55e0: 6f 76 69 64 65 72 20 20 24 66 2e 50 53 50 72 6f  ovider  $f.PSPro
55f0: 76 69 64 65 72 20 2d 50 20 7c 0d 0a 41 64 64 2d  vider -P |..Add-
5600: 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f  Member  'NotePro
5610: 70 65 72 74 79 27 20 20 42 61 73 65 4e 61 6d 65  perty'  BaseName
5620: 20 20 24 66 2e 42 61 73 65 4e 61 6d 65 20 2d 50    $f.BaseName -P
5630: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
5640: 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20  'ScriptMethod'  
5650: 43 6c 6f 6e 65 20 20 7b 7d 20 2d 50 20 7c 0d 0a  Clone  {} -P |..
5660: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72  Add-Member  'Scr
5670: 69 70 74 4d 65 74 68 6f 64 27 20 20 43 6f 6d 70  iptMethod'  Comp
5680: 61 72 65 54 6f 20 20 7b 7d 20 2d 50 20 7c 0d 0a  areTo  {} -P |..
5690: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72  Add-Member  'Scr
56a0: 69 70 74 4d 65 74 68 6f 64 27 20 20 43 6f 6e 74  iptMethod'  Cont
56b0: 61 69 6e 73 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41  ains  {} -P |..A
56c0: 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69  dd-Member  'Scri
56d0: 70 74 4d 65 74 68 6f 64 27 20 20 43 6f 70 79 54  ptMethod'  CopyT
56e0: 6f 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d  o  {} -P |..Add-
56f0: 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d  Member  'ScriptM
5700: 65 74 68 6f 64 27 20 20 43 72 65 61 74 65 20 20  ethod'  Create  
5710: 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d  {} -P |..Add-Mem
5720: 62 65 72 20 20 27 53 63 72 69 70 74 4d 65 74 68  ber  'ScriptMeth
5730: 6f 64 27 20 20 43 72 65 61 74 65 4f 62 6a 52 65  od'  CreateObjRe
5740: 66 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d  f  {} -P |..Add-
5750: 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d  Member  'ScriptM
5760: 65 74 68 6f 64 27 20 20 43 72 65 61 74 65 53 75  ethod'  CreateSu
5770: 62 64 69 72 65 63 74 6f 72 79 20 20 7b 7d 20 2d  bdirectory  {} -
5780: 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20  P |..Add-Member 
5790: 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20   'ScriptMethod' 
57a0: 20 44 65 6c 65 74 65 20 20 7b 7d 20 2d 50 20 7c   Delete  {} -P |
57b0: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53  ..Add-Member  'S
57c0: 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20 45 6e  criptMethod'  En
57d0: 64 73 57 69 74 68 20 20 7b 7d 20 2d 50 20 7c 0d  dsWith  {} -P |.
57e0: 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63  .Add-Member  'Sc
57f0: 72 69 70 74 4d 65 74 68 6f 64 27 20 20 46 69 6e  riptMethod'  Fin
5800: 64 49 6e 74 65 72 66 61 63 65 73 20 20 7b 7d 20  dInterfaces  {} 
5810: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
5820: 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27    'ScriptMethod'
5830: 20 20 46 69 6e 64 4d 65 6d 62 65 72 73 20 20 7b    FindMembers  {
5840: 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  } -P |..Add-Memb
5850: 65 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f  er  'ScriptMetho
5860: 64 27 20 20 47 65 74 41 63 63 65 73 73 43 6f 6e  d'  GetAccessCon
5870: 74 72 6f 6c 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41  trol  {} -P |..A
5880: 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69  dd-Member  'Scri
5890: 70 74 4d 65 74 68 6f 64 27 20 20 47 65 74 41 72  ptMethod'  GetAr
58a0: 72 61 79 52 61 6e 6b 20 20 7b 7d 20 2d 50 20 7c  rayRank  {} -P |
58b0: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53  ..Add-Member  'S
58c0: 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20 47 65  criptMethod'  Ge
58d0: 74 43 6f 6e 73 74 72 75 63 74 6f 72 20 20 7b 7d  tConstructor  {}
58e0: 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65   -P |..Add-Membe
58f0: 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64  r  'ScriptMethod
5900: 27 20 20 47 65 74 43 6f 6e 73 74 72 75 63 74 6f  '  GetConstructo
5910: 72 73 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64  rs  {} -P |..Add
5920: 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74  -Member  'Script
5930: 4d 65 74 68 6f 64 27 20 20 47 65 74 43 75 73 74  Method'  GetCust
5940: 6f 6d 41 74 74 72 69 62 75 74 65 73 20 20 7b 7d  omAttributes  {}
5950: 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65   -P |..Add-Membe
5960: 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64  r  'ScriptMethod
5970: 27 20 20 47 65 74 44 65 66 61 75 6c 74 4d 65 6d  '  GetDefaultMem
5980: 62 65 72 73 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41  bers  {} -P |..A
5990: 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69  dd-Member  'Scri
59a0: 70 74 4d 65 74 68 6f 64 27 20 20 47 65 74 44 69  ptMethod'  GetDi
59b0: 72 65 63 74 6f 72 69 65 73 20 20 7b 7d 20 2d 50  rectories  {} -P
59c0: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
59d0: 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20  'ScriptMethod'  
59e0: 47 65 74 45 6c 65 6d 65 6e 74 54 79 70 65 20 20  GetElementType  
59f0: 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d  {} -P |..Add-Mem
5a00: 62 65 72 20 20 27 53 63 72 69 70 74 4d 65 74 68  ber  'ScriptMeth
5a10: 6f 64 27 20 20 47 65 74 45 6e 75 6d 65 72 61 74  od'  GetEnumerat
5a20: 6f 72 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64  or  {} -P |..Add
5a30: 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74  -Member  'Script
5a40: 4d 65 74 68 6f 64 27 20 20 47 65 74 45 76 65 6e  Method'  GetEven
5a50: 74 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d  t  {} -P |..Add-
5a60: 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d  Member  'ScriptM
5a70: 65 74 68 6f 64 27 20 20 47 65 74 45 76 65 6e 74  ethod'  GetEvent
5a80: 73 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d  s  {} -P |..Add-
5a90: 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d  Member  'ScriptM
5aa0: 65 74 68 6f 64 27 20 20 47 65 74 46 69 65 6c 64  ethod'  GetField
5ab0: 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d    {} -P |..Add-M
5ac0: 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d 65  ember  'ScriptMe
5ad0: 74 68 6f 64 27 20 20 47 65 74 46 69 65 6c 64 73  thod'  GetFields
5ae0: 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d    {} -P |..Add-M
5af0: 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d 65  ember  'ScriptMe
5b00: 74 68 6f 64 27 20 20 47 65 74 46 69 6c 65 73 20  thod'  GetFiles 
5b10: 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65   {} -P |..Add-Me
5b20: 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d 65 74  mber  'ScriptMet
5b30: 68 6f 64 27 20 20 47 65 74 46 69 6c 65 53 79 73  hod'  GetFileSys
5b40: 74 65 6d 49 6e 66 6f 73 20 20 7b 7d 20 2d 50 20  temInfos  {} -P 
5b50: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
5b60: 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20 47  ScriptMethod'  G
5b70: 65 74 47 65 6e 65 72 69 63 41 72 67 75 6d 65 6e  etGenericArgumen
5b80: 74 73 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64  ts  {} -P |..Add
5b90: 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74  -Member  'Script
5ba0: 4d 65 74 68 6f 64 27 20 20 47 65 74 47 65 6e 65  Method'  GetGene
5bb0: 72 69 63 50 61 72 61 6d 65 74 65 72 43 6f 6e 73  ricParameterCons
5bc0: 74 72 61 69 6e 74 73 20 20 7b 7d 20 2d 50 20 7c  traints  {} -P |
5bd0: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53  ..Add-Member  'S
5be0: 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20 47 65  criptMethod'  Ge
5bf0: 74 47 65 6e 65 72 69 63 54 79 70 65 44 65 66 69  tGenericTypeDefi
5c00: 6e 69 74 69 6f 6e 20 20 7b 7d 20 2d 50 20 7c 0d  nition  {} -P |.
5c10: 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63  .Add-Member  'Sc
5c20: 72 69 70 74 4d 65 74 68 6f 64 27 20 20 47 65 74  riptMethod'  Get
5c30: 49 6e 74 65 72 66 61 63 65 20 20 7b 7d 20 2d 50  Interface  {} -P
5c40: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
5c50: 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20  'ScriptMethod'  
5c60: 47 65 74 49 6e 74 65 72 66 61 63 65 4d 61 70 20  GetInterfaceMap 
5c70: 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65   {} -P |..Add-Me
5c80: 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d 65 74  mber  'ScriptMet
5c90: 68 6f 64 27 20 20 47 65 74 49 6e 74 65 72 66 61  hod'  GetInterfa
5ca0: 63 65 73 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64  ces  {} -P |..Ad
5cb0: 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70  d-Member  'Scrip
5cc0: 74 4d 65 74 68 6f 64 27 20 20 47 65 74 4c 69 66  tMethod'  GetLif
5cd0: 65 74 69 6d 65 53 65 72 76 69 63 65 20 20 7b 7d  etimeService  {}
5ce0: 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65   -P |..Add-Membe
5cf0: 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64  r  'ScriptMethod
5d00: 27 20 20 47 65 74 4d 65 6d 62 65 72 20 20 7b 7d  '  GetMember  {}
5d10: 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65   -P |..Add-Membe
5d20: 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64  r  'ScriptMethod
5d30: 27 20 20 47 65 74 4d 65 6d 62 65 72 73 20 20 7b  '  GetMembers  {
5d40: 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  } -P |..Add-Memb
5d50: 65 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f  er  'ScriptMetho
5d60: 64 27 20 20 47 65 74 4d 65 74 68 6f 64 20 20 7b  d'  GetMethod  {
5d70: 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  } -P |..Add-Memb
5d80: 65 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f  er  'ScriptMetho
5d90: 64 27 20 20 47 65 74 4d 65 74 68 6f 64 73 20 20  d'  GetMethods  
5da0: 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d  {} -P |..Add-Mem
5db0: 62 65 72 20 20 27 53 63 72 69 70 74 4d 65 74 68  ber  'ScriptMeth
5dc0: 6f 64 27 20 20 47 65 74 4e 65 73 74 65 64 54 79  od'  GetNestedTy
5dd0: 70 65 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64  pe  {} -P |..Add
5de0: 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74  -Member  'Script
5df0: 4d 65 74 68 6f 64 27 20 20 47 65 74 4e 65 73 74  Method'  GetNest
5e00: 65 64 54 79 70 65 73 20 20 7b 7d 20 2d 50 20 7c  edTypes  {} -P |
5e10: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53  ..Add-Member  'S
5e20: 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20 47 65  criptMethod'  Ge
5e30: 74 4f 62 6a 65 63 74 44 61 74 61 20 20 7b 7d 20  tObjectData  {} 
5e40: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
5e50: 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27    'ScriptMethod'
5e60: 20 20 47 65 74 50 72 6f 70 65 72 74 69 65 73 20    GetProperties 
5e70: 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65   {} -P |..Add-Me
5e80: 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d 65 74  mber  'ScriptMet
5e90: 68 6f 64 27 20 20 47 65 74 50 72 6f 70 65 72 74  hod'  GetPropert
5ea0: 79 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d  y  {} -P |..Add-
5eb0: 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d  Member  'ScriptM
5ec0: 65 74 68 6f 64 27 20 20 47 65 74 54 79 70 65 43  ethod'  GetTypeC
5ed0: 6f 64 65 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64  ode  {} -P |..Ad
5ee0: 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70  d-Member  'Scrip
5ef0: 74 4d 65 74 68 6f 64 27 20 20 49 6e 64 65 78 4f  tMethod'  IndexO
5f00: 66 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d  f  {} -P |..Add-
5f10: 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d  Member  'ScriptM
5f20: 65 74 68 6f 64 27 20 20 49 6e 64 65 78 4f 66 41  ethod'  IndexOfA
5f30: 6e 79 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64  ny  {} -P |..Add
5f40: 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74  -Member  'Script
5f50: 4d 65 74 68 6f 64 27 20 20 49 6e 69 74 69 61 6c  Method'  Initial
5f60: 69 7a 65 4c 69 66 65 74 69 6d 65 53 65 72 76 69  izeLifetimeServi
5f70: 63 65 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64  ce  {} -P |..Add
5f80: 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74  -Member  'Script
5f90: 4d 65 74 68 6f 64 27 20 20 49 6e 73 65 72 74 20  Method'  Insert 
5fa0: 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65   {} -P |..Add-Me
5fb0: 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d 65 74  mber  'ScriptMet
5fc0: 68 6f 64 27 20 20 49 6e 76 6f 6b 65 4d 65 6d 62  hod'  InvokeMemb
5fd0: 65 72 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64  er  {} -P |..Add
5fe0: 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74  -Member  'Script
5ff0: 4d 65 74 68 6f 64 27 20 20 49 73 41 73 73 69 67  Method'  IsAssig
6000: 6e 61 62 6c 65 46 72 6f 6d 20 20 7b 7d 20 2d 50  nableFrom  {} -P
6010: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
6020: 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20  'ScriptMethod'  
6030: 49 73 44 65 66 69 6e 65 64 20 20 7b 7d 20 2d 50  IsDefined  {} -P
6040: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
6050: 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20  'ScriptMethod'  
6060: 49 73 49 6e 73 74 61 6e 63 65 4f 66 54 79 70 65  IsInstanceOfType
6070: 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d    {} -P |..Add-M
6080: 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d 65  ember  'ScriptMe
6090: 74 68 6f 64 27 20 20 49 73 4e 6f 72 6d 61 6c 69  thod'  IsNormali
60a0: 7a 65 64 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64  zed  {} -P |..Ad
60b0: 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70  d-Member  'Scrip
60c0: 74 4d 65 74 68 6f 64 27 20 20 49 73 53 75 62 63  tMethod'  IsSubc
60d0: 6c 61 73 73 4f 66 20 20 7b 7d 20 2d 50 20 7c 0d  lassOf  {} -P |.
60e0: 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63  .Add-Member  'Sc
60f0: 72 69 70 74 4d 65 74 68 6f 64 27 20 20 4c 61 73  riptMethod'  Las
6100: 74 49 6e 64 65 78 4f 66 20 20 7b 7d 20 2d 50 20  tIndexOf  {} -P 
6110: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
6120: 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20 4c  ScriptMethod'  L
6130: 61 73 74 49 6e 64 65 78 4f 66 41 6e 79 20 20 7b  astIndexOfAny  {
6140: 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  } -P |..Add-Memb
6150: 65 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f  er  'ScriptMetho
6160: 64 27 20 20 4d 61 6b 65 41 72 72 61 79 54 79 70  d'  MakeArrayTyp
6170: 65 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d  e  {} -P |..Add-
6180: 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d  Member  'ScriptM
6190: 65 74 68 6f 64 27 20 20 4d 61 6b 65 42 79 52 65  ethod'  MakeByRe
61a0: 66 54 79 70 65 20 20 7b 7d 20 2d 50 20 7c 0d 0a  fType  {} -P |..
61b0: 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72  Add-Member  'Scr
61c0: 69 70 74 4d 65 74 68 6f 64 27 20 20 4d 61 6b 65  iptMethod'  Make
61d0: 47 65 6e 65 72 69 63 54 79 70 65 20 20 7b 7d 20  GenericType  {} 
61e0: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
61f0: 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27    'ScriptMethod'
6200: 20 20 4d 61 6b 65 50 6f 69 6e 74 65 72 54 79 70    MakePointerTyp
6210: 65 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d  e  {} -P |..Add-
6220: 4d 65 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d  Member  'ScriptM
6230: 65 74 68 6f 64 27 20 20 4d 6f 76 65 54 6f 20 20  ethod'  MoveTo  
6240: 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d  {} -P |..Add-Mem
6250: 62 65 72 20 20 27 53 63 72 69 70 74 4d 65 74 68  ber  'ScriptMeth
6260: 6f 64 27 20 20 4e 6f 72 6d 61 6c 69 7a 65 20 20  od'  Normalize  
6270: 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d  {} -P |..Add-Mem
6280: 62 65 72 20 20 27 53 63 72 69 70 74 4d 65 74 68  ber  'ScriptMeth
6290: 6f 64 27 20 20 50 61 64 4c 65 66 74 20 20 7b 7d  od'  PadLeft  {}
62a0: 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65   -P |..Add-Membe
62b0: 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64  r  'ScriptMethod
62c0: 27 20 20 50 61 64 52 69 67 68 74 20 20 7b 7d 20  '  PadRight  {} 
62d0: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
62e0: 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27    'ScriptMethod'
62f0: 20 20 52 65 66 72 65 73 68 20 20 7b 7d 20 2d 50    Refresh  {} -P
6300: 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20   |..Add-Member  
6310: 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20  'ScriptMethod'  
6320: 52 65 6d 6f 76 65 20 20 7b 7d 20 2d 50 20 7c 0d  Remove  {} -P |.
6330: 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63  .Add-Member  'Sc
6340: 72 69 70 74 4d 65 74 68 6f 64 27 20 20 52 65 70  riptMethod'  Rep
6350: 6c 61 63 65 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41  lace  {} -P |..A
6360: 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69  dd-Member  'Scri
6370: 70 74 4d 65 74 68 6f 64 27 20 20 53 65 74 41 63  ptMethod'  SetAc
6380: 63 65 73 73 43 6f 6e 74 72 6f 6c 20 20 7b 7d 20  cessControl  {} 
6390: 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72  -P |..Add-Member
63a0: 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27    'ScriptMethod'
63b0: 20 20 53 70 6c 69 74 20 20 7b 7d 20 2d 50 20 7c    Split  {} -P |
63c0: 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 53  ..Add-Member  'S
63d0: 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20 53 74  criptMethod'  St
63e0: 61 72 74 73 57 69 74 68 20 20 7b 7d 20 2d 50 20  artsWith  {} -P 
63f0: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
6400: 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20 53  ScriptMethod'  S
6410: 75 62 73 74 72 69 6e 67 20 20 7b 7d 20 2d 50 20  ubstring  {} -P 
6420: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
6430: 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20 54  ScriptMethod'  T
6440: 6f 43 68 61 72 41 72 72 61 79 20 20 7b 7d 20 2d  oCharArray  {} -
6450: 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20  P |..Add-Member 
6460: 20 27 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20   'ScriptMethod' 
6470: 20 54 6f 4c 6f 77 65 72 20 20 7b 7d 20 2d 50 20   ToLower  {} -P 
6480: 7c 0d 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27  |..Add-Member  '
6490: 53 63 72 69 70 74 4d 65 74 68 6f 64 27 20 20 54  ScriptMethod'  T
64a0: 6f 4c 6f 77 65 72 49 6e 76 61 72 69 61 6e 74 20  oLowerInvariant 
64b0: 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65   {} -P |..Add-Me
64c0: 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d 65 74  mber  'ScriptMet
64d0: 68 6f 64 27 20 20 54 6f 55 70 70 65 72 20 20 7b  hod'  ToUpper  {
64e0: 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  } -P |..Add-Memb
64f0: 65 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f  er  'ScriptMetho
6500: 64 27 20 20 54 6f 55 70 70 65 72 49 6e 76 61 72  d'  ToUpperInvar
6510: 69 61 6e 74 20 20 7b 7d 20 2d 50 20 7c 0d 0a 41  iant  {} -P |..A
6520: 64 64 2d 4d 65 6d 62 65 72 20 20 27 53 63 72 69  dd-Member  'Scri
6530: 70 74 4d 65 74 68 6f 64 27 20 20 54 72 69 6d 20  ptMethod'  Trim 
6540: 20 7b 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65   {} -P |..Add-Me
6550: 6d 62 65 72 20 20 27 53 63 72 69 70 74 4d 65 74  mber  'ScriptMet
6560: 68 6f 64 27 20 20 54 72 69 6d 45 6e 64 20 20 7b  hod'  TrimEnd  {
6570: 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  } -P |..Add-Memb
6580: 65 72 20 20 27 53 63 72 69 70 74 4d 65 74 68 6f  er  'ScriptMetho
6590: 64 27 20 20 54 72 69 6d 53 74 61 72 74 20 20 7b  d'  TrimStart  {
65a0: 7d 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  } -P |..Add-Memb
65b0: 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74  er  'NotePropert
65c0: 79 27 20 20 43 68 61 72 73 20 20 24 73 2e 43 68  y'  Chars  $s.Ch
65d0: 61 72 73 20 2d 50 0d 0a 7d 0d 0a 0d 0a 0d 0a 69  ars -P..}......i
65e0: 66 20 28 20 22 41 64 64 2d 4d 65 6d 62 65 72 22  f ( "Add-Member"
65f0: 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d   -eq $_cmdlet ).
6600: 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d  .{..$global:_dum
6610: 6d 79 20 3d 20 24 6e 75 6c 6c 0d 0a 7d 0d 0a 0d  my = $null..}...
6620: 0a 0d 0a 69 66 20 28 20 22 43 6f 6d 70 61 72 65  ...if ( "Compare
6630: 2d 4f 62 6a 65 63 74 22 20 2d 65 71 20 24 5f 63  -Object" -eq $_c
6640: 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c 6f  mdlet )..{..$glo
6650: 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 20 28 43  bal:_dummy =  (C
6660: 6f 6d 70 61 72 65 2d 4f 62 6a 65 63 74 20 31 20  ompare-Object 1 
6670: 32 29 5b 30 5d 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66  2)[0]..}......if
6680: 20 28 20 22 43 6f 6e 76 65 72 74 46 72 6f 6d 2d   ( "ConvertFrom-
6690: 53 65 63 75 72 65 53 74 72 69 6e 67 22 20 2d 65  SecureString" -e
66a0: 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d  q $_cmdlet )..{.
66b0: 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20  .$global:_dummy 
66c0: 3d 20 24 6e 75 6c 6c 0d 0a 7d 0d 0a 0d 0a 0d 0a  = $null..}......
66d0: 69 66 20 28 20 22 43 6f 6e 76 65 72 74 54 6f 2d  if ( "ConvertTo-
66e0: 53 65 63 75 72 65 53 74 72 69 6e 67 22 20 2d 65  SecureString" -e
66f0: 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d  q $_cmdlet )..{.
6700: 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20  .$global:_dummy 
6710: 3d 20 63 6f 6e 76 65 72 74 74 6f 2d 73 65 63 75  = convertto-secu
6720: 72 65 73 74 72 69 6e 67 20 22 50 40 73 73 57 30  restring "P@ssW0
6730: 72 44 21 22 20 2d 61 73 70 6c 61 69 6e 74 65 78  rD!" -asplaintex
6740: 74 20 2d 66 6f 72 63 65 0d 0a 7d 0d 0a 0d 0a 0d  t -force..}.....
6750: 0a 69 66 20 28 20 22 46 6f 72 45 61 63 68 2d 4f  .if ( "ForEach-O
6760: 62 6a 65 63 74 22 20 2d 65 71 20 24 5f 63 6d 64  bject" -eq $_cmd
6770: 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c 6f 62 61  let )..{..$globa
6780: 6c 3a 5f 64 75 6d 6d 79 20 3d 20 24 6e 75 6c 6c  l:_dummy = $null
6790: 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47  ..}......if ( "G
67a0: 65 74 2d 41 63 6c 22 20 2d 65 71 20 24 5f 63 6d  et-Acl" -eq $_cm
67b0: 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c 6f 62  dlet )..{..$glob
67c0: 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 47 65 74 2d  al:_dummy = Get-
67d0: 41 63 6c 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28  Acl..}......if (
67e0: 20 22 47 65 74 2d 41 6c 69 61 73 22 20 2d 65 71   "Get-Alias" -eq
67f0: 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a   $_cmdlet )..{..
6800: 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d  $global:_dummy =
6810: 20 28 47 65 74 2d 41 6c 69 61 73 29 5b 30 5d 0d   (Get-Alias)[0].
6820: 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47 65  .}......if ( "Ge
6830: 74 2d 41 75 74 68 65 6e 74 69 63 6f 64 65 53 69  t-AuthenticodeSi
6840: 67 6e 61 74 75 72 65 22 20 2d 65 71 20 24 5f 63  gnature" -eq $_c
6850: 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c 6f  mdlet )..{..$glo
6860: 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 47 65 74  bal:_dummy = Get
6870: 2d 41 75 74 68 65 6e 74 69 63 6f 64 65 53 69 67  -AuthenticodeSig
6880: 6e 61 74 75 72 65 20 24 50 53 48 4f 4d 45 5c 70  nature $PSHOME\p
6890: 6f 77 65 72 73 68 65 6c 6c 2e 65 78 65 0d 0a 7d  owershell.exe..}
68a0: 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47 65 74 2d  ......if ( "Get-
68b0: 43 68 69 6c 64 49 74 65 6d 22 20 2d 65 71 20 24  ChildItem" -eq $
68c0: 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67  _cmdlet )..{..$g
68d0: 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 24  lobal:_dummy = $
68e0: 67 6c 6f 62 61 6c 3a 5f 66 6f 72 67 63 69 0d 0a  global:_forgci..
68f0: 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47 65 74  }......if ( "Get
6900: 2d 43 6f 6d 6d 61 6e 64 22 20 2d 65 71 20 24 5f  -Command" -eq $_
6910: 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c  cmdlet )..{..$gl
6920: 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 40 28  obal:_dummy = @(
6930: 69 65 78 20 24 73 74 72 5b 24 69 2b 31 5d 29 5b  iex $str[$i+1])[
6940: 30 5d 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20  0]..}......if ( 
6950: 22 47 65 74 2d 43 6f 6e 74 65 6e 74 22 20 2d 65  "Get-Content" -e
6960: 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d  q $_cmdlet )..{.
6970: 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20  .$global:_dummy 
6980: 3d 20 28 74 79 70 65 20 24 50 53 48 4f 4d 45 5c  = (type $PSHOME\
6990: 70 72 6f 66 69 6c 65 2e 70 73 31 29 5b 30 5d 0d  profile.ps1)[0].
69a0: 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47 65  .}......if ( "Ge
69b0: 74 2d 43 72 65 64 65 6e 74 69 61 6c 22 20 2d 65  t-Credential" -e
69c0: 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d  q $_cmdlet )..{.
69d0: 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20  .$global:_dummy 
69e0: 3d 20 24 6e 75 6c 6c 0d 0a 7d 0d 0a 0d 0a 0d 0a  = $null..}......
69f0: 69 66 20 28 20 22 47 65 74 2d 43 75 6c 74 75 72  if ( "Get-Cultur
6a00: 65 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20  e" -eq $_cmdlet 
6a10: 29 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64  )..{..$global:_d
6a20: 75 6d 6d 79 20 3d 20 47 65 74 2d 43 75 6c 74 75  ummy = Get-Cultu
6a30: 72 65 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20  re..}......if ( 
6a40: 22 47 65 74 2d 44 61 74 65 22 20 2d 65 71 20 24  "Get-Date" -eq $
6a50: 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67  _cmdlet )..{..$g
6a60: 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 47  lobal:_dummy = G
6a70: 65 74 2d 44 61 74 65 0d 0a 7d 0d 0a 0d 0a 0d 0a  et-Date..}......
6a80: 69 66 20 28 20 22 47 65 74 2d 45 76 65 6e 74 22  if ( "Get-Event"
6a90: 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d   -eq $_cmdlet ).
6aa0: 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d  .{..$global:_dum
6ab0: 6d 79 20 3d 20 28 47 65 74 2d 45 76 65 6e 74 29  my = (Get-Event)
6ac0: 5b 30 5d 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28  [0]..}......if (
6ad0: 20 22 47 65 74 2d 45 76 65 6e 74 4c 6f 67 22 20   "Get-EventLog" 
6ae0: 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a  -eq $_cmdlet )..
6af0: 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d  {..$global:_dumm
6b00: 79 20 3d 20 40 28 69 65 78 20 24 73 74 72 5b 24  y = @(iex $str[$
6b10: 69 2b 31 5d 29 5b 30 5d 0d 0a 7d 0d 0a 0d 0a 0d  i+1])[0]..}.....
6b20: 0a 69 66 20 28 20 22 47 65 74 2d 45 78 65 63 75  .if ( "Get-Execu
6b30: 74 69 6f 6e 50 6f 6c 69 63 79 22 20 2d 65 71 20  tionPolicy" -eq 
6b40: 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24  $_cmdlet )..{..$
6b50: 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20  global:_dummy = 
6b60: 47 65 74 2d 45 78 65 63 75 74 69 6f 6e 50 6f 6c  Get-ExecutionPol
6b70: 69 63 79 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28  icy..}......if (
6b80: 20 22 47 65 74 2d 48 65 6c 70 22 20 2d 65 71 20   "Get-Help" -eq 
6b90: 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24  $_cmdlet )..{..$
6ba0: 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20  global:_dummy = 
6bb0: 47 65 74 2d 48 65 6c 70 20 41 64 64 2d 43 6f 6e  Get-Help Add-Con
6bc0: 74 65 6e 74 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20  tent..}......if 
6bd0: 28 20 22 47 65 74 2d 48 69 73 74 6f 72 79 22 20  ( "Get-History" 
6be0: 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a  -eq $_cmdlet )..
6bf0: 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d  {..$global:_dumm
6c00: 79 20 3d 20 47 65 74 2d 48 69 73 74 6f 72 79 20  y = Get-History 
6c10: 2d 43 6f 75 6e 74 20 31 0d 0a 7d 0d 0a 0d 0a 0d  -Count 1..}.....
6c20: 0a 69 66 20 28 20 22 47 65 74 2d 48 6f 73 74 22  .if ( "Get-Host"
6c30: 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d   -eq $_cmdlet ).
6c40: 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d  .{..$global:_dum
6c50: 6d 79 20 3d 20 47 65 74 2d 48 6f 73 74 0d 0a 7d  my = Get-Host..}
6c60: 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47 65 74 2d  ......if ( "Get-
6c70: 49 74 65 6d 22 20 2d 65 71 20 24 5f 63 6d 64 6c  Item" -eq $_cmdl
6c80: 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c  et )..{..$global
6c90: 3a 5f 64 75 6d 6d 79 20 3d 20 24 67 6c 6f 62 61  :_dummy = $globa
6ca0: 6c 3a 5f 66 6f 72 67 63 69 0d 0a 7d 0d 0a 0d 0a  l:_forgci..}....
6cb0: 0d 0a 69 66 20 28 20 22 47 65 74 2d 49 74 65 6d  ..if ( "Get-Item
6cc0: 50 72 6f 70 65 72 74 79 22 20 2d 65 71 20 24 5f  Property" -eq $_
6cd0: 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c  cmdlet )..{..$gl
6ce0: 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 24 6e  obal:_dummy = $n
6cf0: 75 6c 6c 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28  ull..}......if (
6d00: 20 22 47 65 74 2d 4c 6f 63 61 74 69 6f 6e 22 20   "Get-Location" 
6d10: 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a  -eq $_cmdlet )..
6d20: 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d  {..$global:_dumm
6d30: 79 20 3d 20 47 65 74 2d 4c 6f 63 61 74 69 6f 6e  y = Get-Location
6d40: 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47  ..}......if ( "G
6d50: 65 74 2d 4d 65 6d 62 65 72 22 20 2d 65 71 20 24  et-Member" -eq $
6d60: 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67  _cmdlet )..{..$g
6d70: 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 28  lobal:_dummy = (
6d80: 31 7c 47 65 74 2d 4d 65 6d 62 65 72 29 5b 30 5d  1|Get-Member)[0]
6d90: 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47  ..}......if ( "G
6da0: 65 74 2d 4d 6f 64 75 6c 65 22 20 2d 65 71 20 24  et-Module" -eq $
6db0: 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67  _cmdlet )..{..$g
6dc0: 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 28  lobal:_dummy = (
6dd0: 47 65 74 2d 4d 6f 64 75 6c 65 29 5b 30 5d 0d 0a  Get-Module)[0]..
6de0: 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47 65 74  }......if ( "Get
6df0: 2d 50 66 78 43 65 72 74 69 66 69 63 61 74 65 22  -PfxCertificate"
6e00: 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d   -eq $_cmdlet ).
6e10: 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d  .{..$global:_dum
6e20: 6d 79 20 3d 20 24 6e 75 6c 6c 0d 0a 7d 0d 0a 0d  my = $null..}...
6e30: 0a 0d 0a 69 66 20 28 20 22 47 65 74 2d 50 72 6f  ...if ( "Get-Pro
6e40: 63 65 73 73 22 20 2d 65 71 20 24 5f 63 6d 64 6c  cess" -eq $_cmdl
6e50: 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c  et )..{..$global
6e60: 3a 5f 64 75 6d 6d 79 20 3d 20 70 73 20 70 6f 77  :_dummy = ps pow
6e70: 65 72 73 68 65 6c 6c 0d 0a 7d 0d 0a 0d 0a 0d 0a  ershell..}......
6e80: 69 66 20 28 20 22 47 65 74 2d 50 53 42 72 65 61  if ( "Get-PSBrea
6e90: 6b 70 6f 69 6e 74 22 20 2d 65 71 20 24 5f 63 6d  kpoint" -eq $_cm
6ea0: 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c 6f 62  dlet )..{..$glob
6eb0: 61 6c 3a 5f 64 75 6d 6d 79 20 3d 0d 0a 41 64 64  al:_dummy =..Add
6ec0: 2d 4d 65 6d 62 65 72 20 2d 49 6e 70 75 74 4f 62  -Member -InputOb
6ed0: 6a 65 63 74 20 28 4e 65 77 2d 4f 62 6a 65 63 74  ject (New-Object
6ee0: 20 50 53 4f 62 6a 65 63 74 29 20 20 27 4e 6f 74   PSObject)  'Not
6ef0: 65 50 72 6f 70 65 72 74 79 27 20 20 41 63 74 69  eProperty'  Acti
6f00: 6f 6e 20 20 27 27 20 2d 50 20 7c 0d 0a 41 64 64  on  '' -P |..Add
6f10: 2d 4d 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72  -Member  'NotePr
6f20: 6f 70 65 72 74 79 27 20 20 43 6f 6d 6d 61 6e 64  operty'  Command
6f30: 20 20 27 27 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d    '' -P |..Add-M
6f40: 65 6d 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70  ember  'NoteProp
6f50: 65 72 74 79 27 20 20 45 6e 61 62 6c 65 64 20 20  erty'  Enabled  
6f60: 27 27 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d  '' -P |..Add-Mem
6f70: 62 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72  ber  'NoteProper
6f80: 74 79 27 20 20 48 69 74 43 6f 75 6e 74 20 20 27  ty'  HitCount  '
6f90: 27 20 2d 50 20 7c 0d 0a 41 64 64 2d 4d 65 6d 62  ' -P |..Add-Memb
6fa0: 65 72 20 20 27 4e 6f 74 65 50 72 6f 70 65 72 74  er  'NotePropert
6fb0: 79 27 20 20 49 64 20 20 27 27 20 2d 50 20 7c 0d  y'  Id  '' -P |.
6fc0: 0a 41 64 64 2d 4d 65 6d 62 65 72 20 20 27 4e 6f  .Add-Member  'No
6fd0: 74 65 50 72 6f 70 65 72 74 79 27 20 20 53 63 72  teProperty'  Scr
6fe0: 69 70 74 20 20 27 27 20 2d 50 0d 0a 7d 0d 0a 0d  ipt  '' -P..}...
6ff0: 0a 0d 0a 69 66 20 28 20 22 47 65 74 2d 50 53 43  ...if ( "Get-PSC
7000: 61 6c 6c 53 74 61 63 6b 22 20 2d 65 71 20 24 5f  allStack" -eq $_
7010: 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c  cmdlet )..{..$gl
7020: 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 47 65  obal:_dummy = Ge
7030: 74 2d 50 53 43 61 6c 6c 53 74 61 63 6b 0d 0a 7d  t-PSCallStack..}
7040: 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47 65 74 2d  ......if ( "Get-
7050: 50 53 44 72 69 76 65 22 20 2d 65 71 20 24 5f 63  PSDrive" -eq $_c
7060: 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c 6f  mdlet )..{..$glo
7070: 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 47 65 74  bal:_dummy = Get
7080: 2d 50 53 44 72 69 76 65 20 46 75 6e 63 74 69 6f  -PSDrive Functio
7090: 6e 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22  n..}......if ( "
70a0: 47 65 74 2d 50 53 50 72 6f 76 69 64 65 72 22 20  Get-PSProvider" 
70b0: 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a  -eq $_cmdlet )..
70c0: 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d  {..$global:_dumm
70d0: 79 20 3d 20 47 65 74 2d 50 53 50 72 6f 76 69 64  y = Get-PSProvid
70e0: 65 72 20 46 69 6c 65 53 79 73 74 65 6d 0d 0a 7d  er FileSystem..}
70f0: 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47 65 74 2d  ......if ( "Get-
7100: 50 53 53 6e 61 70 69 6e 22 20 2d 65 71 20 24 5f  PSSnapin" -eq $_
7110: 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c  cmdlet )..{..$gl
7120: 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 47 65  obal:_dummy = Ge
7130: 74 2d 50 53 53 6e 61 70 69 6e 20 4d 69 63 72 6f  t-PSSnapin Micro
7140: 73 6f 66 74 2e 50 6f 77 65 72 53 68 65 6c 6c 2e  soft.PowerShell.
7150: 43 6f 72 65 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20  Core..}......if 
7160: 28 20 22 47 65 74 2d 53 65 72 76 69 63 65 22 20  ( "Get-Service" 
7170: 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a  -eq $_cmdlet )..
7180: 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d  {..$global:_dumm
7190: 79 20 3d 20 28 47 65 74 2d 53 65 72 76 69 63 65  y = (Get-Service
71a0: 29 5b 30 5d 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20  )[0]..}......if 
71b0: 28 20 22 47 65 74 2d 54 72 61 63 65 53 6f 75 72  ( "Get-TraceSour
71c0: 63 65 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74  ce" -eq $_cmdlet
71d0: 20 29 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f   )..{..$global:_
71e0: 64 75 6d 6d 79 20 3d 20 47 65 74 2d 54 72 61 63  dummy = Get-Trac
71f0: 65 53 6f 75 72 63 65 20 41 64 64 4d 65 6d 62 65  eSource AddMembe
7200: 72 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22  r..}......if ( "
7210: 47 65 74 2d 55 49 43 75 6c 74 75 72 65 22 20 2d  Get-UICulture" -
7220: 65 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b  eq $_cmdlet )..{
7230: 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79  ..$global:_dummy
7240: 20 3d 20 47 65 74 2d 55 49 43 75 6c 74 75 72 65   = Get-UICulture
7250: 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47  ..}......if ( "G
7260: 65 74 2d 56 61 72 69 61 62 6c 65 22 20 2d 65 71  et-Variable" -eq
7270: 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a   $_cmdlet )..{..
7280: 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d  $global:_dummy =
7290: 20 47 65 74 2d 56 61 72 69 61 62 6c 65 20 5f 0d   Get-Variable _.
72a0: 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 47 65  .}......if ( "Ge
72b0: 74 2d 57 6d 69 4f 62 6a 65 63 74 22 20 2d 65 71  t-WmiObject" -eq
72c0: 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a   $_cmdlet )..{..
72d0: 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d  $global:_dummy =
72e0: 20 40 28 69 65 78 20 24 73 74 72 5b 24 69 2b 31   @(iex $str[$i+1
72f0: 5d 29 5b 30 5d 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66  ])[0]..}......if
7300: 20 28 20 22 47 72 6f 75 70 2d 4f 62 6a 65 63 74   ( "Group-Object
7310: 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20 29  " -eq $_cmdlet )
7320: 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75  ..{..$global:_du
7330: 6d 6d 79 20 3d 20 31 20 7c 20 67 72 6f 75 70 0d  mmy = 1 | group.
7340: 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22 4d 65  .}......if ( "Me
7350: 61 73 75 72 65 2d 43 6f 6d 6d 61 6e 64 22 20 2d  asure-Command" -
7360: 65 71 20 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b  eq $_cmdlet )..{
7370: 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79  ..$global:_dummy
7380: 20 3d 20 4d 65 61 73 75 72 65 2d 43 6f 6d 6d 61   = Measure-Comma
7390: 6e 64 20 7b 7d 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66  nd {}..}......if
73a0: 20 28 20 22 4d 65 61 73 75 72 65 2d 4f 62 6a 65   ( "Measure-Obje
73b0: 63 74 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74  ct" -eq $_cmdlet
73c0: 20 29 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f   )..{..$global:_
73d0: 64 75 6d 6d 79 20 3d 20 4d 65 61 73 75 72 65 2d  dummy = Measure-
73e0: 4f 62 6a 65 63 74 0d 0a 7d 0d 0a 0d 0a 0d 0a 69  Object..}......i
73f0: 66 20 28 20 22 4e 65 77 2d 50 53 44 72 69 76 65  f ( "New-PSDrive
7400: 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20 29  " -eq $_cmdlet )
7410: 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75  ..{..$global:_du
7420: 6d 6d 79 20 3d 20 20 47 65 74 2d 50 53 44 72 69  mmy =  Get-PSDri
7430: 76 65 20 41 6c 69 61 73 0d 0a 7d 0d 0a 0d 0a 0d  ve Alias..}.....
7440: 0a 69 66 20 28 20 22 4e 65 77 2d 54 69 6d 65 53  .if ( "New-TimeS
7450: 70 61 6e 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65  pan" -eq $_cmdle
7460: 74 20 29 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a  t )..{..$global:
7470: 5f 64 75 6d 6d 79 20 3d 20 4e 65 77 2d 54 69 6d  _dummy = New-Tim
7480: 65 53 70 61 6e 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66  eSpan..}......if
7490: 20 28 20 22 52 65 73 6f 6c 76 65 2d 50 61 74 68   ( "Resolve-Path
74a0: 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 20 29  " -eq $_cmdlet )
74b0: 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75  ..{..$global:_du
74c0: 6d 6d 79 20 3d 20 24 50 57 44 0d 0a 7d 0d 0a 0d  mmy = $PWD..}...
74d0: 0a 0d 0a 69 66 20 28 20 22 53 65 6c 65 63 74 2d  ...if ( "Select-
74e0: 53 74 72 69 6e 67 22 20 2d 65 71 20 24 5f 63 6d  String" -eq $_cm
74f0: 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24 67 6c 6f 62  dlet )..{..$glob
7500: 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 22 20 22 20  al:_dummy = " " 
7510: 7c 20 53 65 6c 65 63 74 2d 53 74 72 69 6e 67 20  | Select-String 
7520: 22 20 22 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28  " "..}......if (
7530: 20 22 53 65 74 2d 44 61 74 65 22 20 2d 65 71 20   "Set-Date" -eq 
7540: 24 5f 63 6d 64 6c 65 74 20 29 0d 0a 7b 0d 0a 24  $_cmdlet )..{..$
7550: 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20  global:_dummy = 
7560: 20 47 65 74 2d 44 61 74 65 0d 0a 7d 0d 0a 0d 0a   Get-Date..}....
7570: 69 66 20 28 20 24 70 72 6f 70 65 72 74 79 20 2d  if ( $property -
7580: 6e 65 20 24 6e 75 6c 6c 29 0d 0a 7b 0d 0a 66 6f  ne $null)..{..fo
7590: 72 65 61 63 68 20 28 20 24 6e 61 6d 65 20 69 6e  reach ( $name in
75a0: 20 24 70 72 6f 70 65 72 74 79 2e 53 70 6c 69 74   $property.Split
75b0: 28 22 3b 22 2c 20 22 52 65 6d 6f 76 65 45 6d 70  (";", "RemoveEmp
75c0: 74 79 45 6e 74 72 69 65 73 22 20 2d 61 73 20 5b  tyEntries" -as [
75d0: 53 79 73 74 65 6d 2e 53 74 72 69 6e 67 53 70 6c  System.StringSpl
75e0: 69 74 4f 70 74 69 6f 6e 73 5d 29 20 29 0d 0a 7b  itOptions]) )..{
75f0: 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79  ..$global:_dummy
7600: 20 3d 20 40 28 24 67 6c 6f 62 61 6c 3a 5f 64 75   = @($global:_du
7610: 6d 6d 79 2e 24 6e 61 6d 65 29 5b 30 5d 0d 0a 7d  mmy.$name)[0]..}
7620: 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a 0d 0a 66 75 6e 63  ..}..}......func
7630: 74 69 6f 6e 20 54 61 62 45 78 70 61 6e 73 69 6f  tion TabExpansio
7640: 6e 20 7b 0d 0a 23 20 54 68 69 73 20 69 73 20 74  n {..# This is t
7650: 68 65 20 64 65 66 61 75 6c 74 20 66 75 6e 63 74  he default funct
7660: 69 6f 6e 20 74 6f 20 75 73 65 20 66 6f 72 20 74  ion to use for t
7670: 61 62 20 65 78 70 61 6e 73 69 6f 6e 2e 20 49 74  ab expansion. It
7680: 20 68 61 6e 64 6c 65 73 20 73 69 6d 70 6c 65 0d   handles simple.
7690: 0a 23 20 6d 65 6d 62 65 72 20 65 78 70 61 6e 73  .# member expans
76a0: 69 6f 6e 20 6f 6e 20 76 61 72 69 61 62 6c 65 73  ion on variables
76b0: 2c 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 20  , variable name 
76c0: 65 78 70 61 6e 73 69 6f 6e 20 61 6e 64 20 70 61  expansion and pa
76d0: 72 61 6d 65 74 65 72 20 63 6f 6d 70 6c 65 74 69  rameter completi
76e0: 6f 6e 0d 0a 23 20 6f 6e 20 63 6f 6d 6d 61 6e 64  on..# on command
76f0: 73 2e 20 49 74 20 64 6f 65 73 6e 27 74 20 75 6e  s. It doesn't un
7700: 64 65 72 73 74 61 6e 64 20 73 74 72 69 6e 67 73  derstand strings
7710: 20 73 6f 20 73 74 72 69 6e 67 73 20 63 6f 6e 74   so strings cont
7720: 61 69 6e 69 6e 67 20 3b 20 7c 20 28 20 6f 72 20  aining ; | ( or 
7730: 7b 20 6d 61 79 0d 0a 23 20 63 61 75 73 65 20 65  { may..# cause e
7740: 78 70 61 6e 73 69 6f 6e 20 74 6f 20 66 61 69 6c  xpansion to fail
7750: 2e 0d 0a 0d 0a 70 61 72 61 6d 28 24 6c 69 6e 65  .....param($line
7760: 2c 20 24 6c 61 73 74 57 6f 72 64 29 0d 0a 0d 0a  , $lastWord)....
7770: 26 20 7b 0d 0a 23 20 48 65 6c 70 65 72 20 66 75  & {..# Helper fu
7780: 6e 63 74 69 6f 6e 20 74 6f 20 77 72 69 74 65 20  nction to write 
7790: 6f 75 74 20 74 68 65 20 6d 61 74 63 68 69 6e 67  out the matching
77a0: 20 73 65 74 20 6f 66 20 6d 65 6d 62 65 72 73 2e   set of members.
77b0: 20 49 74 20 64 65 70 65 6e 64 73 0d 0a 23 20 6f   It depends..# o
77c0: 6e 20 64 79 6e 61 6d 69 63 20 73 63 6f 70 69 6e  n dynamic scopin
77d0: 67 20 74 6f 20 67 65 74 20 24 5f 62 61 73 65 2c  g to get $_base,
77e0: 20 5f 24 65 78 70 72 65 73 73 69 6f 6e 20 61 6e   _$expression an
77f0: 64 20 24 5f 70 61 74 0d 0a 66 75 6e 63 74 69 6f  d $_pat..functio
7800: 6e 20 57 72 69 74 65 2d 4d 65 6d 62 65 72 73 20  n Write-Members 
7810: 28 24 73 65 70 3d 27 2e 27 29 0d 0a 7b 0d 0a 23  ($sep='.')..{..#
7820: 20 65 76 61 6c 75 61 74 65 20 74 68 65 20 65 78   evaluate the ex
7830: 70 72 65 73 73 69 6f 6e 20 74 6f 20 67 65 74 20  pression to get 
7840: 74 68 65 20 6f 62 6a 65 63 74 20 74 6f 20 65 78  the object to ex
7850: 61 6d 69 6e 65 2e 2e 2e 0d 0a 49 6e 76 6f 6b 65  amine.....Invoke
7860: 2d 45 78 70 72 65 73 73 69 6f 6e 20 28 27 24 5f  -Expression ('$_
7870: 76 61 6c 3d 27 20 2b 20 24 5f 65 78 70 72 65 73  val=' + $_expres
7880: 73 69 6f 6e 29 0d 0a 0d 0a 69 66 20 28 20 24 5f  sion)....if ( $_
7890: 65 78 70 72 65 73 73 69 6f 6e 20 2d 6d 61 74 63  expression -matc
78a0: 68 20 27 5e 5c 24 67 6c 6f 62 61 6c 3a 5f 64 75  h '^\$global:_du
78b0: 6d 6d 79 27 20 29 0d 0a 7b 0d 0a 24 74 65 6d 70  mmy' )..{..$temp
78c0: 20 3d 20 24 5f 65 78 70 72 65 73 73 69 6f 6e 20   = $_expression 
78d0: 2d 72 65 70 6c 61 63 65 20 27 5e 5c 24 67 6c 6f  -replace '^\$glo
78e0: 62 61 6c 3a 5f 64 75 6d 6d 79 28 2e 2a 29 27 2c  bal:_dummy(.*)',
78f0: 27 24 31 27 0d 0a 24 5f 65 78 70 72 65 73 73 69  '$1'..$_expressi
7900: 6f 6e 20 3d 20 27 24 5f 27 20 2b 20 24 74 65 6d  on = '$_' + $tem
7910: 70 0d 0a 7d 0d 0a 0d 0a 24 5f 6d 65 74 68 6f 64  p..}....$_method
7920: 20 3d 20 5b 4d 61 6e 61 67 65 6d 65 6e 74 2e 41   = [Management.A
7930: 75 74 6f 6d 61 74 69 6f 6e 2e 50 53 4d 65 6d 62  utomation.PSMemb
7940: 65 72 54 79 70 65 73 5d 20 60 0d 0a 27 4d 65 74  erTypes] `..'Met
7950: 68 6f 64 2c 43 6f 64 65 4d 65 74 68 6f 64 2c 53  hod,CodeMethod,S
7960: 63 72 69 70 74 4d 65 74 68 6f 64 2c 50 61 72 61  criptMethod,Para
7970: 6d 65 74 65 72 69 7a 65 64 50 72 6f 70 65 72 74  meterizedPropert
7980: 79 27 0d 0a 69 66 20 28 24 73 65 70 20 2d 65 71  y'..if ($sep -eq
7990: 20 27 2e 27 29 0d 0a 7b 0d 0a 24 70 61 72 61 6d   '.')..{..$param
79a0: 73 20 3d 20 40 7b 76 69 65 77 20 3d 20 27 65 78  s = @{view = 'ex
79b0: 74 65 6e 64 65 64 27 2c 27 61 64 61 70 74 65 64  tended','adapted
79c0: 27 2c 27 62 61 73 65 27 7d 0d 0a 7d 0d 0a 65 6c  ','base'}..}..el
79d0: 73 65 0d 0a 7b 0d 0a 24 70 61 72 61 6d 73 20 3d  se..{..$params =
79e0: 20 40 7b 73 74 61 74 69 63 3d 24 74 72 75 65 7d   @{static=$true}
79f0: 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 24 5f 76 61  ..}....if ( $_va
7a00: 6c 20 2d 69 73 20 5b 48 61 73 68 74 61 62 6c 65  l -is [Hashtable
7a10: 5d 20 29 0d 0a 7b 0d 0a 5b 4f 62 6a 65 63 74 5b  ] )..{..[Object[
7a20: 5d 5d 24 5f 6b 65 79 73 20 3d 20 24 6e 75 6c 6c  ]]$_keys = $null
7a30: 0d 0a 66 6f 72 65 61 63 68 20 28 20 24 5f 6e 61  ..foreach ( $_na
7a40: 6d 65 20 69 6e 20 24 5f 76 61 6c 2e 4b 65 79 73  me in $_val.Keys
7a50: 20 29 0d 0a 7b 0d 0a 24 5f 6b 65 79 73 20 2b 3d   )..{..$_keys +=
7a60: 20 60 0d 0a 4e 65 77 2d 4f 62 6a 65 63 74 20 4d   `..New-Object M
7a70: 69 63 72 6f 73 6f 66 74 2e 50 6f 77 65 72 53 68  icrosoft.PowerSh
7a80: 65 6c 6c 2e 43 6f 6d 6d 61 6e 64 73 2e 4d 65 6d  ell.Commands.Mem
7a90: 62 65 72 44 65 66 69 6e 69 74 69 6f 6e 20 60 0d  berDefinition `.
7aa0: 0a 5b 69 6e 74 5d 2c 24 5f 6e 61 6d 65 2c 22 50  .[int],$_name,"P
7ab0: 72 6f 70 65 72 74 79 22 2c 30 0d 0a 7d 0d 0a 7d  roperty",0..}..}
7ac0: 0d 0a 0d 0a 69 66 20 28 20 24 5f 6b 65 79 73 20  ....if ( $_keys 
7ad0: 2d 6e 65 20 24 6e 75 6c 6c 20 29 0d 0a 7b 0d 0a  -ne $null )..{..
7ae0: 24 5f 6d 65 6d 62 65 72 73 20 3d 20 5b 4f 62 6a  $_members = [Obj
7af0: 65 63 74 5b 5d 5d 28 47 65 74 2d 4d 65 6d 62 65  ect[]](Get-Membe
7b00: 72 20 40 70 61 72 61 6d 73 20 2d 49 6e 70 75 74  r @params -Input
7b10: 4f 62 6a 65 63 74 20 24 5f 76 61 6c 20 24 5f 70  Object $_val $_p
7b20: 61 74 29 20 2b 20 28 24 5f 6b 65 79 73 20 7c 20  at) + ($_keys | 
7b30: 3f 20 7b 24 5f 2e 6e 61 6d 65 20 2d 6c 69 6b 65  ? {$_.name -like
7b40: 20 24 5f 70 61 74 7d 29 0d 0a 7d 20 65 6c 73 65   $_pat})..} else
7b50: 20 7b 0d 0a 24 5f 6d 65 6d 62 65 72 73 20 3d 20   {..$_members = 
7b60: 28 47 65 74 2d 4d 65 6d 62 65 72 20 40 70 61 72  (Get-Member @par
7b70: 61 6d 73 20 2d 49 6e 70 75 74 4f 62 6a 65 63 74  ams -InputObject
7b80: 20 24 5f 76 61 6c 20 24 5f 70 61 74 29 0d 0a 7d   $_val $_pat)..}
7b90: 0d 0a 0d 0a 66 6f 72 65 61 63 68 20 28 24 5f 6d  ....foreach ($_m
7ba0: 20 69 6e 20 24 5f 6d 65 6d 62 65 72 73 20 7c 20   in $_members | 
7bb0: 53 6f 72 74 2d 4f 62 6a 65 63 74 20 6d 65 6d 62  Sort-Object memb
7bc0: 65 72 74 79 70 65 2c 6e 61 6d 65 29 0d 0a 7b 0d  ertype,name)..{.
7bd0: 0a 69 66 20 28 24 5f 6d 2e 4d 65 6d 62 65 72 54  .if ($_m.MemberT
7be0: 79 70 65 20 2d 62 61 6e 64 20 24 5f 6d 65 74 68  ype -band $_meth
7bf0: 6f 64 29 0d 0a 7b 0d 0a 23 20 52 65 74 75 72 6e  od)..{..# Return
7c00: 20 61 20 6d 65 74 68 6f 64 2e 2e 2e 0d 0a 24 5f   a method.....$_
7c10: 62 61 73 65 20 2b 20 24 5f 65 78 70 72 65 73 73  base + $_express
7c20: 69 6f 6e 20 2b 20 24 73 65 70 20 2b 20 24 5f 6d  ion + $sep + $_m
7c30: 2e 6e 61 6d 65 20 2b 20 27 28 27 0d 0a 7d 0d 0a  .name + '('..}..
7c40: 65 6c 73 65 20 7b 0d 0a 23 20 52 65 74 75 72 6e  else {..# Return
7c50: 20 61 20 70 72 6f 70 65 72 74 79 2e 2e 2e 0d 0a   a property.....
7c60: 24 5f 62 61 73 65 20 2b 20 24 5f 65 78 70 72 65  $_base + $_expre
7c70: 73 73 69 6f 6e 20 2b 20 24 73 65 70 20 2b 20 24  ssion + $sep + $
7c80: 5f 6d 2e 6e 61 6d 65 0d 0a 7d 0d 0a 7d 0d 0a 7d  _m.name..}..}..}
7c90: 0d 0a 24 68 6f 73 74 2e 55 49 2e 52 61 77 55 49  ..$host.UI.RawUI
7ca0: 2e 57 69 6e 64 6f 77 54 69 74 6c 65 20 3d 20 22  .WindowTitle = "
7cb0: 57 69 6e 64 6f 77 73 20 50 6f 77 65 72 53 68 65  Windows PowerShe
7cc0: 6c 6c 20 56 32 20 28 43 54 50 32 29 22 20 2b 20  ll V2 (CTP2)" + 
7cd0: 24 6c 61 73 74 77 6f 72 64 0d 0a 0d 0a 73 77 69  $lastword....swi
7ce0: 74 63 68 20 28 5b 69 6e 74 5d 24 6c 69 6e 65 5b  tch ([int]$line[
7cf0: 2d 31 5d 29 0d 0a 7b 0d 0a 23 20 43 74 72 6c 2b  -1])..{..# Ctrl+
7d00: 44 20 73 65 76 65 72 61 6c 20 64 61 74 65 2f 74  D several date/t
7d10: 69 6d 65 20 66 6f 72 6d 61 74 73 0d 0a 34 20 7b  ime formats..4 {
7d20: 0d 0a 22 5b 44 61 74 65 54 69 6d 65 5d 3a 3a 4e  .."[DateTime]::N
7d30: 6f 77 22 0d 0a 5b 44 61 74 65 54 69 6d 65 5d 3a  ow"..[DateTime]:
7d40: 3a 4e 6f 77 0d 0a 5b 44 61 74 65 54 69 6d 65 5d  :Now..[DateTime]
7d50: 3a 3a 4e 6f 77 2e 54 6f 53 74 72 69 6e 67 28 22  ::Now.ToString("
7d60: 79 79 79 79 4d 4d 64 64 22 29 0d 0a 5b 44 61 74  yyyyMMdd")..[Dat
7d70: 65 54 69 6d 65 5d 3a 3a 4e 6f 77 2e 54 6f 53 74  eTime]::Now.ToSt
7d80: 72 69 6e 67 28 22 4d 4d 64 64 79 79 79 79 22 29  ring("MMddyyyy")
7d90: 0d 0a 5b 44 61 74 65 54 69 6d 65 5d 3a 3a 4e 6f  ..[DateTime]::No
7da0: 77 2e 54 6f 53 74 72 69 6e 67 28 22 79 79 79 79  w.ToString("yyyy
7db0: 4d 4d 64 64 48 48 6d 6d 73 73 22 29 0d 0a 5b 44  MMddHHmmss")..[D
7dc0: 61 74 65 54 69 6d 65 5d 3a 3a 4e 6f 77 2e 54 6f  ateTime]::Now.To
7dd0: 53 74 72 69 6e 67 28 22 4d 4d 64 64 79 79 79 79  String("MMddyyyy
7de0: 48 48 6d 6d 73 73 22 29 0d 0a 27 64 20 66 20 67  HHmmss")..'d f g
7df0: 20 6d 20 6f 20 72 20 74 20 75 20 79 27 2e 53 70   m o r t u y'.Sp
7e00: 6c 69 74 28 22 20 22 29 20 7c 20 25 20 7b 20 5b  lit(" ") | % { [
7e10: 44 61 74 65 54 69 6d 65 5d 3a 3a 4e 6f 77 2e 54  DateTime]::Now.T
7e20: 6f 53 74 72 69 6e 67 28 24 5f 29 20 7d 0d 0a 62  oString($_) }..b
7e30: 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 23 20 43 74  reak;..}....# Ct
7e40: 72 6c 2b 50 20 68 61 6e 64 2d 6f 70 65 72 61 74  rl+P hand-operat
7e50: 65 64 20 70 6f 70 20 66 72 6f 6d 20 63 6f 6d 6d  ed pop from comm
7e60: 61 6e 64 20 62 75 66 66 65 72 20 73 74 61 63 6b  and buffer stack
7e70: 0d 0a 31 36 20 7b 0d 0a 24 5f 62 61 73 65 20 3d  ..16 {..$_base =
7e80: 20 24 6c 61 73 74 77 6f 72 64 2e 53 75 62 53 74   $lastword.SubSt
7e90: 72 69 6e 67 28 30 2c 20 24 6c 61 73 74 77 6f 72  ring(0, $lastwor
7ea0: 64 2e 4c 65 6e 67 74 68 2d 31 29 0d 0a 24 5f 62  d.Length-1)..$_b
7eb0: 61 73 65 20 2b 20 24 67 6c 6f 62 61 6c 3a 5f 63  ase + $global:_c
7ec0: 6d 64 73 74 61 63 6b 2e 50 6f 70 28 29 0d 0a 62  mdstack.Pop()..b
7ed0: 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 23 20 43 74  reak;..}....# Ct
7ee0: 72 6c 2b 52 20 24 48 6f 73 74 2e 55 49 2e 52 61  rl+R $Host.UI.Ra
7ef0: 77 55 49 2e 0d 0a 31 38 20 7b 0d 0a 27 24 48 6f  wUI...18 {..'$Ho
7f00: 73 74 2e 55 49 2e 52 61 77 55 49 2e 27 0d 0a 27  st.UI.RawUI.'..'
7f10: 24 48 6f 73 74 2e 55 49 2e 52 61 77 55 49 27 0d  $Host.UI.RawUI'.
7f20: 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 23 20  .break;..}....# 
7f30: 43 74 72 6c 2b 56 20 70 61 73 74 65 20 63 6c 69  Ctrl+V paste cli
7f40: 70 62 6f 61 72 64 0d 0a 32 32 20 7b 0d 0a 24 5f  pboard..22 {..$_
7f50: 62 61 73 65 20 3d 20 24 6c 61 73 74 77 6f 72 64  base = $lastword
7f60: 2e 53 75 62 53 74 72 69 6e 67 28 30 2c 20 24 6c  .SubString(0, $l
7f70: 61 73 74 77 6f 72 64 2e 4c 65 6e 67 74 68 2d 31  astword.Length-1
7f80: 29 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 63 6c 69 70  )..$global:_clip
7f90: 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 53 79   = New-Object Sy
7fa0: 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 46 6f 72  stem.Windows.For
7fb0: 6d 73 2e 54 65 78 74 42 6f 78 0d 0a 24 67 6c 6f  ms.TextBox..$glo
7fc0: 62 61 6c 3a 5f 63 6c 69 70 2e 4d 75 6c 74 69 6c  bal:_clip.Multil
7fd0: 69 6e 65 20 3d 20 24 74 72 75 65 0d 0a 24 67 6c  ine = $true..$gl
7fe0: 6f 62 61 6c 3a 5f 63 6c 69 70 2e 50 61 73 74 65  obal:_clip.Paste
7ff0: 28 29 0d 0a 24 5f 62 61 73 65 20 2b 20 24 67 6c  ()..$_base + $gl
8000: 6f 62 61 6c 3a 5f 63 6c 69 70 2e 54 65 78 74 0d  obal:_clip.Text.
8010: 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 7d 0d 0a 0d  .break;..}..}...
8020: 0a 0d 0a 73 77 69 74 63 68 20 2d 72 65 67 65 78  ...switch -regex
8030: 20 28 24 6c 61 73 74 57 6f 72 64 29 0d 0a 7b 0d   ($lastWord)..{.
8040: 0a 23 20 48 61 6e 64 6c 65 20 70 72 6f 70 65 72  .# Handle proper
8050: 74 79 20 61 6e 64 20 6d 65 74 68 6f 64 20 65 78  ty and method ex
8060: 70 61 6e 73 69 6f 6e 20 61 74 20 27 24 5f 27 0d  pansion at '$_'.
8070: 0a 27 28 5e 2e 2a 29 28 5c 24 5f 5c 2e 29 28 5c  .'(^.*)(\$_\.)(\
8080: 77 2a 29 24 27 20 7b 0d 0a 24 5f 62 61 73 65 20  w*)$' {..$_base 
8090: 3d 20 24 6d 61 74 63 68 65 73 5b 31 5d 0d 0a 24  = $matches[1]..$
80a0: 5f 65 78 70 72 65 73 73 69 6f 6e 20 3d 20 27 24  _expression = '$
80b0: 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 27 0d 0a  global:_dummy'..
80c0: 24 5f 70 61 74 20 3d 20 24 6d 61 74 63 68 65 73  $_pat = $matches
80d0: 5b 33 5d 20 2b 20 27 2a 27 0d 0a 24 67 6c 6f 62  [3] + '*'..$glob
80e0: 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 24 6e 75 6c  al:_dummy = $nul
80f0: 6c 0d 0a 47 65 74 2d 50 69 70 65 4c 69 6e 65 4f  l..Get-PipeLineO
8100: 62 6a 65 63 74 0d 0a 69 66 20 28 20 24 67 6c 6f  bject..if ( $glo
8110: 62 61 6c 3a 5f 64 75 6d 6d 79 20 2d 65 71 20 24  bal:_dummy -eq $
8120: 6e 75 6c 6c 20 29 0d 0a 7b 0d 0a 69 66 20 28 20  null )..{..if ( 
8130: 24 67 6c 6f 62 61 6c 3a 5f 65 78 70 20 2d 6d 61  $global:_exp -ma
8140: 74 63 68 20 27 5e 5c 24 2e 2a 5c 28 2e 2a 24 27  tch '^\$.*\(.*$'
8150: 20 29 0d 0a 7b 0d 0a 24 74 79 70 65 20 3d 20 28   )..{..$type = (
8160: 20 69 65 78 20 24 67 6c 6f 62 61 6c 3a 5f 65 78   iex $global:_ex
8170: 70 2e 53 70 6c 69 74 28 22 28 22 29 5b 30 5d 20  p.Split("(")[0] 
8180: 29 2e 4f 76 65 72 6c 6f 61 64 44 65 66 69 6e 69  ).OverloadDefini
8190: 74 69 6f 6e 73 5b 30 5d 2e 53 70 6c 69 74 28 22  tions[0].Split("
81a0: 20 22 29 5b 30 5d 20 2d 72 65 70 6c 61 63 65 20   ")[0] -replace 
81b0: 27 5c 5b 5b 5e 5c 5b 5c 5d 5d 2a 5c 5d 24 27 20  '\[[^\[\]]*\]$' 
81c0: 2d 61 73 20 5b 74 79 70 65 5d 0d 0a 0d 0a 69 66  -as [type]....if
81d0: 20 28 20 24 5f 65 78 70 72 65 73 73 69 6f 6e 20   ( $_expression 
81e0: 2d 6d 61 74 63 68 20 27 5e 5c 24 67 6c 6f 62 61  -match '^\$globa
81f0: 6c 3a 5f 64 75 6d 6d 79 27 20 29 0d 0a 7b 0d 0a  l:_dummy' )..{..
8200: 24 74 65 6d 70 20 3d 20 24 5f 65 78 70 72 65 73  $temp = $_expres
8210: 73 69 6f 6e 20 2d 72 65 70 6c 61 63 65 20 27 5e  sion -replace '^
8220: 5c 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 28  \$global:_dummy(
8230: 2e 2a 29 27 2c 27 24 31 27 0d 0a 24 5f 65 78 70  .*)','$1'..$_exp
8240: 72 65 73 73 69 6f 6e 20 3d 20 27 24 5f 27 20 2b  ression = '$_' +
8250: 20 24 74 65 6d 70 0d 0a 7d 0d 0a 0d 0a 66 6f 72   $temp..}....for
8260: 65 61 63 68 20 28 20 24 5f 6d 20 69 6e 20 24 74  each ( $_m in $t
8270: 79 70 65 2e 47 65 74 4d 65 6d 62 65 72 73 28 29  ype.GetMembers()
8280: 20 7c 20 73 6f 72 74 20 6d 65 6d 62 65 72 74 79   | sort memberty
8290: 70 65 2c 6e 61 6d 65 20 7c 20 67 72 6f 75 70 20  pe,name | group 
82a0: 6e 61 6d 65 20 7c 20 3f 20 7b 20 24 5f 2e 4e 61  name | ? { $_.Na
82b0: 6d 65 20 2d 6c 69 6b 65 20 24 5f 70 61 74 20 7d  me -like $_pat }
82c0: 20 7c 20 25 20 7b 20 24 5f 2e 47 72 6f 75 70 5b   | % { $_.Group[
82d0: 30 5d 20 7d 20 29 0d 0a 7b 0d 0a 69 66 20 28 24  0] } )..{..if ($
82e0: 5f 6d 2e 4d 65 6d 62 65 72 54 79 70 65 20 2d 65  _m.MemberType -e
82f0: 71 20 22 4d 65 74 68 6f 64 22 29 0d 0a 7b 0d 0a  q "Method")..{..
8300: 24 5f 62 61 73 65 20 2b 20 24 5f 65 78 70 72 65  $_base + $_expre
8310: 73 73 69 6f 6e 20 2b 20 27 2e 27 20 2b 20 24 5f  ssion + '.' + $_
8320: 6d 2e 6e 61 6d 65 20 2b 20 27 28 27 0d 0a 7d 0d  m.name + '('..}.
8330: 0a 65 6c 73 65 20 7b 0d 0a 24 5f 62 61 73 65 20  .else {..$_base 
8340: 2b 20 24 5f 65 78 70 72 65 73 73 69 6f 6e 20 2b  + $_expression +
8350: 20 27 2e 27 20 2b 20 24 5f 6d 2e 6e 61 6d 65 0d   '.' + $_m.name.
8360: 0a 7d 0d 0a 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d  .}..}..break;..}
8370: 0d 0a 65 6c 73 65 69 66 20 28 20 24 67 6c 6f 62  ..elseif ( $glob
8380: 61 6c 3a 5f 65 78 70 20 2d 6d 61 74 63 68 20 27  al:_exp -match '
8390: 5e 5c 5b 2e 2a 5c 3a 5c 3a 2e 2a 5c 28 2e 2a 24  ^\[.*\:\:.*\(.*$
83a0: 27 20 29 0d 0a 7b 0d 0a 24 74 6e 61 6d 65 2c 20  ' )..{..$tname, 
83b0: 24 6d 6e 61 6d 65 20 3d 20 24 5f 65 78 70 2e 53  $mname = $_exp.S
83c0: 70 6c 69 74 28 22 3a 28 22 2c 20 22 52 65 6d 6f  plit(":(", "Remo
83d0: 76 65 45 6d 70 74 79 45 6e 74 72 69 65 73 22 2d  veEmptyEntries"-
83e0: 61 73 20 5b 53 79 73 74 65 6d 2e 53 74 72 69 6e  as [System.Strin
83f0: 67 53 70 6c 69 74 4f 70 74 69 6f 6e 73 5d 29 5b  gSplitOptions])[
8400: 30 2c 31 5d 0d 0a 24 74 79 70 65 20 3d 20 40 28  0,1]..$type = @(
8410: 69 65 78 20 28 24 74 6e 61 6d 65 20 2b 20 27 2e  iex ($tname + '.
8420: 47 65 74 4d 65 6d 62 65 72 28 22 27 20 2b 20 24  GetMember("' + $
8430: 6d 6e 61 6d 65 20 2b 20 27 22 29 27 29 29 5b 30  mname + '")'))[0
8440: 5d 2e 52 65 74 75 72 6e 54 79 70 65 2e 46 75 6c  ].ReturnType.Ful
8450: 6c 4e 61 6d 65 20 2d 72 65 70 6c 61 63 65 20 27  lName -replace '
8460: 5c 5b 5b 5e 5c 5b 5c 5d 5d 2a 5c 5d 24 27 20 2d  \[[^\[\]]*\]$' -
8470: 61 73 20 5b 74 79 70 65 5d 0d 0a 0d 0a 69 66 20  as [type]....if 
8480: 28 20 24 5f 65 78 70 72 65 73 73 69 6f 6e 20 2d  ( $_expression -
8490: 6d 61 74 63 68 20 27 5e 5c 24 67 6c 6f 62 61 6c  match '^\$global
84a0: 3a 5f 64 75 6d 6d 79 27 20 29 0d 0a 7b 0d 0a 24  :_dummy' )..{..$
84b0: 74 65 6d 70 20 3d 20 24 5f 65 78 70 72 65 73 73  temp = $_express
84c0: 69 6f 6e 20 2d 72 65 70 6c 61 63 65 20 27 5e 5c  ion -replace '^\
84d0: 24 67 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 28 2e  $global:_dummy(.
84e0: 2a 29 27 2c 27 24 31 27 0d 0a 24 5f 65 78 70 72  *)','$1'..$_expr
84f0: 65 73 73 69 6f 6e 20 3d 20 27 24 5f 27 20 2b 20  ession = '$_' + 
8500: 24 74 65 6d 70 0d 0a 7d 0d 0a 0d 0a 66 6f 72 65  $temp..}....fore
8510: 61 63 68 20 28 20 24 5f 6d 20 69 6e 20 24 74 79  ach ( $_m in $ty
8520: 70 65 2e 47 65 74 4d 65 6d 62 65 72 73 28 29 20  pe.GetMembers() 
8530: 7c 20 73 6f 72 74 20 6d 65 6d 62 65 72 74 79 70  | sort membertyp
8540: 65 2c 6e 61 6d 65 20 7c 20 67 72 6f 75 70 20 6e  e,name | group n
8550: 61 6d 65 20 7c 20 3f 20 7b 20 24 5f 2e 4e 61 6d  ame | ? { $_.Nam
8560: 65 20 2d 6c 69 6b 65 20 24 5f 70 61 74 20 7d 20  e -like $_pat } 
8570: 7c 20 25 20 7b 20 24 5f 2e 47 72 6f 75 70 5b 30  | % { $_.Group[0
8580: 5d 20 7d 20 29 0d 0a 7b 0d 0a 69 66 20 28 24 5f  ] } )..{..if ($_
8590: 6d 2e 4d 65 6d 62 65 72 54 79 70 65 20 2d 65 71  m.MemberType -eq
85a0: 20 22 4d 65 74 68 6f 64 22 29 0d 0a 7b 0d 0a 24   "Method")..{..$
85b0: 5f 62 61 73 65 20 2b 20 24 5f 65 78 70 72 65 73  _base + $_expres
85c0: 73 69 6f 6e 20 2b 20 27 2e 27 20 2b 20 24 5f 6d  sion + '.' + $_m
85d0: 2e 6e 61 6d 65 20 2b 20 27 28 27 0d 0a 7d 0d 0a  .name + '('..}..
85e0: 65 6c 73 65 20 7b 0d 0a 24 5f 62 61 73 65 20 2b  else {..$_base +
85f0: 20 24 5f 65 78 70 72 65 73 73 69 6f 6e 20 2b 20   $_expression + 
8600: 27 2e 27 20 2b 20 24 5f 6d 2e 6e 61 6d 65 0d 0a  '.' + $_m.name..
8610: 7d 0d 0a 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d  }..}..break;..}.
8620: 0a 65 6c 73 65 69 66 20 28 20 24 67 6c 6f 62 61  .elseif ( $globa
8630: 6c 3a 5f 65 78 70 20 2d 6d 61 74 63 68 20 27 5e  l:_exp -match '^
8640: 28 5c 24 5c 77 2b 28 5c 5b 5b 30 2d 39 2c 5c 2e  (\$\w+(\[[0-9,\.
8650: 5d 2b 5c 5d 29 2a 28 5c 2e 5c 77 2b 28 5c 5b 5b  ]+\])*(\.\w+(\[[
8660: 30 2d 39 2c 5c 2e 5d 2b 5c 5d 29 2a 29 2a 29 24  0-9,\.]+\])*)*)$
8670: 27 20 29 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a  ' )..{..$global:
8680: 5f 64 75 6d 6d 79 20 3d 20 40 28 69 65 78 20 24  _dummy = @(iex $
8690: 4d 61 74 63 68 65 73 5b 31 5d 29 5b 30 5d 0d 0a  Matches[1])[0]..
86a0: 7d 0d 0a 65 6c 73 65 0d 0a 7b 0d 0a 24 67 6c 6f  }..else..{..$glo
86b0: 62 61 6c 3a 5f 64 75 6d 6d 79 20 3d 20 20 24 67  bal:_dummy =  $g
86c0: 6c 6f 62 61 6c 3a 5f 6d 69 78 0d 0a 7d 0d 0a 7d  lobal:_mix..}..}
86d0: 0d 0a 0d 0a 57 72 69 74 65 2d 4d 65 6d 62 65 72  ....Write-Member
86e0: 73 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a  s..break;..}....
86f0: 23 20 48 61 6e 64 6c 65 20 70 72 6f 70 65 72 74  # Handle propert
8700: 79 20 61 6e 64 20 6d 65 74 68 6f 64 20 65 78 70  y and method exp
8710: 61 6e 73 69 6f 6e 20 72 6f 6f 74 65 64 20 61 74  ansion rooted at
8720: 20 76 61 72 69 61 62 6c 65 73 2e 2e 2e 0d 0a 23   variables.....#
8730: 20 65 2e 67 2e 20 24 61 2e 62 2e 3c 74 61 62 3e   e.g. $a.b.<tab>
8740: 0d 0a 27 28 5e 2e 2a 29 28 5c 24 28 5c 77 7c 5c  ..'(^.*)(\$(\w|\
8750: 2e 29 2b 29 5c 2e 28 5c 77 2a 29 24 27 20 7b 0d  .)+)\.(\w*)$' {.
8760: 0a 24 5f 62 61 73 65 20 3d 20 24 6d 61 74 63 68  .$_base = $match
8770: 65 73 5b 31 5d 0d 0a 24 5f 65 78 70 72 65 73 73  es[1]..$_express
8780: 69 6f 6e 20 3d 20 24 6d 61 74 63 68 65 73 5b 32  ion = $matches[2
8790: 5d 0d 0a 24 5f 70 61 74 20 3d 20 24 6d 61 74 63  ]..$_pat = $matc
87a0: 68 65 73 5b 34 5d 20 2b 20 27 2a 27 0d 0a 5b 76  hes[4] + '*'..[v
87b0: 6f 69 64 5d 20 28 20 69 65 78 20 22 24 5f 65 78  oid] ( iex "$_ex
87c0: 70 72 65 73 73 69 6f 6e 2e 49 73 44 61 74 61 4c  pression.IsDataL
87d0: 61 6e 67 75 61 67 65 4f 6e 6c 79 22 20 29 20 23  anguageOnly" ) #
87e0: 20 66 6f 72 20 5b 53 63 72 69 70 74 42 6c 6f 63   for [ScriptBloc
87f0: 6b 5d 0d 0a 69 66 20 28 20 24 5f 65 78 70 72 65  k]..if ( $_expre
8800: 73 73 69 6f 6e 20 2d 6d 61 74 63 68 20 27 5e 5c  ssion -match '^\
8810: 24 5f 5c 2e 27 20 29 0d 0a 7b 0d 0a 24 5f 65 78  $_\.' )..{..$_ex
8820: 70 72 65 73 73 69 6f 6e 20 3d 20 24 5f 65 78 70  pression = $_exp
8830: 72 65 73 73 69 6f 6e 20 2d 72 65 70 6c 61 63 65  ression -replace
8840: 20 27 5e 5c 24 5f 28 2e 2a 29 27 2c 28 27 24 67   '^\$_(.*)',('$g
8850: 6c 6f 62 61 6c 3a 5f 64 75 6d 6d 79 27 20 2b 20  lobal:_dummy' + 
8860: 27 24 31 27 29 0d 0a 7d 0d 0a 57 72 69 74 65 2d  '$1')..}..Write-
8870: 4d 65 6d 62 65 72 73 0d 0a 62 72 65 61 6b 3b 0d  Members..break;.
8880: 0a 7d 0d 0a 0d 0a 23 20 48 61 6e 64 6c 65 20 73  .}....# Handle s
8890: 69 6d 70 6c 65 20 70 72 6f 70 65 72 74 79 20 61  imple property a
88a0: 6e 64 20 6d 65 74 68 6f 64 20 65 78 70 61 6e 73  nd method expans
88b0: 69 6f 6e 20 6f 6e 20 73 74 61 74 69 63 20 6d 65  ion on static me
88c0: 6d 62 65 72 73 2e 2e 2e 0d 0a 23 20 65 2e 67 2e  mbers.....# e.g.
88d0: 20 5b 64 61 74 65 74 69 6d 65 5d 3a 3a 6e 3c 74   [datetime]::n<t
88e0: 61 62 3e 0d 0a 27 28 5e 2e 2a 29 28 5c 5b 28 5c  ab>..'(^.*)(\[(\
88f0: 77 7c 5c 2e 29 2b 5c 5d 29 5c 3a 5c 3a 28 5c 77  w|\.)+\])\:\:(\w
8900: 2a 29 24 27 20 7b 0d 0a 24 5f 62 61 73 65 20 3d  *)$' {..$_base =
8910: 20 24 6d 61 74 63 68 65 73 5b 31 5d 0d 0a 24 5f   $matches[1]..$_
8920: 65 78 70 72 65 73 73 69 6f 6e 20 3d 20 24 6d 61  expression = $ma
8930: 74 63 68 65 73 5b 32 5d 0d 0a 24 5f 70 61 74 20  tches[2]..$_pat 
8940: 3d 20 24 6d 61 74 63 68 65 73 5b 34 5d 20 2b 20  = $matches[4] + 
8950: 27 2a 27 0d 0a 57 72 69 74 65 2d 4d 65 6d 62 65  '*'..Write-Membe
8960: 72 73 20 27 3a 3a 27 0d 0a 62 72 65 61 6b 3b 0d  rs '::'..break;.
8970: 0a 7d 0d 0a 0d 0a 23 20 48 61 6e 64 6c 65 20 63  .}....# Handle c
8980: 6f 6d 70 6c 65 78 20 70 72 6f 70 65 72 74 79 20  omplex property 
8990: 61 6e 64 20 6d 65 74 68 6f 64 20 65 78 70 61 6e  and method expan
89a0: 73 69 6f 6e 20 6f 6e 20 73 74 61 74 69 63 20 6d  sion on static m
89b0: 65 6d 62 65 72 73 0d 0a 23 20 77 68 65 72 65 20  embers..# where 
89c0: 74 68 65 72 65 20 61 72 65 20 69 6e 74 65 72 6d  there are interm
89d0: 65 64 69 61 74 65 20 70 72 6f 70 65 72 74 69 65  ediate propertie
89e0: 73 2e 2e 2e 0d 0a 23 20 65 2e 67 2e 20 5b 64 61  s.....# e.g. [da
89f0: 74 65 74 69 6d 65 5d 3a 3a 6e 6f 77 2e 64 3c 74  tetime]::now.d<t
8a00: 61 62 3e 0d 0a 27 28 5e 2e 2a 29 28 5c 5b 28 5c  ab>..'(^.*)(\[(\
8a10: 77 7c 5c 2e 29 2b 5c 5d 5c 3a 5c 3a 28 5c 77 2b  w|\.)+\]\:\:(\w+
8a20: 5c 2e 29 2b 29 28 5c 77 2a 29 24 27 20 7b 0d 0a  \.)+)(\w*)$' {..
8a30: 24 5f 62 61 73 65 20 3d 20 24 6d 61 74 63 68 65  $_base = $matche
8a40: 73 5b 31 5d 20 20 23 20 65 76 65 72 79 74 68 69  s[1]  # everythi
8a50: 6e 67 20 62 65 66 6f 72 65 20 74 68 65 20 65 78  ng before the ex
8a60: 70 72 65 73 73 69 6f 6e 0d 0a 24 5f 65 78 70 72  pression..$_expr
8a70: 65 73 73 69 6f 6e 20 3d 20 24 6d 61 74 63 68 65  ession = $matche
8a80: 73 5b 32 5d 2e 54 72 69 6d 45 6e 64 28 27 2e 27  s[2].TrimEnd('.'
8a90: 29 20 23 20 65 78 70 72 65 73 73 69 6f 6e 20 6c  ) # expression l
8aa0: 65 73 73 20 74 72 61 69 6c 69 6e 67 20 27 2e 27  ess trailing '.'
8ab0: 0d 0a 24 5f 70 61 74 20 3d 20 24 6d 61 74 63 68  ..$_pat = $match
8ac0: 65 73 5b 35 5d 20 2b 20 27 2a 27 20 20 23 20 74  es[5] + '*'  # t
8ad0: 68 65 20 6d 65 6d 62 65 72 20 74 6f 20 6c 6f 6f  he member to loo
8ae0: 6b 20 66 6f 72 2e 2e 2e 0d 0a 57 72 69 74 65 2d  k for.....Write-
8af0: 4d 65 6d 62 65 72 73 0d 0a 62 72 65 61 6b 3b 0d  Members..break;.
8b00: 0a 7d 0d 0a 0d 0a 23 20 48 61 6e 64 6c 65 20 76  .}....# Handle v
8b10: 61 72 69 61 62 6c 65 20 6e 61 6d 65 20 65 78 70  ariable name exp
8b20: 61 6e 73 69 6f 6e 2e 2e 2e 0d 0a 27 28 5e 2e 2a  ansion.....'(^.*
8b30: 5c 24 29 28 5c 77 2b 29 24 27 20 7b 0d 0a 24 5f  \$)(\w+)$' {..$_
8b40: 70 72 65 66 69 78 20 3d 20 24 6d 61 74 63 68 65  prefix = $matche
8b50: 73 5b 31 5d 0d 0a 24 5f 76 61 72 4e 61 6d 65 20  s[1]..$_varName 
8b60: 3d 20 24 6d 61 74 63 68 65 73 5b 32 5d 0d 0a 66  = $matches[2]..f
8b70: 6f 72 65 61 63 68 20 28 24 5f 76 20 69 6e 20 47  oreach ($_v in G
8b80: 65 74 2d 43 68 69 6c 64 49 74 65 6d 20 28 27 76  et-ChildItem ('v
8b90: 61 72 69 61 62 6c 65 3a 27 20 2b 20 24 5f 76 61  ariable:' + $_va
8ba0: 72 4e 61 6d 65 20 2b 20 27 2a 27 29 29 0d 0a 7b  rName + '*'))..{
8bb0: 0d 0a 24 5f 70 72 65 66 69 78 20 2b 20 24 5f 76  ..$_prefix + $_v
8bc0: 2e 6e 61 6d 65 0d 0a 7d 0d 0a 62 72 65 61 6b 3b  .name..}..break;
8bd0: 0d 0a 7d 0d 0a 0d 0a 23 20 48 61 6e 64 6c 65 20  ..}....# Handle 
8be0: 65 6e 76 26 66 75 6e 63 74 69 6f 6e 20 64 72 69  env&function dri
8bf0: 76 65 73 20 76 61 72 69 61 62 6c 65 20 6e 61 6d  ves variable nam
8c00: 65 20 65 78 70 61 6e 73 69 6f 6e 2e 2e 2e 0d 0a  e expansion.....
8c10: 27 28 5e 2e 2a 5c 24 29 28 2e 2a 5c 3a 29 28 5c  '(^.*\$)(.*\:)(\
8c20: 77 2b 29 24 27 20 7b 0d 0a 24 5f 70 72 65 66 69  w+)$' {..$_prefi
8c30: 78 20 3d 20 24 6d 61 74 63 68 65 73 5b 31 5d 0d  x = $matches[1].
8c40: 0a 24 5f 64 72 69 76 65 20 3d 20 24 6d 61 74 63  .$_drive = $matc
8c50: 68 65 73 5b 32 5d 0d 0a 24 5f 76 61 72 4e 61 6d  hes[2]..$_varNam
8c60: 65 20 3d 20 24 6d 61 74 63 68 65 73 5b 33 5d 0d  e = $matches[3].
8c70: 0a 69 66 20 28 24 5f 64 72 69 76 65 20 2d 65 71  .if ($_drive -eq
8c80: 20 22 65 6e 76 3a 22 20 2d 6f 72 20 24 5f 64 72   "env:" -or $_dr
8c90: 69 76 65 20 2d 65 71 20 22 66 75 6e 63 74 69 6f  ive -eq "functio
8ca0: 6e 3a 22 29 0d 0a 7b 0d 0a 66 6f 72 65 61 63 68  n:")..{..foreach
8cb0: 20 28 24 5f 76 20 69 6e 20 47 65 74 2d 43 68 69   ($_v in Get-Chi
8cc0: 6c 64 49 74 65 6d 20 28 24 5f 64 72 69 76 65 20  ldItem ($_drive 
8cd0: 2b 20 24 5f 76 61 72 4e 61 6d 65 20 2b 20 27 2a  + $_varName + '*
8ce0: 27 29 29 0d 0a 7b 0d 0a 24 5f 70 72 65 66 69 78  '))..{..$_prefix
8cf0: 20 2b 20 24 5f 64 72 69 76 65 20 2b 20 24 5f 76   + $_drive + $_v
8d00: 2e 6e 61 6d 65 0d 0a 7d 0d 0a 7d 0d 0a 62 72 65  .name..}..}..bre
8d10: 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 23 20 48 61 6e 64  ak;..}....# Hand
8d20: 6c 65 20 61 72 72 61 79 27 73 20 65 6c 65 6d 65  le array's eleme
8d30: 6e 74 20 70 72 6f 70 65 72 74 79 20 61 6e 64 20  nt property and 
8d40: 6d 65 74 68 6f 64 20 65 78 70 61 6e 73 69 6f 6e  method expansion
8d50: 0d 0a 23 20 77 68 65 72 65 20 74 68 65 72 65 20  ..# where there 
8d60: 61 72 65 20 69 6e 74 65 72 6d 65 64 69 61 74 65  are intermediate
8d70: 20 70 72 6f 70 65 72 74 69 65 73 2e 2e 2e 0d 0a   properties.....
8d80: 23 20 65 2e 67 2e 20 66 6f 6f 5b 30 5d 2e 6e 2e  # e.g. foo[0].n.
8d90: 62 3c 74 61 62 3e 0d 0a 27 28 5e 2e 2a 29 28 5c  b<tab>..'(^.*)(\
8da0: 24 28 28 5c 77 2b 5c 2e 29 7c 28 5c 77 2b 28 5c  $((\w+\.)|(\w+(\
8db0: 5b 28 5c 77 7c 2c 29 2b 5c 5d 29 2b 5c 2e 29 29  [(\w|,)+\])+\.))
8dc0: 2b 29 28 5c 77 2a 29 24 27 0d 0a 7b 0d 0a 24 5f  +)(\w*)$'..{..$_
8dd0: 62 61 73 65 20 3d 20 24 6d 61 74 63 68 65 73 5b  base = $matches[
8de0: 31 5d 0d 0a 24 5f 65 78 70 72 65 73 73 69 6f 6e  1]..$_expression
8df0: 20 3d 20 24 6d 61 74 63 68 65 73 5b 32 5d 2e 54   = $matches[2].T
8e00: 72 69 6d 45 6e 64 28 27 2e 27 29 0d 0a 24 5f 70  rimEnd('.')..$_p
8e10: 61 74 20 3d 20 24 4d 61 74 63 68 65 73 5b 38 5d  at = $Matches[8]
8e20: 20 2b 20 27 2a 27 0d 0a 5b 76 6f 69 64 5d 20 28   + '*'..[void] (
8e30: 20 69 65 78 20 22 24 5f 65 78 70 72 65 73 73 69   iex "$_expressi
8e40: 6f 6e 2e 49 73 44 61 74 61 4c 61 6e 67 75 61 67  on.IsDataLanguag
8e50: 65 4f 6e 6c 79 22 20 29 20 23 20 66 6f 72 20 5b  eOnly" ) # for [
8e60: 53 63 72 69 70 74 42 6c 6f 63 6b 5d 0d 0a 69 66  ScriptBlock]..if
8e70: 20 28 20 24 5f 65 78 70 72 65 73 73 69 6f 6e 20   ( $_expression 
8e80: 2d 6d 61 74 63 68 20 27 5e 5c 24 5f 5c 2e 27 20  -match '^\$_\.' 
8e90: 29 0d 0a 7b 0d 0a 24 5f 65 78 70 72 65 73 73 69  )..{..$_expressi
8ea0: 6f 6e 20 3d 20 24 5f 65 78 70 72 65 73 73 69 6f  on = $_expressio
8eb0: 6e 20 2d 72 65 70 6c 61 63 65 20 27 5e 5c 24 5f  n -replace '^\$_
8ec0: 28 2e 2a 29 27 2c 28 27 24 67 6c 6f 62 61 6c 3a  (.*)',('$global:
8ed0: 5f 64 75 6d 6d 79 27 20 2b 20 27 24 31 27 29 0d  _dummy' + '$1').
8ee0: 0a 7d 0d 0a 57 72 69 74 65 2d 4d 65 6d 62 65 72  .}..Write-Member
8ef0: 73 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a  s..break;..}....
8f00: 23 20 48 61 6e 64 6c 65 20 70 72 6f 70 65 72 74  # Handle propert
8f10: 79 20 61 6e 64 20 6d 65 74 68 6f 64 20 65 78 70  y and method exp
8f20: 61 6e 73 69 6f 6e 20 72 6f 6f 74 65 64 20 61 74  ansion rooted at
8f30: 20 74 79 70 65 20 6f 62 6a 65 63 74 2e 2e 2e 0d   type object....
8f40: 0a 23 20 65 2e 67 2e 20 5b 53 79 73 74 65 6d 2e  .# e.g. [System.
8f50: 54 79 70 65 5d 2e 61 3c 74 61 62 3e 0d 0a 27 28  Type].a<tab>..'(
8f60: 5e 5c 5b 28 5c 77 7c 5c 2e 29 2b 5c 5d 29 5c 2e  ^\[(\w|\.)+\])\.
8f70: 28 5c 77 2a 29 24 27 0d 0a 7b 0d 0a 69 66 20 28  (\w*)$'..{..if (
8f80: 20 24 28 69 65 78 20 24 4d 61 74 63 68 65 73 5b   $(iex $Matches[
8f90: 31 5d 29 20 2d 69 73 6e 6f 74 20 5b 53 79 73 74  1]) -isnot [Syst
8fa0: 65 6d 2e 54 79 70 65 5d 20 29 20 7b 20 62 72 65  em.Type] ) { bre
8fb0: 61 6b 3b 20 7d 0d 0a 24 5f 65 78 70 72 65 73 73  ak; }..$_express
8fc0: 69 6f 6e 20 3d 20 24 4d 61 74 63 68 65 73 5b 31  ion = $Matches[1
8fd0: 5d 0d 0a 24 5f 70 61 74 20 3d 20 24 4d 61 74 63  ]..$_pat = $Matc
8fe0: 68 65 73 5b 24 6d 61 74 63 68 65 73 2e 43 6f 75  hes[$matches.Cou
8ff0: 6e 74 2d 31 5d 20 2b 20 27 2a 27 0d 0a 57 72 69  nt-1] + '*'..Wri
9000: 74 65 2d 4d 65 6d 62 65 72 73 0d 0a 62 72 65 61  te-Members..brea
9010: 6b 3b 0d 0a 7d 0d 0a 0d 0a 23 20 48 61 6e 64 6c  k;..}....# Handl
9020: 65 20 63 6f 6d 70 6c 65 78 20 70 72 6f 70 65 72  e complex proper
9030: 74 79 20 61 6e 64 20 6d 65 74 68 6f 64 20 65 78  ty and method ex
9040: 70 61 6e 73 69 6f 6e 20 6f 6e 20 74 79 70 65 20  pansion on type 
9050: 6f 62 6a 65 63 74 20 6d 65 6d 62 65 72 73 0d 0a  object members..
9060: 23 20 77 68 65 72 65 20 74 68 65 72 65 20 61 72  # where there ar
9070: 65 20 69 6e 74 65 72 6d 65 64 69 61 74 65 20 70  e intermediate p
9080: 72 6f 70 65 72 74 69 65 73 2e 2e 2e 0d 0a 23 20  roperties.....# 
9090: 65 2e 67 2e 20 5b 64 61 74 65 74 69 6d 65 5d 2e  e.g. [datetime].
90a0: 41 73 73 65 6d 62 6c 79 2e 61 3c 74 61 62 3e 0d  Assembly.a<tab>.
90b0: 0a 27 5e 28 5c 5b 28 5c 77 7c 5c 2e 29 2b 5c 5d  .'^(\[(\w|\.)+\]
90c0: 5c 2e 28 5c 77 2b 5c 2e 29 2b 29 28 5c 77 2a 29  \.(\w+\.)+)(\w*)
90d0: 24 27 20 7b 0d 0a 24 5f 65 78 70 72 65 73 73 69  $' {..$_expressi
90e0: 6f 6e 20 3d 20 24 6d 61 74 63 68 65 73 5b 31 5d  on = $matches[1]
90f0: 2e 54 72 69 6d 45 6e 64 28 27 2e 27 29 20 23 20  .TrimEnd('.') # 
9100: 65 78 70 72 65 73 73 69 6f 6e 20 6c 65 73 73 20  expression less 
9110: 74 72 61 69 6c 69 6e 67 20 27 2e 27 0d 0a 24 5f  trailing '.'..$_
9120: 70 61 74 20 3d 20 24 6d 61 74 63 68 65 73 5b 34  pat = $matches[4
9130: 5d 20 2b 20 27 2a 27 20 20 23 20 74 68 65 20 6d  ] + '*'  # the m
9140: 65 6d 62 65 72 20 74 6f 20 6c 6f 6f 6b 20 66 6f  ember to look fo
9150: 72 2e 2e 2e 0d 0a 69 66 20 28 20 24 28 69 65 78  r.....if ( $(iex
9160: 20 24 5f 65 78 70 72 65 73 73 69 6f 6e 29 20 2d   $_expression) -
9170: 65 71 20 24 6e 75 6c 6c 20 29 20 7b 20 62 72 65  eq $null ) { bre
9180: 61 6b 3b 20 7d 0d 0a 57 72 69 74 65 2d 4d 65 6d  ak; }..Write-Mem
9190: 62 65 72 73 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d  bers..break;..}.
91a0: 0a 0d 0a 23 20 48 61 6e 64 6c 65 20 70 72 6f 70  ...# Handle prop
91b0: 65 72 74 79 20 61 6e 64 20 6d 65 74 68 6f 64 20  erty and method 
91c0: 65 78 70 61 6e 73 69 6f 6e 20 72 6f 6f 74 65 64  expansion rooted
91d0: 20 61 74 20 63 6c 6f 73 65 20 70 61 72 65 6e 74   at close parent
91e0: 68 65 73 2e 2e 2e 0d 0a 23 20 65 2e 67 2e 20 28  hes.....# e.g. (
91f0: 31 32 33 29 2e 61 3c 74 61 62 3e 0d 0a 27 5e 28  123).a<tab>..'^(
9200: 2e 2a 29 5c 29 28 28 5c 77 7c 5c 2e 29 2a 29 5c  .*)\)((\w|\.)*)\
9210: 2e 28 5c 77 2a 29 24 27 20 7b 0d 0a 24 5f 62 61  .(\w*)$' {..$_ba
9220: 73 65 20 3d 20 24 4d 61 74 63 68 65 73 5b 31 5d  se = $Matches[1]
9230: 20 2b 20 22 29 22 0d 0a 69 66 20 28 20 24 6d 61   + ")"..if ( $ma
9240: 74 63 68 65 73 5b 33 5d 20 2d 65 71 20 24 6e 75  tches[3] -eq $nu
9250: 6c 6c 29 20 7b 20 24 5f 65 78 70 72 65 73 73 69  ll) { $_expressi
9260: 6f 6e 20 3d 20 27 5b 53 79 73 74 65 6d 2e 54 79  on = '[System.Ty
9270: 70 65 5d 27 20 7d 0d 0a 65 6c 73 65 20 7b 20 24  pe]' }..else { $
9280: 5f 65 78 70 72 65 73 73 69 6f 6e 20 3d 20 27 5b  _expression = '[
9290: 53 79 73 74 65 6d 2e 54 79 70 65 5d 27 20 2b 20  System.Type]' + 
92a0: 24 4d 61 74 63 68 65 73 5b 32 5d 20 7d 0d 0a 24  $Matches[2] }..$
92b0: 5f 70 61 74 20 3d 20 24 6d 61 74 63 68 65 73 5b  _pat = $matches[
92c0: 34 5d 20 2b 20 27 2a 27 0d 0a 69 65 78 20 22 24  4] + '*'..iex "$
92d0: 5f 65 78 70 72 65 73 73 69 6f 6e 20 7c 20 47 65  _expression | Ge
92e0: 74 2d 4d 65 6d 62 65 72 20 24 5f 70 61 74 20 7c  t-Member $_pat |
92f0: 20 73 6f 72 74 20 4d 65 6d 62 65 72 54 79 70 65   sort MemberType
9300: 2c 4e 61 6d 65 22 20 7c 0d 0a 25 20 7b 0d 0a 69  ,Name" |..% {..i
9310: 66 20 28 20 24 5f 2e 4d 65 6d 62 65 72 54 79 70  f ( $_.MemberTyp
9320: 65 20 2d 6c 69 6b 65 20 22 2a 4d 65 74 68 6f 64  e -like "*Method
9330: 2a 22 20 2d 6f 72 20 24 5f 2e 4d 65 6d 62 65 72  *" -or $_.Member
9340: 54 79 70 65 20 2d 6c 69 6b 65 20 22 2a 50 61 72  Type -like "*Par
9350: 61 6d 65 74 65 72 69 7a 65 64 2a 22 20 29 20 7b  ameterized*" ) {
9360: 20 24 70 61 72 65 6e 74 68 65 73 20 3d 20 22 28   $parenthes = "(
9370: 22 20 7d 0d 0a 69 66 20 28 20 24 4d 61 74 63 68  " }..if ( $Match
9380: 65 73 5b 32 5d 20 2d 65 71 20 22 22 20 29 20 7b  es[2] -eq "" ) {
9390: 20 24 5f 62 61 73 65 20 2b 20 22 2e 22 20 2b 20   $_base + "." + 
93a0: 24 5f 2e 4e 61 6d 65 20 2b 20 24 70 61 72 65 6e  $_.Name + $paren
93b0: 74 68 65 73 20 7d 0d 0a 65 6c 73 65 20 7b 20 24  thes }..else { $
93c0: 5f 62 61 73 65 20 2b 20 24 4d 61 74 63 68 65 73  _base + $Matches
93d0: 5b 32 5d 20 2b 20 22 2e 22 20 2b 20 24 5f 2e 4e  [2] + "." + $_.N
93e0: 61 6d 65 20 2b 20 24 70 61 72 65 6e 74 68 65 73  ame + $parenthes
93f0: 20 7d 0d 0a 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d   }..}..break;..}
9400: 0d 0a 0d 0a 23 20 48 61 6e 64 6c 65 20 2e 4e 45  ....# Handle .NE
9410: 54 20 74 79 70 65 20 6e 61 6d 65 20 65 78 70 61  T type name expa
9420: 6e 73 69 6f 6e 20 2e 2e 2e 0d 0a 23 20 65 2e 67  nsion .....# e.g
9430: 2e 20 5b 4d 69 63 72 6f 73 6f 66 74 2e 50 6f 77  . [Microsoft.Pow
9440: 65 72 53 68 65 6c 6c 2e 43 6f 6d 3c 74 61 62 3e  erShell.Com<tab>
9450: 0d 0a 27 5e 5c 5b 28 5c 77 2b 28 5c 2e 5c 77 2a  ..'^\[(\w+(\.\w*
9460: 29 2a 29 24 27 20 7b 0d 0a 24 5f 6f 70 74 20 3d  )*)$' {..$_opt =
9470: 20 24 6d 61 74 63 68 65 73 5b 31 5d 20 2b 20 27   $matches[1] + '
9480: 2a 27 0d 0a 69 66 20 28 20 24 5f 6f 70 74 20 2d  *'..if ( $_opt -
9490: 65 71 20 22 2a 22 20 29 0d 0a 7b 0d 0a 24 5f 54  eq "*" )..{..$_T
94a0: 79 70 65 41 63 63 65 6c 65 72 61 74 6f 72 73 20  ypeAccelerators 
94b0: 2d 6c 69 6b 65 20 24 5f 6f 70 74 20 2d 72 65 70  -like $_opt -rep
94c0: 6c 61 63 65 20 27 5e 28 2e 2a 29 24 27 2c 20 27  lace '^(.*)$', '
94d0: 5b 24 31 5d 27 0d 0a 7d 0d 0a 65 6c 73 65 0d 0a  [$1]'..}..else..
94e0: 7b 0d 0a 24 5f 54 79 70 65 41 63 63 65 6c 65 72  {..$_TypeAcceler
94f0: 61 74 6f 72 73 20 2d 6c 69 6b 65 20 24 5f 6f 70  ators -like $_op
9500: 74 20 2d 72 65 70 6c 61 63 65 20 27 5e 28 2e 2a  t -replace '^(.*
9510: 29 24 27 2c 20 27 5b 24 31 5d 27 0d 0a 22 43 6d  )$', '[$1]'.."Cm
9520: 64 6c 65 74 42 69 6e 64 69 6e 67 22 2c 20 22 50  dletBinding", "P
9530: 61 72 61 6d 65 74 65 72 22 2c 20 22 41 6c 69 61  arameter", "Alia
9540: 73 22 2c 0d 0a 22 56 61 6c 69 64 61 74 65 41 72  s",.."ValidateAr
9550: 67 75 6d 65 6e 74 73 22 2c 20 22 56 61 6c 69 64  guments", "Valid
9560: 61 74 65 43 6f 75 6e 74 22 2c 20 22 56 61 6c 69  ateCount", "Vali
9570: 64 61 74 65 45 6e 75 6d 65 72 61 74 65 64 41 72  dateEnumeratedAr
9580: 67 75 6d 65 6e 74 73 22 2c 20 22 56 61 6c 69 64  guments", "Valid
9590: 61 74 65 4c 65 6e 67 74 68 22 2c 0d 0a 22 56 61  ateLength",.."Va
95a0: 6c 69 64 61 74 65 4e 6f 74 4e 75 6c 6c 22 2c 20  lidateNotNull", 
95b0: 22 56 61 6c 69 64 61 74 65 4e 6f 74 4e 75 6c 6c  "ValidateNotNull
95c0: 4f 72 45 6d 70 74 79 22 2c 20 22 56 61 6c 69 64  OrEmpty", "Valid
95d0: 61 74 65 50 61 74 74 65 72 6e 22 2c 20 22 56 61  atePattern", "Va
95e0: 6c 69 64 61 74 65 52 61 6e 67 65 22 2c 0d 0a 22  lidateRange",.."
95f0: 56 61 6c 69 64 61 74 65 53 63 72 69 70 74 22 2c  ValidateScript",
9600: 20 22 56 61 6c 69 64 61 74 65 53 65 74 22 2c 20   "ValidateSet", 
9610: 22 41 6c 6c 6f 77 45 6d 70 74 79 43 6f 6c 6c 65  "AllowEmptyColle
9620: 63 74 69 6f 6e 22 2c 20 22 41 6c 6c 6f 77 45 6d  ction", "AllowEm
9630: 70 74 79 53 74 72 69 6e 67 22 2c 20 22 41 6c 6c  ptyString", "All
9640: 6f 77 4e 75 6c 6c 22 20 60 0d 0a 2d 6c 69 6b 65  owNull" `..-like
9650: 20 24 5f 6f 70 74 20 2d 72 65 70 6c 61 63 65 20   $_opt -replace 
9660: 27 5e 28 2e 2a 29 24 27 2c 20 27 5b 24 31 28 27  '^(.*)$', '[$1('
9670: 0d 0a 57 72 69 74 65 2d 43 6c 61 73 73 4e 61 6d  ..Write-ClassNam
9680: 65 73 20 24 5f 54 79 70 65 4e 61 6d 65 73 5f 53  es $_TypeNames_S
9690: 79 73 74 65 6d 20 28 24 5f 6f 70 74 2e 53 70 6c  ystem ($_opt.Spl
96a0: 69 74 28 22 2e 22 29 2e 43 6f 75 6e 74 2d 31 29  it(".").Count-1)
96b0: 20 27 5b 27 0d 0a 57 72 69 74 65 2d 43 6c 61 73   '['..Write-Clas
96c0: 73 4e 61 6d 65 73 20 24 5f 54 79 70 65 4e 61 6d  sNames $_TypeNam
96d0: 65 73 20 28 24 5f 6f 70 74 2e 53 70 6c 69 74 28  es ($_opt.Split(
96e0: 22 2e 22 29 2e 43 6f 75 6e 74 2d 31 29 20 27 5b  ".").Count-1) '[
96f0: 27 0d 0a 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d  '..}..break;..}.
9700: 0a 0d 0a 23 20 48 61 6e 64 6c 65 20 66 69 6c 65  ...# Handle file
9710: 2f 64 69 72 65 63 74 6f 72 79 20 6e 61 6d 65 20  /directory name 
9720: 77 68 69 63 68 20 63 6f 6e 74 61 69 6e 73 20 24  which contains $
9730: 65 6e 76 3a 20 76 61 72 69 61 62 6c 65 0d 0a 23  env: variable..#
9740: 20 65 2e 67 2e 20 20 24 65 6e 76 3a 77 69 6e 64   e.g.  $env:wind
9750: 69 72 5c 3c 74 61 62 3e 0d 0a 27 5e 5c 24 28 65  ir\<tab>..'^\$(e
9760: 6e 76 3a 29 3f 5c 77 2b 28 5b 5c 5c 2f 5d 5b 5e  nv:)?\w+([\\/][^
9770: 5c 5c 2f 5d 2a 29 2a 24 27 20 7b 0d 0a 24 70 61  \\/]*)*$' {..$pa
9780: 74 68 20 3d 20 69 65 78 20 28 27 22 27 20 2b 20  th = iex ('"' + 
9790: 24 4d 61 74 63 68 65 73 5b 30 5d 20 2b 20 27 22  $Matches[0] + '"
97a0: 27 29 0d 0a 69 66 20 28 20 24 4d 61 74 63 68 65  ')..if ( $Matche
97b0: 73 5b 32 5d 2e 4c 65 6e 67 74 68 20 2d 67 74 20  s[2].Length -gt 
97c0: 31 20 29 0d 0a 7b 0d 0a 24 70 61 72 65 6e 74 20  1 )..{..$parent 
97d0: 3d 20 53 70 6c 69 74 2d 50 61 74 68 20 24 70 61  = Split-Path $pa
97e0: 74 68 20 2d 50 61 72 65 6e 74 0d 0a 24 6c 65 61  th -Parent..$lea
97f0: 66 20 3d 20 28 53 70 6c 69 74 2d 50 61 74 68 20  f = (Split-Path 
9800: 24 70 61 74 68 20 2d 4c 65 61 66 29 20 2b 20 27  $path -Leaf) + '
9810: 2a 27 0d 0a 7d 0d 0a 65 6c 73 65 0d 0a 7b 0d 0a  *'..}..else..{..
9820: 24 70 61 72 65 6e 74 20 3d 20 24 70 61 74 68 0d  $parent = $path.
9830: 0a 24 6c 65 61 66 20 3d 20 27 2a 27 0d 0a 7d 0d  .$leaf = '*'..}.
9840: 0a 69 66 20 28 20 54 65 73 74 2d 50 61 74 68 20  .if ( Test-Path 
9850: 24 70 61 72 65 6e 74 20 29 0d 0a 7b 0d 0a 24 69  $parent )..{..$i
9860: 20 3d 20 24 4d 61 74 63 68 65 73 5b 30 5d 2e 4c   = $Matches[0].L
9870: 61 73 74 49 6e 64 65 78 4f 66 41 6e 79 28 22 2f  astIndexOfAny("/
9880: 5c 22 29 0d 0a 24 5f 62 61 73 65 20 3d 20 24 4d  \")..$_base = $M
9890: 61 74 63 68 65 73 5b 30 5d 2e 53 75 62 73 74 72  atches[0].Substr
98a0: 69 6e 67 28 30 2c 24 69 2b 31 29 0d 0a 5b 49 4f  ing(0,$i+1)..[IO
98b0: 2e 44 69 72 65 63 74 6f 72 79 5d 3a 3a 47 65 74  .Directory]::Get
98c0: 46 69 6c 65 53 79 73 74 65 6d 45 6e 74 72 69 65  FileSystemEntrie
98d0: 73 28 20 24 70 61 72 65 6e 74 2c 20 24 6c 65 61  s( $parent, $lea
98e0: 66 20 29 20 7c 20 25 20 7b 20 24 5f 62 61 73 65  f ) | % { $_base
98f0: 20 2b 20 28 24 5f 2e 53 70 6c 69 74 28 22 5c 2f   + ($_.Split("\/
9900: 22 29 5b 2d 31 5d 20 2d 72 65 70 6c 61 63 65 20  ")[-1] -replace 
9910: 27 28 5b 5c 24 5c 73 26 5d 29 27 2c 27 60 24 31  '([\$\s&])','`$1
9920: 27 20 2d 72 65 70 6c 61 63 65 20 27 28 5b 5b 5c  ' -replace '([[\
9930: 5d 5d 29 27 2c 20 27 60 60 60 60 24 31 27 29 20  ]])', '````$1') 
9940: 7d 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a 23 20 48 61 6e  }..}..}....# Han
9950: 64 6c 65 20 66 69 6c 65 20 67 6c 6f 62 20 65 78  dle file glob ex
9960: 70 61 6e 73 69 6f 6e 20 2e 2e 2e 0d 0a 23 20 65  pansion .....# e
9970: 2e 67 2e 20 2a 2e 74 78 74 7e 61 62 6f 75 74 2a  .g. *.txt~about*
9980: 40 3c 74 61 62 3e 0d 0a 27 5e 28 5c 5e 3f 28 5b  @<tab>..'^(\^?([
9990: 5e 7e 5d 2b 29 29 28 7e 28 2e 2a 29 29 2a 40 24  ^~]+))(~(.*))*@$
99a0: 27 20 7b 0d 0a 69 66 20 28 20 24 4d 61 74 63 68  ' {..if ( $Match
99b0: 65 73 5b 31 5d 20 2d 6e 6f 74 6c 69 6b 65 20 22  es[1] -notlike "
99c0: 5e 2a 22 20 29 0d 0a 7b 0d 0a 24 69 6e 63 6c 75  ^*" )..{..$inclu
99d0: 64 65 20 3d 20 24 4d 61 74 63 68 65 73 5b 32 5d  de = $Matches[2]
99e0: 20 2d 72 65 70 6c 61 63 65 20 27 60 60 27 2c 27   -replace '``','
99f0: 60 27 0d 0a 69 66 20 28 20 24 4d 61 74 63 68 65  `'..if ( $Matche
9a00: 73 5b 33 5d 20 29 0d 0a 7b 0d 0a 24 65 78 63 6c  s[3] )..{..$excl
9a10: 75 64 65 20 3d 20 24 4d 61 74 63 68 65 73 5b 33  ude = $Matches[3
9a20: 5d 2e 53 70 6c 69 74 28 22 7e 22 2c 20 22 52 65  ].Split("~", "Re
9a30: 6d 6f 76 65 45 6d 70 74 79 45 6e 74 72 69 65 73  moveEmptyEntries
9a40: 22 20 2d 61 73 20 5b 53 79 73 74 65 6d 2e 53 74  " -as [System.St
9a50: 72 69 6e 67 53 70 6c 69 74 4f 70 74 69 6f 6e 73  ringSplitOptions
9a60: 5d 29 20 2d 72 65 70 6c 61 63 65 20 27 60 60 27  ]) -replace '``'
9a70: 2c 27 60 27 0d 0a 7d 0d 0a 7d 0d 0a 65 6c 73 65  ,'`'..}..}..else
9a80: 0d 0a 7b 0d 0a 24 69 6e 63 6c 75 64 65 20 3d 20  ..{..$include = 
9a90: 22 2a 22 0d 0a 24 65 78 63 6c 75 64 65 20 3d 20  "*"..$exclude = 
9aa0: 24 4d 61 74 63 68 65 73 5b 32 5d 20 2d 72 65 70  $Matches[2] -rep
9ab0: 6c 61 63 65 20 27 60 60 27 2c 27 60 27 0d 0a 7d  lace '``','`'..}
9ac0: 0d 0a 24 66 73 65 20 3d 20 5b 49 4f 2e 44 69 72  ..$fse = [IO.Dir
9ad0: 65 63 74 6f 72 79 5d 3a 3a 47 65 74 46 69 6c 65  ectory]::GetFile
9ae0: 53 79 73 74 65 6d 45 6e 74 72 69 65 73 28 24 50  SystemEntries($P
9af0: 57 44 29 0d 0a 24 66 73 65 20 3d 20 24 66 73 65  WD)..$fse = $fse
9b00: 20 2d 72 65 70 6c 61 63 65 20 27 2e 2a 5b 5c 5c   -replace '.*[\\
9b10: 2f 5d 28 5b 5e 2f 5c 5c 5d 2a 29 24 27 2c 27 24  /]([^/\\]*)$','$
9b20: 31 27 0d 0a 25 20 2d 69 6e 20 28 24 66 73 65 20  1'..% -in ($fse 
9b30: 2d 6c 69 6b 65 20 24 69 6e 63 6c 75 64 65 29 20  -like $include) 
9b40: 7b 20 24 66 73 65 20 3d 20 24 5f 3b 20 24 65 78  { $fse = $_; $ex
9b50: 63 6c 75 64 65 20 7c 20 25 20 7b 20 24 66 73 65  clude | % { $fse
9b60: 20 3d 20 24 66 73 65 20 2d 6e 6f 74 6c 69 6b 65   = $fse -notlike
9b70: 20 24 5f 20 7d 20 7d 0d 0a 24 66 73 65 20 3d 20   $_ } }..$fse = 
9b80: 24 66 73 65 20 2d 72 65 70 6c 61 63 65 20 27 5e  $fse -replace '^
9b90: 2e 2a 5c 73 2e 2a 24 27 2c 20 28 22 27 60 24 30  .*\s.*$', ("'`$0
9ba0: 27 22 29 0d 0a 24 66 73 65 20 3d 20 24 66 73 65  '")..$fse = $fse
9bb0: 20 2d 72 65 70 6c 61 63 65 20 27 28 5b 5c 5b 5c   -replace '([\[\
9bc0: 5d 5d 29 27 2c 20 27 60 60 24 31 27 20 2d 72 65  ]])', '``$1' -re
9bd0: 70 6c 61 63 65 20 27 5e 2e 2a 28 5b 5c 5b 5c 5d  place '^.*([\[\]
9be0: 5d 29 2e 2a 24 27 2c 20 28 22 27 60 24 30 27 22  ]).*$', ("'`$0'"
9bf0: 29 0d 0a 24 66 73 65 20 3d 20 24 66 73 65 20 2d  )..$fse = $fse -
9c00: 72 65 70 6c 61 63 65 20 22 27 27 22 2c 20 22 27  replace "''", "'
9c10: 22 0d 0a 24 4f 46 53 20 3d 20 22 2c 20 22 3b 20  "..$OFS = ", "; 
9c20: 22 24 66 73 65 22 0d 0a 24 4f 46 53 20 3d 20 22  "$fse"..$OFS = "
9c30: 2c 20 22 3b 20 22 2a 20 2d 46 69 6c 74 65 72 20  , "; "* -Filter 
9c40: 24 69 6e 63 6c 75 64 65 20 22 20 2b 20 24 28 69  $include " + $(i
9c50: 66 28 24 65 78 63 6c 75 64 65 29 7b 22 2d 45 78  f($exclude){"-Ex
9c60: 63 6c 75 64 65 20 24 65 78 63 6c 75 64 65 22 7d  clude $exclude"}
9c70: 29 0d 0a 24 4d 61 74 63 68 65 73 5b 30 5d 2e 53  )..$Matches[0].S
9c80: 75 62 73 74 72 69 6e 67 28 30 2c 20 24 4d 61 74  ubstring(0, $Mat
9c90: 63 68 65 73 5b 30 5d 2e 4c 65 6e 67 74 68 2d 31  ches[0].Length-1
9ca0: 29 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a  )..break;..}....
9cb0: 23 20 48 61 6e 64 6c 65 20 63 6f 6d 6d 61 6e 64  # Handle command
9cc0: 20 62 75 66 66 65 72 20 73 74 61 63 6b 2e 2e 2e   buffer stack...
9cd0: 0d 0a 27 28 2e 2a 29 3b 28 2e 3f 29 24 27 20 7b  ..'(.*);(.?)$' {
9ce0: 0d 0a 24 5f 62 61 73 65 20 3d 20 24 4d 61 74 63  ..$_base = $Matc
9cf0: 68 65 73 5b 31 5d 0d 0a 69 66 20 28 20 24 4d 61  hes[1]..if ( $Ma
9d00: 74 63 68 65 73 5b 32 5d 20 2d 65 71 20 22 3a 22  tches[2] -eq ":"
9d10: 20 2d 6f 72 20 24 4d 61 74 63 68 65 73 5b 32 5d   -or $Matches[2]
9d20: 20 2d 65 71 20 22 2c 22 20 29 0d 0a 7b 0d 0a 69   -eq "," )..{..i
9d30: 66 20 28 20 24 5f 63 6d 64 73 74 61 63 6b 2e 43  f ( $_cmdstack.C
9d40: 6f 75 6e 74 20 2d 67 74 20 30 20 29 0d 0a 7b 0d  ount -gt 0 )..{.
9d50: 0a 24 5f 62 61 73 65 20 2b 20 24 67 6c 6f 62 61  .$_base + $globa
9d60: 6c 3a 5f 63 6d 64 73 74 61 63 6b 2e 50 6f 70 28  l:_cmdstack.Pop(
9d70: 29 0d 0a 7d 0d 0a 65 6c 73 65 0d 0a 7b 0d 0a 22  )..}..else..{.."
9d80: 22 3b 20 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 7d 0d  "; break;..}..}.
9d90: 0a 65 6c 73 65 69 66 20 28 20 24 4d 61 74 63 68  .elseif ( $Match
9da0: 65 73 5b 32 5d 20 2d 65 71 20 22 22 20 29 0d 0a  es[2] -eq "" )..
9db0: 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 63 6d 64 73  {..$global:_cmds
9dc0: 74 61 63 6b 2e 50 75 73 68 28 24 6c 69 6e 65 2e  tack.Push($line.
9dd0: 53 75 62 53 74 72 69 6e 67 28 30 2c 24 6c 69 6e  SubString(0,$lin
9de0: 65 2e 4c 65 6e 67 74 68 2d 31 29 29 0d 0a 5b 53  e.Length-1))..[S
9df0: 79 73 74 65 6d 2e 57 69 6e 64 6f 77 73 2e 46 6f  ystem.Windows.Fo
9e00: 72 6d 73 2e 53 65 6e 64 4b 65 79 73 5d 3a 3a 53  rms.SendKeys]::S
9e10: 65 6e 64 57 61 69 74 28 22 7b 45 53 43 7d 22 29  endWait("{ESC}")
9e20: 0d 0a 22 22 3b 20 62 72 65 61 6b 3b 0d 0a 7d 0d  ..""; break;..}.
9e30: 0a 7d 0d 0a 0d 0a 23 20 44 6f 20 63 6f 6d 70 6c  .}....# Do compl
9e40: 65 74 69 6f 6e 20 6f 6e 20 70 61 72 61 6d 65 74  etion on paramet
9e50: 65 72 73 2e 2e 2e 0d 0a 27 5e 2d 28 5b 5c 77 30  ers.....'^-([\w0
9e60: 2d 39 5d 2a 29 27 20 7b 0d 0a 24 5f 70 61 74 20  -9]*)' {..$_pat 
9e70: 3d 20 24 6d 61 74 63 68 65 73 5b 31 5d 20 2b 20  = $matches[1] + 
9e80: 27 2a 27 0d 0a 0d 0a 23 20 65 78 74 72 61 63 74  '*'....# extract
9e90: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d   the command nam
9ea0: 65 20 66 72 6f 6d 20 74 68 65 20 73 74 72 69 6e  e from the strin
9eb0: 67 0d 0a 23 20 66 69 72 73 74 20 73 70 6c 69 74  g..# first split
9ec0: 20 74 68 65 20 73 74 72 69 6e 67 20 69 6e 74 6f   the string into
9ed0: 20 73 74 61 74 65 6d 65 6e 74 73 20 61 6e 64 20   statements and 
9ee0: 70 69 70 65 6c 69 6e 65 20 65 6c 65 6d 65 6e 74  pipeline element
9ef0: 73 0d 0a 23 20 54 68 69 73 20 64 6f 65 73 6e 27  s..# This doesn'
9f00: 74 20 68 61 6e 64 6c 65 20 73 74 72 69 6e 67 73  t handle strings
9f10: 20 68 6f 77 65 76 65 72 2e 0d 0a 24 5f 63 6f 6d   however...$_com
9f20: 6d 61 6e 64 20 3d 20 5b 72 65 67 65 78 5d 3a 3a  mand = [regex]::
9f30: 53 70 6c 69 74 28 24 6c 69 6e 65 2c 20 27 5b 7c  Split($line, '[|
9f40: 3b 3d 5d 27 29 5b 2d 31 5d 0d 0a 0d 0a 23 20 20  ;=]')[-1]....#  
9f50: 45 78 74 72 61 63 74 20 74 68 65 20 74 72 61 69  Extract the trai
9f60: 6c 69 6e 67 20 75 6e 63 6c 6f 73 65 64 20 62 6c  ling unclosed bl
9f70: 6f 63 6b 20 65 2e 67 2e 20 6c 73 20 7c 20 66 6f  ock e.g. ls | fo
9f80: 72 65 61 63 68 20 7b 20 63 70 0d 0a 69 66 20 28  reach { cp..if (
9f90: 24 5f 63 6f 6d 6d 61 6e 64 20 2d 6d 61 74 63 68  $_command -match
9fa0: 20 27 5c 7b 28 5b 5e 5c 7b 5c 7d 5d 2a 29 24 27   '\{([^\{\}]*)$'
9fb0: 29 0d 0a 7b 0d 0a 24 5f 63 6f 6d 6d 61 6e 64 20  )..{..$_command 
9fc0: 3d 20 24 6d 61 74 63 68 65 73 5b 31 5d 0d 0a 7d  = $matches[1]..}
9fd0: 0d 0a 0d 0a 23 20 45 78 74 72 61 63 74 20 74 68  ....# Extract th
9fe0: 65 20 6c 6f 6e 67 65 73 74 20 75 6e 63 6c 6f 73  e longest unclos
9ff0: 65 64 20 70 61 72 65 6e 74 68 65 74 69 63 61 6c  ed parenthetical
a000: 20 65 78 70 72 65 73 73 69 6f 6e 2e 2e 2e 0d 0a   expression.....
a010: 69 66 20 28 24 5f 63 6f 6d 6d 61 6e 64 20 2d 6d  if ($_command -m
a020: 61 74 63 68 20 27 5c 28 28 5b 5e 28 29 5d 2a 29  atch '\(([^()]*)
a030: 24 27 29 0d 0a 7b 0d 0a 24 5f 63 6f 6d 6d 61 6e  $')..{..$_comman
a040: 64 20 3d 20 24 6d 61 74 63 68 65 73 5b 31 5d 0d  d = $matches[1].
a050: 0a 7d 0d 0a 0d 0a 23 20 74 61 6b 65 20 74 68 65  .}....# take the
a060: 20 66 69 72 73 74 20 73 70 61 63 65 20 73 65 70   first space sep
a070: 61 72 61 74 65 64 20 74 6f 6b 65 6e 20 6f 66 20  arated token of 
a080: 74 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 73 74  the remaining st
a090: 72 69 6e 67 0d 0a 23 20 61 73 20 74 68 65 20 63  ring..# as the c
a0a0: 6f 6d 6d 61 6e 64 20 74 6f 20 6c 6f 6f 6b 20 75  ommand to look u
a0b0: 70 2e 20 54 72 69 6d 20 61 6e 79 20 6c 65 61 64  p. Trim any lead
a0c0: 69 6e 67 20 6f 72 20 74 72 61 69 6c 69 6e 67 20  ing or trailing 
a0d0: 73 70 61 63 65 73 0d 0a 23 20 73 6f 20 79 6f 75  spaces..# so you
a0e0: 20 64 6f 6e 27 74 20 67 65 74 20 6c 65 61 64 69   don't get leadi
a0f0: 6e 67 20 65 6d 70 74 79 20 65 6c 65 6d 65 6e 74  ng empty element
a100: 73 2e 0d 0a 24 5f 63 6f 6d 6d 61 6e 64 20 3d 20  s...$_command = 
a110: 24 5f 63 6f 6d 6d 61 6e 64 2e 54 72 69 6d 28 29  $_command.Trim()
a120: 2e 53 70 6c 69 74 28 29 5b 30 5d 0d 0a 0d 0a 23  .Split()[0]....#
a130: 20 6e 6f 77 20 67 65 74 20 74 68 65 20 69 6e 66   now get the inf
a140: 6f 20 6f 62 6a 65 63 74 20 66 6f 72 20 69 74 2e  o object for it.
a150: 2e 2e 0d 0a 24 5f 63 6f 6d 6d 61 6e 64 20 3d 20  ....$_command = 
a160: 40 28 47 65 74 2d 43 6f 6d 6d 61 6e 64 20 2d 74  @(Get-Command -t
a170: 79 70 65 20 27 41 6c 6c 27 20 24 5f 63 6f 6d 6d  ype 'All' $_comm
a180: 61 6e 64 29 5b 30 5d 0d 0a 0d 0a 23 20 6c 6f 6f  and)[0]....# loo
a190: 70 20 72 65 73 6f 6c 76 69 6e 67 20 61 6c 69 61  p resolving alia
a1a0: 73 65 73 2e 2e 2e 0d 0a 77 68 69 6c 65 20 28 24  ses.....while ($
a1b0: 5f 63 6f 6d 6d 61 6e 64 2e 43 6f 6d 6d 61 6e 64  _command.Command
a1c0: 54 79 70 65 20 2d 65 71 20 27 61 6c 69 61 73 27  Type -eq 'alias'
a1d0: 29 0d 0a 7b 0d 0a 24 5f 63 6f 6d 6d 61 6e 64 20  )..{..$_command 
a1e0: 3d 20 40 28 47 65 74 2d 43 6f 6d 6d 61 6e 64 20  = @(Get-Command 
a1f0: 2d 74 79 70 65 20 27 41 6c 6c 27 20 24 5f 63 6f  -type 'All' $_co
a200: 6d 6d 61 6e 64 2e 44 65 66 69 6e 69 74 69 6f 6e  mmand.Definition
a210: 29 5b 30 5d 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20  )[0]..}....if ( 
a220: 24 5f 63 6f 6d 6d 61 6e 64 2e 6e 61 6d 65 20 2d  $_command.name -
a230: 65 71 20 22 70 6f 77 65 72 73 68 65 6c 6c 2e 65  eq "powershell.e
a240: 78 65 22 20 29 0d 0a 7b 0d 0a 69 66 20 28 20 24  xe" )..{..if ( $
a250: 67 6c 6f 62 61 6c 3a 5f 50 53 65 78 65 4f 70 74  global:_PSexeOpt
a260: 69 6f 6e 20 29 0d 0a 7b 0d 0a 24 67 6c 6f 62 61  ion )..{..$globa
a270: 6c 3a 5f 50 53 65 78 65 4f 70 74 69 6f 6e 20 2d  l:_PSexeOption -
a280: 6c 69 6b 65 20 22 2d 24 5f 70 61 74 22 20 2d 72  like "-$_pat" -r
a290: 65 70 6c 61 63 65 20 27 5e 28 2d 5b 5e 2c 5d 2b  eplace '^(-[^,]+
a2a0: 29 2e 2a 24 27 2c 20 27 24 31 27 20 7c 20 73 6f  ).*$', '$1' | so
a2b0: 72 74 0d 0a 7d 0d 0a 65 6c 73 65 0d 0a 7b 0d 0a  rt..}..else..{..
a2c0: 28 24 67 6c 6f 62 61 6c 3a 5f 50 53 65 78 65 4f  ($global:_PSexeO
a2d0: 70 74 69 6f 6e 20 3d 20 70 6f 77 65 72 73 68 65  ption = powershe
a2e0: 6c 6c 2e 65 78 65 20 2d 3f 29 20 2d 6c 69 6b 65  ll.exe -?) -like
a2f0: 20 22 2d 24 5f 70 61 74 22 20 2d 72 65 70 6c 61   "-$_pat" -repla
a300: 63 65 20 27 5e 28 2d 5b 5e 2c 5d 2b 29 2e 2a 24  ce '^(-[^,]+).*$
a310: 27 2c 20 27 24 31 27 20 7c 20 73 6f 72 74 0d 0a  ', '$1' | sort..
a320: 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a  }..break;..}....
a330: 0d 0a 69 66 20 28 20 24 5f 63 6f 6d 6d 61 6e 64  ..if ( $_command
a340: 20 2d 6e 65 20 24 6e 75 6c 6c 20 29 0d 0a 7b 0d   -ne $null )..{.
a350: 0a 23 20 65 78 70 61 6e 64 20 74 68 65 20 70 61  .# expand the pa
a360: 72 61 6d 65 74 65 72 20 73 65 74 73 20 61 6e 64  rameter sets and
a370: 20 65 6d 69 74 20 74 68 65 20 6d 61 74 63 68 69   emit the matchi
a380: 6e 67 20 65 6c 65 6d 65 6e 74 73 0d 0a 66 6f 72  ng elements..for
a390: 65 61 63 68 20 28 24 5f 6e 20 69 6e 20 24 5f 63  each ($_n in $_c
a3a0: 6f 6d 6d 61 6e 64 2e 50 61 72 61 6d 65 74 65 72  ommand.Parameter
a3b0: 73 2e 4b 65 79 73 20 7c 20 73 6f 72 74 29 0d 0a  s.Keys | sort)..
a3c0: 7b 0d 0a 69 66 20 28 24 5f 6e 20 2d 6c 69 6b 65  {..if ($_n -like
a3d0: 20 24 5f 70 61 74 29 20 7b 20 27 2d 27 20 2b 20   $_pat) { '-' + 
a3e0: 24 5f 6e 20 7d 0d 0a 7d 0d 0a 7d 0d 0a 65 6c 73  $_n }..}..}..els
a3f0: 65 69 66 20 28 20 24 6c 69 6e 65 20 2d 6d 61 74  eif ( $line -mat
a400: 63 68 20 27 73 77 69 74 63 68 5c 73 2b 28 2d 5c  ch 'switch\s+(-\
a410: 77 2b 5c 73 2b 29 2a 2d 28 5c 77 2a 29 24 27 29  w+\s+)*-(\w*)$')
a420: 0d 0a 7b 0d 0a 24 5f 70 61 74 20 3d 20 24 4d 61  ..{..$_pat = $Ma
a430: 74 63 68 65 73 5b 32 5d 20 2b 20 27 2a 27 0d 0a  tches[2] + '*'..
a440: 22 72 65 67 65 78 22 2c 20 22 77 69 6c 64 63 61  "regex", "wildca
a450: 72 64 22 2c 20 22 65 78 61 63 74 22 2c 20 22 63  rd", "exact", "c
a460: 61 73 65 73 65 6e 73 69 74 69 76 65 22 2c 20 22  asesensitive", "
a470: 66 69 6c 65 22 20 2d 6c 69 6b 65 20 24 5f 70 61  file" -like $_pa
a480: 74 20 2d 72 65 70 6c 61 63 65 20 27 5e 28 2e 2a  t -replace '^(.*
a490: 29 24 27 2c 20 27 2d 24 31 27 0d 0a 62 72 65 61  )$', '-$1'..brea
a4a0: 6b 3b 0d 0a 7d 0d 0a 65 6c 73 65 0d 0a 7b 0d 0a  k;..}..else..{..
a4b0: 22 2d 61 6e 64 22 2c 20 22 2d 61 73 22 2c 20 22  "-and", "-as", "
a4c0: 2d 62 61 6e 64 22 2c 20 22 2d 62 6e 6f 74 22 2c  -band", "-bnot",
a4d0: 20 22 2d 62 6f 72 22 2c 20 22 2d 62 78 6f 72 22   "-bor", "-bxor"
a4e0: 2c 20 22 2d 63 63 6f 6e 74 61 69 6e 73 22 2c 20  , "-ccontains", 
a4f0: 22 2d 63 65 71 22 2c 20 22 2d 63 67 65 22 2c 20  "-ceq", "-cge", 
a500: 22 2d 63 67 74 22 2c 20 22 2d 63 6c 65 22 2c 20  "-cgt", "-cle", 
a510: 22 2d 63 6c 69 6b 65 22 2c 20 22 2d 63 6c 74 22  "-clike", "-clt"
a520: 2c 0d 0a 22 2d 63 6d 61 74 63 68 22 2c 20 22 2d  ,.."-cmatch", "-
a530: 63 6e 65 22 2c 20 22 2d 63 6e 6f 74 63 6f 6e 74  cne", "-cnotcont
a540: 61 69 6e 73 22 2c 20 22 2d 63 6e 6f 74 6c 69 6b  ains", "-cnotlik
a550: 65 22 2c 20 22 2d 63 6e 6f 74 6d 61 74 63 68 22  e", "-cnotmatch"
a560: 2c 20 22 2d 63 6f 6e 74 61 69 6e 73 22 2c 20 22  , "-contains", "
a570: 2d 63 72 65 70 6c 61 63 65 22 2c 20 22 2d 63 73  -creplace", "-cs
a580: 70 6c 69 74 22 2c 20 22 2d 65 71 22 2c 20 22 2d  plit", "-eq", "-
a590: 66 22 2c 20 22 2d 67 65 22 2c 0d 0a 22 2d 67 74  f", "-ge",.."-gt
a5a0: 22 2c 20 22 2d 69 63 6f 6e 74 61 69 6e 73 22 2c  ", "-icontains",
a5b0: 20 22 2d 69 65 71 22 2c 20 22 2d 69 67 65 22 2c   "-ieq", "-ige",
a5c0: 20 22 2d 69 67 74 22 2c 20 22 2d 69 6c 65 22 2c   "-igt", "-ile",
a5d0: 20 22 2d 69 6c 69 6b 65 22 2c 20 22 2d 69 6c 74   "-ilike", "-ilt
a5e0: 22 2c 20 22 2d 69 6d 61 74 63 68 22 2c 20 22 2d  ", "-imatch", "-
a5f0: 69 6e 65 22 2c 20 22 2d 69 6e 6f 74 63 6f 6e 74  ine", "-inotcont
a600: 61 69 6e 73 22 2c 20 22 2d 69 6e 6f 74 6c 69 6b  ains", "-inotlik
a610: 65 22 2c 0d 0a 22 2d 69 6e 6f 74 6d 61 74 63 68  e",.."-inotmatch
a620: 22 2c 20 22 2d 69 72 65 70 6c 61 63 65 22 2c 20  ", "-ireplace", 
a630: 22 2d 69 73 22 2c 20 22 2d 69 73 6e 6f 74 22 2c  "-is", "-isnot",
a640: 20 22 2d 69 73 70 6c 69 74 22 2c 20 22 2d 6a 6f   "-isplit", "-jo
a650: 69 6e 22 2c 20 22 2d 6c 65 22 2c 20 22 2d 6c 69  in", "-le", "-li
a660: 6b 65 22 2c 20 22 2d 6c 74 22 2c 20 22 2d 6d 61  ke", "-lt", "-ma
a670: 74 63 68 22 2c 20 22 2d 6e 65 22 2c 20 22 2d 6e  tch", "-ne", "-n
a680: 6f 74 22 2c 20 22 2d 6e 6f 74 63 6f 6e 74 61 69  ot", "-notcontai
a690: 6e 73 22 2c 20 0d 0a 22 2d 6e 6f 74 6c 69 6b 65  ns", .."-notlike
a6a0: 22 2c 20 22 2d 6e 6f 74 6d 61 74 63 68 22 2c 20  ", "-notmatch", 
a6b0: 22 2d 6f 72 22 2c 20 22 2d 72 65 70 6c 61 63 65  "-or", "-replace
a6c0: 22 2c 20 22 2d 73 70 6c 69 74 22 2c 20 22 2d 78  ", "-split", "-x
a6d0: 6f 72 22 20 2d 6c 69 6b 65 20 22 2d 24 5f 70 61  or" -like "-$_pa
a6e0: 74 22 0d 0a 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d  t"..}..break;..}
a6f0: 0d 0a 0d 0a 23 20 54 61 62 20 63 6f 6d 70 6c 65  ....# Tab comple
a700: 74 65 20 61 67 61 69 6e 73 74 20 68 69 73 74 6f  te against histo
a710: 72 79 20 65 69 74 68 65 72 20 23 3c 70 61 74 74  ry either #<patt
a720: 65 72 6e 3e 20 6f 72 20 23 3c 69 64 3e 0d 0a 27  ern> or #<id>..'
a730: 5e 23 28 5c 77 2a 29 27 20 7b 0d 0a 24 5f 70 61  ^#(\w*)' {..$_pa
a740: 74 74 65 72 6e 20 3d 20 24 6d 61 74 63 68 65 73  ttern = $matches
a750: 5b 31 5d 0d 0a 69 66 20 28 24 5f 70 61 74 74 65  [1]..if ($_patte
a760: 72 6e 20 2d 6d 61 74 63 68 20 27 5e 5b 30 2d 39  rn -match '^[0-9
a770: 5d 2b 24 27 29 0d 0a 7b 0d 0a 47 65 74 2d 48 69  ]+$')..{..Get-Hi
a780: 73 74 6f 72 79 20 2d 65 61 20 53 69 6c 65 6e 74  story -ea Silent
a790: 6c 79 43 6f 6e 74 69 6e 75 65 20 2d 49 64 20 24  lyContinue -Id $
a7a0: 5f 70 61 74 74 65 72 6e 20 7c 20 46 6f 72 65 61  _pattern | Forea
a7b0: 63 68 20 7b 20 24 5f 2e 43 6f 6d 6d 61 6e 64 4c  ch { $_.CommandL
a7c0: 69 6e 65 20 7d 20 0d 0a 7d 0d 0a 65 6c 73 65 0d  ine } ..}..else.
a7d0: 0a 7b 0d 0a 24 5f 70 61 74 74 65 72 6e 20 3d 20  .{..$_pattern = 
a7e0: 27 2a 27 20 2b 20 24 5f 70 61 74 74 65 72 6e 20  '*' + $_pattern 
a7f0: 2b 20 27 2a 27 0d 0a 47 65 74 2d 48 69 73 74 6f  + '*'..Get-Histo
a800: 72 79 20 7c 20 53 6f 72 74 2d 4f 62 6a 65 63 74  ry | Sort-Object
a810: 20 2d 44 65 73 63 65 6e 64 69 6e 67 20 49 64 7c   -Descending Id|
a820: 20 46 6f 72 65 61 63 68 20 7b 20 24 5f 2e 43 6f   Foreach { $_.Co
a830: 6d 6d 61 6e 64 4c 69 6e 65 20 7d 20 7c 20 77 68  mmandLine } | wh
a840: 65 72 65 20 7b 20 24 5f 20 2d 6c 69 6b 65 20 24  ere { $_ -like $
a850: 5f 70 61 74 74 65 72 6e 20 7d 0d 0a 7d 0d 0a 62  _pattern }..}..b
a860: 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 23 20 74 72  reak;..}....# tr
a870: 79 20 74 6f 20 66 69 6e 64 20 61 20 6d 61 74 63  y to find a matc
a880: 68 69 6e 67 20 63 6f 6d 6d 61 6e 64 2e 2e 2e 0d  hing command....
a890: 0a 64 65 66 61 75 6c 74 20 7b 0d 0a 0d 0a 23 20  .default {....# 
a8a0: 70 61 72 73 65 20 74 68 65 20 73 63 72 69 70 74  parse the script
a8b0: 2e 2e 2e 0d 0a 24 5f 74 6f 6b 65 6e 73 20 3d 20  .....$_tokens = 
a8c0: 5b 53 79 73 74 65 6d 2e 4d 61 6e 61 67 65 6d 65  [System.Manageme
a8d0: 6e 74 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 50 53  nt.Automation.PS
a8e0: 50 61 72 73 65 72 5d 3a 3a 54 6f 6b 65 6e 69 7a  Parser]::Tokeniz
a8f0: 65 28 24 6c 69 6e 65 2c 20 5b 72 65 66 5d 20 24  e($line, [ref] $
a900: 6e 75 6c 6c 29 0d 0a 0d 0a 69 66 20 28 20 24 5f  null)....if ( $_
a910: 74 6f 6b 65 6e 73 20 29 0d 0a 7b 0d 0a 24 5f 6c  tokens )..{..$_l
a920: 61 73 74 54 6f 6b 65 6e 20 3d 20 24 5f 74 6f 6b  astToken = $_tok
a930: 65 6e 73 5b 24 5f 74 6f 6b 65 6e 73 2e 63 6f 75  ens[$_tokens.cou
a940: 6e 74 20 2d 20 31 5d 0d 0a 69 66 20 28 24 5f 6c  nt - 1]..if ($_l
a950: 61 73 74 54 6f 6b 65 6e 2e 54 79 70 65 20 2d 65  astToken.Type -e
a960: 71 20 27 4d 65 6d 62 65 72 27 29 0d 0a 7b 0d 0a  q 'Member')..{..
a970: 24 5f 70 61 74 20 3d 20 24 5f 6c 61 73 74 54 6f  $_pat = $_lastTo
a980: 6b 65 6e 2e 43 6f 6e 74 65 6e 74 20 2b 20 27 2a  ken.Content + '*
a990: 27 0d 0a 24 69 3d 24 5f 74 6f 6b 65 6e 73 2e 63  '..$i=$_tokens.c
a9a0: 6f 75 6e 74 3b 20 64 6f 20 7b 20 24 69 2d 2d 20  ount; do { $i-- 
a9b0: 7d 20 75 6e 74 69 6c 20 28 20 24 5f 74 6f 6b 65  } until ( $_toke
a9c0: 6e 73 5b 24 69 5d 2e 54 79 70 65 20 2d 65 71 20  ns[$i].Type -eq 
a9d0: 22 41 74 74 72 69 62 75 74 65 22 29 0d 0a 69 66  "Attribute")..if
a9e0: 20 28 20 24 6c 61 73 74 57 6f 72 64 20 2d 6d 61   ( $lastWord -ma
a9f0: 74 63 68 20 22 5e 28 2e 2a 29 28 5b 5c 28 2c 5d  tch "^(.*)([\(,]
aa00: 29 5c 77 2a 24 22 20 29 0d 0a 7b 0d 0a 24 5f 62  )\w*$" )..{..$_b
aa10: 61 73 65 20 3d 20 24 6d 61 74 63 68 65 73 5b 31  ase = $matches[1
aa20: 5d 20 2b 20 24 6d 61 74 63 68 65 73 5b 32 5d 0d  ] + $matches[2].
aa30: 0a 7d 0d 0a 73 77 69 74 63 68 20 28 20 24 5f 74  .}..switch ( $_t
aa40: 6f 6b 65 6e 73 5b 24 69 5d 2e 43 6f 6e 74 65 6e  okens[$i].Conten
aa50: 74 20 29 0d 0a 7b 0d 0a 27 50 61 72 61 6d 65 74  t )..{..'Paramet
aa60: 65 72 27 20 7b 0d 0a 5b 53 79 73 74 65 6d 2e 4d  er' {..[System.M
aa70: 61 6e 61 67 65 6d 65 6e 74 2e 41 75 74 6f 6d 61  anagement.Automa
aa80: 74 69 6f 6e 2e 50 61 72 61 6d 65 74 65 72 41 74  tion.ParameterAt
aa90: 74 72 69 62 75 74 65 5d 2e 47 65 74 50 72 6f 70  tribute].GetProp
aaa0: 65 72 74 69 65 73 28 29 20 7c 20 3f 20 7b 20 24  erties() | ? { $
aab0: 5f 2e 4e 61 6d 65 20 2d 6c 69 6b 65 20 24 5f 70  _.Name -like $_p
aac0: 61 74 20 2d 61 6e 64 20 24 5f 2e 4e 61 6d 65 20  at -and $_.Name 
aad0: 2d 6e 65 20 22 54 79 70 65 49 64 22 20 7d 20 7c  -ne "TypeId" } |
aae0: 20 25 20 7b 20 24 5f 62 61 73 65 20 2b 20 24 5f   % { $_base + $_
aaf0: 2e 4e 61 6d 65 20 2b 20 22 3d 22 20 7d 0d 0a 7d  .Name + "=" }..}
ab00: 0d 0a 27 43 6d 64 6c 65 74 42 69 6e 64 69 6e 67  ..'CmdletBinding
ab10: 27 20 7b 0d 0a 5b 53 79 73 74 65 6d 2e 4d 61 6e  ' {..[System.Man
ab20: 61 67 65 6d 65 6e 74 2e 41 75 74 6f 6d 61 74 69  agement.Automati
ab30: 6f 6e 2e 43 6d 64 6c 65 74 42 69 6e 64 69 6e 67  on.CmdletBinding
ab40: 41 74 74 72 69 62 75 74 65 5d 2e 47 65 74 50 72  Attribute].GetPr
ab50: 6f 70 65 72 74 69 65 73 28 29 20 7c 20 3f 20 7b  operties() | ? {
ab60: 20 24 5f 2e 4e 61 6d 65 20 2d 6c 69 6b 65 20 24   $_.Name -like $
ab70: 5f 70 61 74 20 2d 61 6e 64 20 24 5f 2e 4e 61 6d  _pat -and $_.Nam
ab80: 65 20 2d 6e 65 20 22 54 79 70 65 49 64 22 20 7d  e -ne "TypeId" }
ab90: 20 7c 20 25 20 7b 20 24 5f 62 61 73 65 20 2b 20   | % { $_base + 
aba0: 24 5f 2e 4e 61 6d 65 20 2b 20 22 3d 22 20 7d 0d  $_.Name + "=" }.
abb0: 0a 7d 0d 0a 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d  .}..}..break;..}
abc0: 0d 0a 0d 0a 69 66 20 28 20 24 5f 74 6f 6b 65 6e  ....if ( $_token
abd0: 73 5b 31 5d 2e 54 79 70 65 20 2d 65 71 20 22 41  s[1].Type -eq "A
abe0: 74 74 72 69 62 75 74 65 22 29 0d 0a 7b 0d 0a 69  ttribute")..{..i
abf0: 66 20 28 20 24 6c 69 6e 65 2e 53 70 6c 69 74 28  f ( $line.Split(
ac00: 22 28 22 29 2e 43 6f 75 6e 74 20 2d 67 74 20 24  "(").Count -gt $
ac10: 6c 69 6e 65 2e 53 70 6c 69 74 28 22 29 22 29 2e  line.Split(")").
ac20: 43 6f 75 6e 74 20 29 0d 0a 7b 0d 0a 69 66 20 28  Count )..{..if (
ac30: 20 24 6c 61 73 74 57 6f 72 64 20 2d 6d 61 74 63   $lastWord -matc
ac40: 68 20 22 5e 28 2e 2a 29 28 5b 5c 28 2c 5d 29 5c  h "^(.*)([\(,])\
ac50: 77 2a 24 22 20 29 0d 0a 7b 0d 0a 24 5f 62 61 73  w*$" )..{..$_bas
ac60: 65 20 3d 20 24 6d 61 74 63 68 65 73 5b 31 5d 20  e = $matches[1] 
ac70: 2b 20 24 6d 61 74 63 68 65 73 5b 32 5d 0d 0a 7d  + $matches[2]..}
ac80: 0d 0a 73 77 69 74 63 68 20 28 20 24 5f 74 6f 6b  ..switch ( $_tok
ac90: 65 6e 73 5b 31 5d 2e 43 6f 6e 74 65 6e 74 20 29  ens[1].Content )
aca0: 0d 0a 7b 0d 0a 27 50 61 72 61 6d 65 74 65 72 27  ..{..'Parameter'
acb0: 20 7b 0d 0a 5b 53 79 73 74 65 6d 2e 4d 61 6e 61   {..[System.Mana
acc0: 67 65 6d 65 6e 74 2e 41 75 74 6f 6d 61 74 69 6f  gement.Automatio
acd0: 6e 2e 50 61 72 61 6d 65 74 65 72 41 74 74 72 69  n.ParameterAttri
ace0: 62 75 74 65 5d 2e 47 65 74 50 72 6f 70 65 72 74  bute].GetPropert
acf0: 69 65 73 28 29 20 7c 20 25 20 7b 20 24 5f 62 61  ies() | % { $_ba
ad00: 73 65 20 2b 20 24 5f 2e 4e 61 6d 65 20 2b 20 22  se + $_.Name + "
ad10: 3d 22 20 7d 0d 0a 7d 0d 0a 27 43 6d 64 6c 65 74  =" }..}..'Cmdlet
ad20: 42 69 6e 64 69 6e 67 27 20 7b 0d 0a 5b 53 79 73  Binding' {..[Sys
ad30: 74 65 6d 2e 4d 61 6e 61 67 65 6d 65 6e 74 2e 41  tem.Management.A
ad40: 75 74 6f 6d 61 74 69 6f 6e 2e 43 6d 64 6c 65 74  utomation.Cmdlet
ad50: 42 69 6e 64 69 6e 67 41 74 74 72 69 62 75 74 65  BindingAttribute
ad60: 5d 2e 47 65 74 50 72 6f 70 65 72 74 69 65 73 28  ].GetProperties(
ad70: 29 20 20 7c 20 25 20 7b 20 24 5f 62 61 73 65 20  )  | % { $_base 
ad80: 2b 20 24 5f 2e 4e 61 6d 65 20 2b 20 22 3d 22 20  + $_.Name + "=" 
ad90: 7d 0d 0a 7d 0d 0a 7d 0d 0a 7d 0d 0a 62 72 65 61  }..}..}..}..brea
ada0: 6b 3b 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a 0d 0a 24 6c  k;..}..}......$l
adb0: 61 73 74 65 78 20 3d 20 20 5b 72 65 67 65 78 5d  astex =  [regex]
adc0: 3a 3a 53 70 6c 69 74 28 24 6c 69 6e 65 2c 20 27  ::Split($line, '
add0: 5b 7c 3b 5d 27 29 5b 2d 31 5d 0d 0a 69 66 20 28  [|;]')[-1]..if (
ade0: 20 24 6c 61 73 74 65 78 20 2d 6d 61 74 63 68 20   $lastex -match 
adf0: 27 5e 5c 73 2a 28 5c 24 5c 77 2b 28 5c 5b 5b 30  '^\s*(\$\w+(\[[0
ae00: 2d 39 2c 5d 2b 5c 5d 29 2a 28 5c 2e 5c 77 2b 28  -9,]+\])*(\.\w+(
ae10: 5c 5b 5b 30 2d 39 2c 5d 2b 5c 5d 29 2a 29 2a 29  \[[0-9,]+\])*)*)
ae20: 5c 73 2a 3d 5c 73 2b 28 28 22 5c 77 2b 22 5c 73  \s*=\s+(("\w+"\s
ae30: 2a 2c 5c 73 2b 29 2a 29 22 5c 77 2b 22 5c 73 2a  *,\s+)*)"\w+"\s*
ae40: 2d 61 73 5c 73 2b 24 27 20 29 0d 0a 7b 0d 0a 69  -as\s+$' )..{..i
ae50: 66 20 28 20 24 4d 61 74 63 68 65 73 5b 36 5d 20  f ( $Matches[6] 
ae60: 2d 6e 65 20 24 6e 75 6c 20 29 0d 0a 7b 0d 0a 24  -ne $nul )..{..$
ae70: 62 72 61 63 6b 65 74 73 20 3d 20 22 5b 5d 22 0d  brackets = "[]".
ae80: 0a 7d 0d 0a 27 5b 27 2b 20 24 67 6c 6f 62 61 6c  .}..'['+ $global
ae90: 3a 5f 65 6e 75 6d 20 2b 20 24 62 72 61 63 6b 65  :_enum + $bracke
aea0: 74 73 20 2b 20 27 5d 27 0d 0a 62 72 65 61 6b 3b  ts + ']'..break;
aeb0: 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 24 6c  ..}......if ( $l
aec0: 61 73 74 65 78 20 2d 6d 61 74 63 68 20 27 5e 5c  astex -match '^\
aed0: 73 2a 28 5c 24 5c 77 2b 28 5c 5b 5b 30 2d 39 2c  s*(\$\w+(\[[0-9,
aee0: 5d 2b 5c 5d 29 2a 28 5c 2e 5c 77 2b 28 5c 5b 5b  ]+\])*(\.\w+(\[[
aef0: 30 2d 39 2c 5d 2b 5c 5d 29 2a 29 2a 29 5c 73 2a  0-9,]+\])*)*)\s*
af00: 3d 5c 73 2b 28 28 22 5c 77 2b 22 5c 73 2a 2c 5c  =\s+(("\w+"\s*,\
af10: 73 2b 29 2a 29 5c 73 2a 28 5c 77 2a 29 24 27 20  s+)*)\s*(\w*)$' 
af20: 29 0d 0a 7b 0d 0a 24 5f 70 61 74 20 3d 20 24 4d  )..{..$_pat = $M
af30: 61 74 63 68 65 73 5b 37 5d 20 2b 20 27 2a 27 0d  atches[7] + '*'.
af40: 0a 0d 0a 24 5f 74 79 70 65 20 3d 20 40 28 69 65  ...$_type = @(ie
af50: 78 20 24 4d 61 74 63 68 65 73 5b 31 5d 29 5b 30  x $Matches[1])[0
af60: 5d 2e 47 65 74 54 79 70 65 28 29 0d 0a 69 66 20  ].GetType()..if 
af70: 28 20 24 5f 74 79 70 65 2e 49 73 45 6e 75 6d 20  ( $_type.IsEnum 
af80: 29 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 65  )..{..$global:_e
af90: 6e 75 6d 20 3d 20 24 5f 74 79 70 65 2e 46 75 6c  num = $_type.Ful
afa0: 6c 4e 61 6d 65 0d 0a 5b 45 6e 75 6d 5d 3a 3a 47  lName..[Enum]::G
afb0: 65 74 56 61 6c 75 65 73 28 24 5f 74 79 70 65 29  etValues($_type)
afc0: 20 2d 6c 69 6b 65 20 24 5f 70 61 74 20 2d 72 65   -like $_pat -re
afd0: 70 6c 61 63 65 20 27 5e 28 2e 2a 29 24 27 2c 27  place '^(.*)$','
afe0: 22 24 31 22 27 0d 0a 62 72 65 61 6b 3b 0d 0a 7d  "$1"'..break;..}
aff0: 0d 0a 7d 0d 0a 0d 0a 24 6c 61 73 74 65 78 20 3d  ..}....$lastex =
b000: 20 20 5b 72 65 67 65 78 5d 3a 3a 53 70 6c 69 74    [regex]::Split
b010: 28 24 6c 69 6e 65 2c 20 27 5b 7c 3b 3d 5d 27 29  ($line, '[|;=]')
b020: 5b 2d 31 5d 0d 0a 69 66 20 28 24 6c 61 73 74 65  [-1]..if ($laste
b030: 78 20 20 2d 6d 61 74 63 68 20 27 5b 5b 24 5d 2e  x  -match '[[$].
b040: 2a 5c 77 2b 5c 28 2e 2a 2d 61 73 5c 73 2a 24 27  *\w+\(.*-as\s*$'
b050: 29 0d 0a 7b 0d 0a 27 5b 27 2b 20 24 67 6c 6f 62  )..{..'['+ $glob
b060: 61 6c 3a 5f 65 6e 75 6d 20 2b 20 27 5d 27 0d 0a  al:_enum + ']'..
b070: 7d 0d 0a 65 6c 73 65 69 66 20 28 20 24 6c 61 73  }..elseif ( $las
b080: 74 65 78 20 2d 6d 61 74 63 68 20 27 28 5b 5b 24  tex -match '([[$
b090: 5d 2e 2a 28 5c 77 2b 29 29 5c 28 28 2e 2a 29 24  ].*(\w+))\((.*)$
b0a0: 27 20 29 0d 0a 7b 0d 0a 24 5f 6d 65 74 68 6f 64  ' )..{..$_method
b0b0: 20 3d 20 24 4d 61 74 63 68 65 73 5b 31 5d 0d 0a   = $Matches[1]..
b0c0: 0d 0a 69 66 20 28 20 24 4d 61 74 63 68 65 73 5b  ..if ( $Matches[
b0d0: 33 5d 20 2d 6d 61 74 63 68 20 22 28 2e 2a 29 28  3] -match "(.*)(
b0e0: 28 60 22 7c 27 29 28 5c 77 2b 2c 29 2b 28 5c 77  (`"|')(\w+,)+(\w
b0f0: 2a 29 29 24 22 20 29 0d 0a 7b 0d 0a 24 63 6f 6e  *))$" )..{..$con
b100: 74 69 6e 75 6f 75 73 20 3d 20 24 74 72 75 65 0d  tinuous = $true.
b110: 0a 24 5f 6f 70 74 20 3d 20 20 24 4d 61 74 63 68  .$_opt =  $Match
b120: 65 73 5b 35 5d 20 2b 20 27 2a 27 0d 0a 24 5f 62  es[5] + '*'..$_b
b130: 61 73 65 20 3d 20 20 24 4d 61 74 63 68 65 73 5b  ase =  $Matches[
b140: 32 5d 2e 54 72 69 6d 53 74 61 72 74 28 27 22 27  2].TrimStart('"'
b150: 29 20 2d 72 65 70 6c 61 63 65 20 27 28 2e 2a 2c  ) -replace '(.*,
b160: 29 5c 77 2b 24 27 2c 27 24 31 27 0d 0a 24 70 6f  )\w+$','$1'..$po
b170: 73 69 74 69 6f 6e 20 3d 20 24 4d 61 74 63 68 65  sition = $Matche
b180: 73 5b 31 5d 2e 53 70 6c 69 74 28 22 2c 22 29 2e  s[1].Split(",").
b190: 4c 65 6e 67 74 68 0d 0a 7d 0d 0a 65 6c 73 65 0d  Length..}..else.
b1a0: 0a 7b 0d 0a 24 63 6f 6e 74 69 6e 75 6f 75 73 20  .{..$continuous 
b1b0: 3d 20 24 66 61 6c 73 65 0d 0a 24 5f 6f 70 74 20  = $false..$_opt 
b1c0: 3d 20 28 24 4d 61 74 63 68 65 73 5b 33 5d 2e 53  = ($Matches[3].S
b1d0: 70 6c 69 74 28 27 2c 27 29 5b 2d 31 5d 20 2d 72  plit(',')[-1] -r
b1e0: 65 70 6c 61 63 65 20 27 5e 5c 73 2a 27 2c 27 27  eplace '^\s*',''
b1f0: 29 20 2b 20 22 2a 22 0d 0a 24 70 6f 73 69 74 69  ) + "*"..$positi
b200: 6f 6e 20 3d 20 24 4d 61 74 63 68 65 73 5b 33 5d  on = $Matches[3]
b210: 2e 53 70 6c 69 74 28 22 2c 22 29 2e 4c 65 6e 67  .Split(",").Leng
b220: 74 68 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 28 24  th..}....if ( ($
b230: 5f 6d 64 65 66 73 20 3d 20 69 65 78 20 28 24 5f  _mdefs = iex ($_
b240: 6d 65 74 68 6f 64 20 2b 20 22 2e 4f 76 65 72 6c  method + ".Overl
b250: 6f 61 64 44 65 66 69 6e 69 74 69 6f 6e 73 22 29  oadDefinitions")
b260: 29 20 2d 65 71 20 24 6e 75 6c 6c 20 29 0d 0a 7b  ) -eq $null )..{
b270: 0d 0a 24 74 6e 61 6d 65 2c 20 24 6d 6e 61 6d 65  ..$tname, $mname
b280: 20 3d 20 24 5f 6d 65 74 68 6f 64 2e 53 70 6c 69   = $_method.Spli
b290: 74 28 22 3a 22 2c 20 22 52 65 6d 6f 76 65 45 6d  t(":", "RemoveEm
b2a0: 70 74 79 45 6e 74 72 69 65 73 22 20 2d 61 73 20  ptyEntries" -as 
b2b0: 5b 53 79 73 74 65 6d 2e 53 74 72 69 6e 67 53 70  [System.StringSp
b2c0: 6c 69 74 4f 70 74 69 6f 6e 73 5d 29 0d 0a 24 5f  litOptions])..$_
b2d0: 6d 64 65 66 73 20 3d 20 69 65 78 20 28 24 74 6e  mdefs = iex ($tn
b2e0: 61 6d 65 20 2b 20 27 2e 47 65 74 4d 65 6d 62 65  ame + '.GetMembe
b2f0: 72 28 22 27 20 2b 20 24 6d 6e 61 6d 65 20 2b 20  r("' + $mname + 
b300: 27 22 29 20 7c 20 25 20 7b 20 24 5f 2e 54 6f 53  '") | % { $_.ToS
b310: 74 72 69 6e 67 28 29 20 7d 27 29 0d 0a 7d 0d 0a  tring() }')..}..
b320: 0d 0a 66 6f 72 65 61 63 68 20 28 20 24 64 65 66  ..foreach ( $def
b330: 20 69 6e 20 24 5f 6d 64 65 66 73 20 29 0d 0a 7b   in $_mdefs )..{
b340: 0d 0a 5b 76 6f 69 64 5d 20 28 24 64 65 66 20 2d  ..[void] ($def -
b350: 6d 61 74 63 68 20 27 5c 28 28 2e 2a 29 5c 29 27  match '\((.*)\)'
b360: 29 0d 0a 66 6f 72 65 61 63 68 20 28 20 24 70 61  )..foreach ( $pa
b370: 72 61 6d 20 69 6e 20 5b 72 65 67 65 78 5d 3a 3a  ram in [regex]::
b380: 53 70 6c 69 74 28 24 4d 61 74 63 68 65 73 5b 31  Split($Matches[1
b390: 5d 2c 20 27 2c 20 27 29 5b 24 70 6f 73 69 74 69  ], ', ')[$positi
b3a0: 6f 6e 2d 31 5d 20 29 0d 0a 7b 0d 0a 69 66 20 28  on-1] )..{..if (
b3b0: 24 70 61 72 61 6d 20 2d 65 71 20 24 6e 75 6c 6c  $param -eq $null
b3c0: 20 2d 6f 72 20 24 70 61 72 61 6d 20 2d 65 71 20   -or $param -eq 
b3d0: 22 22 29 0d 0a 7b 0d 0a 63 6f 6e 74 69 6e 75 65  "")..{..continue
b3e0: 3b 0d 0a 7d 0d 0a 24 74 79 70 65 20 3d 20 24 70  ;..}..$type = $p
b3f0: 61 72 61 6d 2e 73 70 6c 69 74 28 29 5b 30 5d 0d  aram.split()[0].
b400: 0a 0d 0a 69 66 20 28 20 24 74 79 70 65 20 2d 6c  ...if ( $type -l
b410: 69 6b 65 20 27 2a 60 5b 2a 27 20 2d 6f 72 20 24  ike '*`[*' -or $
b420: 74 79 70 65 20 2d 65 71 20 22 50 61 72 61 6d 73  type -eq "Params
b430: 22 20 2d 6f 72 20 24 74 79 70 65 20 2d 65 71 20  " -or $type -eq 
b440: 22 22 20 29 0d 0a 7b 0d 0a 63 6f 6e 74 69 6e 75  "" )..{..continu
b450: 65 3b 0d 0a 7d 0d 0a 24 66 75 6c 6c 6e 61 6d 65  e;..}..$fullname
b460: 20 20 3d 20 40 28 24 5f 74 79 70 65 6e 61 6d 65    = @($_typename
b470: 73 20 2d 6c 69 6b 65 20 22 2a 24 74 79 70 65 2a  s -like "*$type*
b480: 22 29 0d 0a 66 6f 72 65 61 63 68 20 28 20 24 6e  ")..foreach ( $n
b490: 61 6d 65 20 69 6e 20 24 66 75 6c 6c 6e 61 6d 65  ame in $fullname
b4a0: 20 29 0d 0a 7b 0d 0a 69 66 20 28 20 24 63 6f 6e   )..{..if ( $con
b4b0: 74 69 6e 75 6f 75 73 20 2d 65 71 20 24 74 72 75  tinuous -eq $tru
b4c0: 65 20 2d 61 6e 64 20 28 20 24 6e 61 6d 65 20 20  e -and ( $name  
b4d0: 2d 61 73 20 5b 53 79 73 74 65 6d 2e 54 79 70 65  -as [System.Type
b4e0: 5d 20 29 2e 49 73 45 6e 75 6d 20 29 0d 0a 7b 0d  ] ).IsEnum )..{.
b4f0: 0a 24 6f 75 74 70 75 74 20 3d 20 5b 45 6e 75 6d  .$output = [Enum
b500: 5d 3a 3a 47 65 74 56 61 6c 75 65 73 28 24 6e 61  ]::GetValues($na
b510: 6d 65 29 20 2d 6c 69 6b 65 20 24 5f 6f 70 74 20  me) -like $_opt 
b520: 2d 72 65 70 6c 61 63 65 20 27 5e 28 2e 2a 29 24  -replace '^(.*)$
b530: 27 2c 28 24 5f 62 61 73 65 20 2b 20 27 24 31 27  ',($_base + '$1'
b540: 29 0d 0a 24 6f 75 74 70 75 74 20 7c 20 73 6f 72  )..$output | sor
b550: 74 0d 0a 7d 0d 0a 65 6c 73 65 69 66 20 28 20 28  t..}..elseif ( (
b560: 20 24 6e 61 6d 65 20 20 2d 61 73 20 5b 53 79 73   $name  -as [Sys
b570: 74 65 6d 2e 54 79 70 65 5d 20 29 2e 49 73 45 6e  tem.Type] ).IsEn
b580: 75 6d 20 29 20 0d 0a 7b 0d 0a 24 67 6c 6f 62 61  um ) ..{..$globa
b590: 6c 3a 5f 65 6e 75 6d 20 3d 20 24 6e 61 6d 65 0d  l:_enum = $name.
b5a0: 0a 24 6f 75 74 70 75 74 20 3d 20 5b 45 6e 75 6d  .$output = [Enum
b5b0: 5d 3a 3a 47 65 74 56 61 6c 75 65 73 28 24 6e 61  ]::GetValues($na
b5c0: 6d 65 29 20 2d 6c 69 6b 65 20 24 5f 6f 70 74 20  me) -like $_opt 
b5d0: 2d 72 65 70 6c 61 63 65 20 27 5e 28 2e 2a 29 24  -replace '^(.*)$
b5e0: 27 2c 27 22 24 31 22 27 0d 0a 24 6f 75 74 70 75  ','"$1"'..$outpu
b5f0: 74 20 7c 20 73 6f 72 74 0d 0a 7d 0d 0a 7d 0d 0a  t | sort..}..}..
b600: 7d 0d 0a 7d 0d 0a 69 66 20 28 20 24 6f 75 74 70  }..}..if ( $outp
b610: 75 74 20 2d 6e 65 20 24 6e 75 6c 6c 20 29 0d 0a  ut -ne $null )..
b620: 7b 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 7d 0d  {..break;..}..}.
b630: 0a 0d 0a 69 66 20 28 20 24 6c 69 6e 65 20 2d 6d  ...if ( $line -m
b640: 61 74 63 68 20 27 28 66 75 6e 63 74 69 6f 6e 7c  atch '(function|
b650: 66 69 6c 74 65 72 29 5c 73 2b 28 5c 77 2a 29 24  filter)\s+(\w*)$
b660: 27 29 0d 0a 7b 0d 0a 24 5f 70 61 74 20 3d 20 27  ')..{..$_pat = '
b670: 66 75 6e 63 74 69 6f 6e 3a 5c 27 20 2b 20 24 4d  function:\' + $M
b680: 61 74 63 68 65 73 5b 32 5d 20 2b 20 27 2a 27 0d  atches[2] + '*'.
b690: 0a 47 65 74 2d 43 68 69 6c 64 49 74 65 6d 20 24  .Get-ChildItem $
b6a0: 5f 70 61 74 7c 20 25 20 7b 20 24 5f 2e 4e 61 6d  _pat| % { $_.Nam
b6b0: 65 20 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a  e }..break;..}..
b6c0: 0d 0a 0d 0a 69 66 20 28 20 24 6c 69 6e 65 5b 2d  ....if ( $line[-
b6d0: 31 5d 20 2d 65 71 20 22 20 22 20 29 0d 0a 7b 0d  1] -eq " " )..{.
b6e0: 0a 24 5f 63 6d 64 6c 65 74 20 3d 20 24 6c 69 6e  .$_cmdlet = $lin
b6f0: 65 2e 54 72 69 6d 45 6e 64 28 22 20 22 29 2e 53  e.TrimEnd(" ").S
b700: 70 6c 69 74 28 22 20 7c 28 3b 3d 7b 22 29 5b 2d  plit(" |(;={")[-
b710: 31 5d 0d 0a 0d 0a 23 20 6e 6f 77 20 67 65 74 20  1]....# now get 
b720: 74 68 65 20 69 6e 66 6f 20 6f 62 6a 65 63 74 20  the info object 
b730: 66 6f 72 20 69 74 2e 2e 2e 0d 0a 24 5f 63 6d 64  for it.....$_cmd
b740: 6c 65 74 20 3d 20 40 28 47 65 74 2d 43 6f 6d 6d  let = @(Get-Comm
b750: 61 6e 64 20 2d 74 79 70 65 20 27 63 6d 64 6c 65  and -type 'cmdle
b760: 74 2c 61 6c 69 61 73 2c 66 75 6e 63 74 69 6f 6e  t,alias,function
b770: 27 20 24 5f 63 6d 64 6c 65 74 29 5b 30 5d 0d 0a  ' $_cmdlet)[0]..
b780: 0d 0a 23 20 6c 6f 6f 70 20 72 65 73 6f 6c 76 69  ..# loop resolvi
b790: 6e 67 20 61 6c 69 61 73 65 73 2e 2e 2e 0d 0a 77  ng aliases.....w
b7a0: 68 69 6c 65 20 28 24 5f 63 6d 64 6c 65 74 2e 43  hile ($_cmdlet.C
b7b0: 6f 6d 6d 61 6e 64 54 79 70 65 20 2d 65 71 20 27  ommandType -eq '
b7c0: 61 6c 69 61 73 27 29 0d 0a 7b 0d 0a 24 5f 63 6d  alias')..{..$_cm
b7d0: 64 6c 65 74 20 3d 20 40 28 47 65 74 2d 43 6f 6d  dlet = @(Get-Com
b7e0: 6d 61 6e 64 20 2d 74 79 70 65 20 27 63 6d 64 6c  mand -type 'cmdl
b7f0: 65 74 2c 61 6c 69 61 73 2c 66 75 6e 63 74 69 6f  et,alias,functio
b800: 6e 27 20 24 5f 63 6d 64 6c 65 74 2e 44 65 66 69  n' $_cmdlet.Defi
b810: 6e 69 74 69 6f 6e 29 5b 30 5d 0d 0a 7d 0d 0a 0d  nition)[0]..}...
b820: 0a 69 66 20 28 20 22 53 65 74 2d 45 78 65 63 75  .if ( "Set-Execu
b830: 74 69 6f 6e 50 6f 6c 69 63 79 22 20 2d 65 71 20  tionPolicy" -eq 
b840: 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 29 0d  $_cmdlet.Name ).
b850: 0a 7b 0d 0a 22 55 6e 72 65 73 74 72 69 63 74 65  .{.."Unrestricte
b860: 64 22 2c 20 22 52 65 6d 6f 74 65 53 69 67 6e 65  d", "RemoteSigne
b870: 64 22 2c 20 22 41 6c 6c 53 69 67 6e 65 64 22 2c  d", "AllSigned",
b880: 20 22 52 65 73 74 72 69 63 74 65 64 22 2c 20 22   "Restricted", "
b890: 44 65 66 61 75 6c 74 22 20 7c 20 73 6f 72 74 0d  Default" | sort.
b8a0: 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66  .break;..}....if
b8b0: 20 28 20 22 54 72 61 63 65 2d 43 6f 6d 6d 61 6e   ( "Trace-Comman
b8c0: 64 22 2c 22 47 65 74 2d 54 72 61 63 65 53 6f 75  d","Get-TraceSou
b8d0: 72 63 65 22 2c 22 53 65 74 2d 54 72 61 63 65 53  rce","Set-TraceS
b8e0: 6f 75 72 63 65 22 20 2d 63 6f 6e 74 61 69 6e 73  ource" -contains
b8f0: 20 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 29   $_cmdlet.Name )
b900: 0d 0a 7b 0d 0a 47 65 74 2d 54 72 61 63 65 53 6f  ..{..Get-TraceSo
b910: 75 72 63 65 20 7c 20 25 20 7b 20 24 5f 2e 4e 61  urce | % { $_.Na
b920: 6d 65 20 7d 20 7c 20 73 6f 72 74 20 2d 55 6e 69  me } | sort -Uni
b930: 71 75 65 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a  que..break;..}..
b940: 0d 0a 69 66 20 28 20 22 4e 65 77 2d 4f 62 6a 65  ..if ( "New-Obje
b950: 63 74 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74  ct" -eq $_cmdlet
b960: 2e 4e 61 6d 65 20 29 0d 0a 7b 0d 0a 24 5f 54 79  .Name )..{..$_Ty
b970: 70 65 41 63 63 65 6c 65 72 61 74 6f 72 73 0d 0a  peAccelerators..
b980: 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20  break;..}....if 
b990: 28 20 24 5f 63 6d 64 6c 65 74 2e 4e 6f 75 6e 20  ( $_cmdlet.Noun 
b9a0: 2d 6c 69 6b 65 20 22 2a 57 4d 49 2a 22 20 29 0d  -like "*WMI*" ).
b9b0: 0a 7b 0d 0a 24 5f 57 4d 49 43 6c 61 73 73 65 73  .{..$_WMIClasses
b9c0: 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69  ..break;..}....i
b9d0: 66 20 28 20 22 47 65 74 2d 50 72 6f 63 65 73 73  f ( "Get-Process
b9e0: 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 2e 4e  " -eq $_cmdlet.N
b9f0: 61 6d 65 20 29 0d 0a 7b 0d 0a 47 65 74 2d 50 72  ame )..{..Get-Pr
ba00: 6f 63 65 73 73 20 7c 20 25 20 7b 20 24 5f 2e 4e  ocess | % { $_.N
ba10: 61 6d 65 20 7d 20 7c 20 73 6f 72 74 0d 0a 62 72  ame } | sort..br
ba20: 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20  eak;..}....if ( 
ba30: 22 41 64 64 2d 50 53 53 6e 61 70 69 6e 22 2c 20  "Add-PSSnapin", 
ba40: 22 47 65 74 2d 50 53 53 6e 61 70 69 6e 22 2c 20  "Get-PSSnapin", 
ba50: 22 52 65 6d 6f 76 65 2d 50 53 53 6e 61 70 69 6e  "Remove-PSSnapin
ba60: 22 20 2d 63 6f 6e 74 61 69 6e 73 20 24 5f 63 6d  " -contains $_cm
ba70: 64 6c 65 74 2e 4e 61 6d 65 20 29 0d 0a 7b 0d 0a  dlet.Name )..{..
ba80: 69 66 20 28 20 24 67 6c 6f 62 61 6c 3a 5f 73 6e  if ( $global:_sn
ba90: 61 70 69 6e 20 2d 6e 65 20 24 6e 75 6c 6c 20 29  apin -ne $null )
baa0: 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 73 6e  ..{..$global:_sn
bab0: 61 70 69 6e 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d  apin..break;..}.
bac0: 0a 65 6c 73 65 0d 0a 7b 0d 0a 24 67 6c 6f 62 61  .else..{..$globa
bad0: 6c 3a 5f 73 6e 61 70 69 6e 20 3d 20 24 28 47 65  l:_snapin = $(Ge
bae0: 74 2d 50 53 53 6e 61 70 49 6e 20 2d 52 65 67 69  t-PSSnapIn -Regi
baf0: 73 74 65 72 65 64 3b 47 65 74 2d 50 53 53 6e 61  stered;Get-PSSna
bb00: 70 49 6e 29 7c 20 73 6f 72 74 20 4e 61 6d 65 20  pIn)| sort Name 
bb10: 2d 55 6e 69 71 75 65 3b 0d 0a 24 67 6c 6f 62 61  -Unique;..$globa
bb20: 6c 3a 5f 73 6e 61 70 69 6e 0d 0a 62 72 65 61 6b  l:_snapin..break
bb30: 3b 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20  ;..}..}....if ( 
bb40: 22 47 65 74 2d 50 53 44 72 69 76 65 22 2c 20 22  "Get-PSDrive", "
bb50: 4e 65 77 2d 50 53 44 72 69 76 65 22 2c 20 22 52  New-PSDrive", "R
bb60: 65 6d 6f 76 65 2d 50 53 44 72 69 76 65 22 20 60  emove-PSDrive" `
bb70: 0d 0a 2d 63 6f 6e 74 61 69 6e 73 20 24 5f 63 6d  ..-contains $_cm
bb80: 64 6c 65 74 2e 4e 61 6d 65 20 2d 61 6e 64 20 22  dlet.Name -and "
bb90: 4e 61 6d 65 22 20 29 0d 0a 7b 0d 0a 47 65 74 2d  Name" )..{..Get-
bba0: 50 53 44 72 69 76 65 20 7c 20 73 6f 72 74 0d 0a  PSDrive | sort..
bbb0: 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20  break;..}....if 
bbc0: 28 20 22 47 65 74 2d 45 76 65 6e 74 6c 6f 67 22  ( "Get-Eventlog"
bbd0: 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 2e 4e 61   -eq $_cmdlet.Na
bbe0: 6d 65 20 29 0d 0a 7b 0d 0a 47 65 74 2d 45 76 65  me )..{..Get-Eve
bbf0: 6e 74 4c 6f 67 20 2d 4c 69 73 74 20 7c 20 25 20  ntLog -List | % 
bc00: 7b 20 24 5f 62 61 73 65 20 2b 20 28 24 5f 2e 4c  { $_base + ($_.L
bc10: 6f 67 20 2d 72 65 70 6c 61 63 65 20 27 5c 73 27  og -replace '\s'
bc20: 2c 27 60 20 27 29 20 7d 0d 0a 62 72 65 61 6b 3b  ,'` ') }..break;
bc30: 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 22 47 65 74  ..}....if ( "Get
bc40: 2d 48 65 6c 70 22 20 2d 65 71 20 24 5f 63 6d 64  -Help" -eq $_cmd
bc50: 6c 65 74 2e 4e 61 6d 65 20 2d 6f 72 20 22 68 65  let.Name -or "he
bc60: 6c 70 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74  lp" -eq $_cmdlet
bc70: 2e 4e 61 6d 65 20 29 0d 0a 7b 0d 0a 47 65 74 2d  .Name )..{..Get-
bc80: 48 65 6c 70 20 2d 43 61 74 65 67 6f 72 79 20 61  Help -Category a
bc90: 6c 6c 20 7c 20 25 20 7b 20 24 5f 2e 4e 61 6d 65  ll | % { $_.Name
bca0: 20 7d 20 7c 20 73 6f 72 74 20 2d 55 6e 69 71 75   } | sort -Uniqu
bcb0: 65 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a  e..break;..}....
bcc0: 69 66 20 28 20 22 47 65 74 2d 53 65 72 76 69 63  if ( "Get-Servic
bcd0: 65 22 2c 20 22 52 65 73 74 61 72 74 2d 53 65 72  e", "Restart-Ser
bce0: 76 69 63 65 22 2c 20 22 52 65 73 75 6d 65 2d 53  vice", "Resume-S
bcf0: 65 72 76 69 63 65 22 2c 0d 0a 22 53 74 61 72 74  ervice",.."Start
bd00: 2d 53 65 72 76 69 63 65 22 2c 20 22 53 74 6f 70  -Service", "Stop
bd10: 2d 53 65 72 76 69 63 65 22 2c 20 22 53 75 73 70  -Service", "Susp
bd20: 65 6e 64 2d 53 65 72 76 69 63 65 22 20 60 0d 0a  end-Service" `..
bd30: 2d 63 6f 6e 74 61 69 6e 73 20 24 5f 63 6d 64 6c  -contains $_cmdl
bd40: 65 74 2e 4e 61 6d 65 20 29 0d 0a 7b 0d 0a 47 65  et.Name )..{..Ge
bd50: 74 2d 53 65 72 76 69 63 65 20 7c 20 73 6f 72 74  t-Service | sort
bd60: 20 4e 61 6d 65 20 20 7c 20 25 20 7b 20 24 5f 62   Name  | % { $_b
bd70: 61 73 65 20 2b 20 28 24 5f 2e 4e 61 6d 65 20 2d  ase + ($_.Name -
bd80: 72 65 70 6c 61 63 65 20 27 5c 73 27 2c 27 60 20  replace '\s','` 
bd90: 27 29 20 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d  ') }..break;..}.
bda0: 0a 0d 0a 69 66 20 28 20 22 47 65 74 2d 43 6f 6d  ...if ( "Get-Com
bdb0: 6d 61 6e 64 22 20 2d 65 71 20 24 5f 63 6d 64 6c  mand" -eq $_cmdl
bdc0: 65 74 2e 4e 61 6d 65 20 29 0d 0a 7b 0d 0a 47 65  et.Name )..{..Ge
bdd0: 74 2d 43 6f 6d 6d 61 6e 64 20 2d 43 6f 6d 6d 61  t-Command -Comma
bde0: 6e 64 54 79 70 65 20 41 6c 6c 20 7c 20 25 20 7b  ndType All | % {
bdf0: 20 24 5f 62 61 73 65 20 2b 20 28 24 5f 2e 4e 61   $_base + ($_.Na
be00: 6d 65 20 2d 72 65 70 6c 61 63 65 20 27 5c 73 27  me -replace '\s'
be10: 2c 27 60 20 27 29 20 7d 0d 0a 62 72 65 61 6b 3b  ,'` ') }..break;
be20: 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 22 46 6f 72  ..}....if ( "For
be30: 6d 61 74 2d 4c 69 73 74 22 2c 20 22 46 6f 72 6d  mat-List", "Form
be40: 61 74 2d 43 75 73 74 6f 6d 22 2c 20 22 46 6f 72  at-Custom", "For
be50: 6d 61 74 2d 54 61 62 6c 65 22 2c 20 22 46 6f 72  mat-Table", "For
be60: 6d 61 74 2d 57 69 64 65 22 2c 20 22 43 6f 6d 70  mat-Wide", "Comp
be70: 61 72 65 2d 4f 62 6a 65 63 74 22 2c 0d 0a 22 43  are-Object",.."C
be80: 6f 6e 76 65 72 74 54 6f 2d 48 74 6d 6c 22 2c 20  onvertTo-Html", 
be90: 22 4d 65 61 73 75 72 65 2d 4f 62 6a 65 63 74 22  "Measure-Object"
bea0: 2c 20 22 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74  , "Select-Object
beb0: 22 2c 20 22 47 72 6f 75 70 2d 4f 62 6a 65 63 74  ", "Group-Object
bec0: 22 2c 20 22 53 6f 72 74 2d 4f 62 6a 65 63 74 22  ", "Sort-Object"
bed0: 20 60 0d 0a 2d 63 6f 6e 74 61 69 6e 73 20 24 5f   `..-contains $_
bee0: 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 29 0d 0a 7b  cmdlet.Name )..{
bef0: 0d 0a 47 65 74 2d 50 69 70 65 4c 69 6e 65 4f 62  ..Get-PipeLineOb
bf00: 6a 65 63 74 0d 0a 24 5f 64 75 6d 6d 79 20 7c 20  ject..$_dummy | 
bf10: 67 6d 20 2d 4d 65 6d 62 65 72 54 79 70 65 20 50  gm -MemberType P
bf20: 72 6f 70 65 72 74 69 65 73 2c 50 61 72 61 6d 65  roperties,Parame
bf30: 74 65 72 69 7a 65 64 50 72 6f 70 65 72 74 79 20  terizedProperty 
bf40: 7c 20 73 6f 72 74 20 6d 65 6d 62 65 72 74 79 70  | sort membertyp
bf50: 65 20 7c 20 25 20 7b 20 24 5f 62 61 73 65 20 2b  e | % { $_base +
bf60: 20 28 24 5f 2e 4e 61 6d 65 20 2d 72 65 70 6c 61   ($_.Name -repla
bf70: 63 65 20 27 5c 73 27 2c 27 60 20 27 29 20 7d 0d  ce '\s','` ') }.
bf80: 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66  .break;..}....if
bf90: 20 28 20 22 43 6c 65 61 72 2d 56 61 72 69 61 62   ( "Clear-Variab
bfa0: 6c 65 22 2c 20 22 47 65 74 2d 56 61 72 69 61 62  le", "Get-Variab
bfb0: 6c 65 22 2c 20 22 4e 65 77 2d 56 61 72 69 61 62  le", "New-Variab
bfc0: 6c 65 22 2c 20 22 52 65 6d 6f 76 65 2d 56 61 72  le", "Remove-Var
bfd0: 69 61 62 6c 65 22 2c 20 22 53 65 74 2d 56 61 72  iable", "Set-Var
bfe0: 69 61 62 6c 65 22 20 2d 63 6f 6e 74 61 69 6e 73  iable" -contains
bff0: 20 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 29   $_cmdlet.Name )
c000: 0d 0a 7b 0d 0a 47 65 74 2d 56 61 72 69 61 62 6c  ..{..Get-Variabl
c010: 65 20 2d 53 63 6f 70 65 20 47 6c 6f 62 61 6c 20  e -Scope Global 
c020: 7c 20 25 20 7b 20 24 5f 2e 4e 61 6d 65 20 7d 20  | % { $_.Name } 
c030: 7c 20 73 6f 72 74 20 7c 20 25 20 7b 20 24 5f 62  | sort | % { $_b
c040: 61 73 65 20 2b 20 28 24 5f 20 2d 72 65 70 6c 61  ase + ($_ -repla
c050: 63 65 20 27 5c 73 27 2c 27 60 20 27 29 20 7d 0d  ce '\s','` ') }.
c060: 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66  .break;..}....if
c070: 20 28 20 22 47 65 74 2d 41 6c 69 61 73 22 2c 20   ( "Get-Alias", 
c080: 22 4e 65 77 2d 41 6c 69 61 73 22 2c 20 22 53 65  "New-Alias", "Se
c090: 74 2d 41 6c 69 61 73 22 20 2d 63 6f 6e 74 61 69  t-Alias" -contai
c0a0: 6e 73 20 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65  ns $_cmdlet.Name
c0b0: 20 29 0d 0a 7b 0d 0a 47 65 74 2d 41 6c 69 61 73   )..{..Get-Alias
c0c0: 20 7c 20 25 20 7b 20 24 5f 2e 4e 61 6d 65 20 7d   | % { $_.Name }
c0d0: 20 7c 20 73 6f 72 74 20 7c 20 25 20 7b 20 24 5f   | sort | % { $_
c0e0: 62 61 73 65 20 2b 20 28 24 5f 20 2d 72 65 70 6c  base + ($_ -repl
c0f0: 61 63 65 20 27 5c 73 27 2c 27 60 20 27 29 20 7d  ace '\s','` ') }
c100: 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 7d 0d 0a  ..break;..}..}..
c110: 0d 0a 0d 0a 69 66 20 28 20 24 6c 69 6e 65 5b 2d  ....if ( $line[-
c120: 31 5d 20 2d 65 71 20 22 20 22 20 29 0d 0a 7b 0d  1] -eq " " )..{.
c130: 0a 23 20 65 78 74 72 61 63 74 20 74 68 65 20 63  .# extract the c
c140: 6f 6d 6d 61 6e 64 20 6e 61 6d 65 20 66 72 6f 6d  ommand name from
c150: 20 74 68 65 20 73 74 72 69 6e 67 0d 0a 23 20 66   the string..# f
c160: 69 72 73 74 20 73 70 6c 69 74 20 74 68 65 20 73  irst split the s
c170: 74 72 69 6e 67 20 69 6e 74 6f 20 73 74 61 74 65  tring into state
c180: 6d 65 6e 74 73 20 61 6e 64 20 70 69 70 65 6c 69  ments and pipeli
c190: 6e 65 20 65 6c 65 6d 65 6e 74 73 0d 0a 23 20 54  ne elements..# T
c1a0: 68 69 73 20 64 6f 65 73 6e 27 74 20 68 61 6e 64  his doesn't hand
c1b0: 6c 65 20 73 74 72 69 6e 67 73 20 68 6f 77 65 76  le strings howev
c1c0: 65 72 2e 0d 0a 24 5f 63 6d 64 6c 65 74 20 3d 20  er...$_cmdlet = 
c1d0: 5b 72 65 67 65 78 5d 3a 3a 53 70 6c 69 74 28 24  [regex]::Split($
c1e0: 6c 69 6e 65 2c 20 27 5b 7c 3b 3d 5d 27 29 5b 2d  line, '[|;=]')[-
c1f0: 31 5d 0d 0a 0d 0a 23 20 20 45 78 74 72 61 63 74  1]....#  Extract
c200: 20 74 68 65 20 74 72 61 69 6c 69 6e 67 20 75 6e   the trailing un
c210: 63 6c 6f 73 65 64 20 62 6c 6f 63 6b 20 65 2e 67  closed block e.g
c220: 2e 20 6c 73 20 7c 20 66 6f 72 65 61 63 68 20 7b  . ls | foreach {
c230: 20 63 70 0d 0a 69 66 20 28 24 5f 63 6d 64 6c 65   cp..if ($_cmdle
c240: 74 20 2d 6d 61 74 63 68 20 27 5c 7b 28 5b 5e 5c  t -match '\{([^\
c250: 7b 5c 7d 5d 2a 29 24 27 29 0d 0a 7b 0d 0a 24 5f  {\}]*)$')..{..$_
c260: 63 6d 64 6c 65 74 20 3d 20 24 6d 61 74 63 68 65  cmdlet = $matche
c270: 73 5b 31 5d 0d 0a 7d 0d 0a 0d 0a 23 20 45 78 74  s[1]..}....# Ext
c280: 72 61 63 74 20 74 68 65 20 6c 6f 6e 67 65 73 74  ract the longest
c290: 20 75 6e 63 6c 6f 73 65 64 20 70 61 72 65 6e 74   unclosed parent
c2a0: 68 65 74 69 63 61 6c 20 65 78 70 72 65 73 73 69  hetical expressi
c2b0: 6f 6e 2e 2e 2e 0d 0a 69 66 20 28 24 5f 63 6d 64  on.....if ($_cmd
c2c0: 6c 65 74 20 2d 6d 61 74 63 68 20 27 5c 28 28 5b  let -match '\(([
c2d0: 5e 28 29 5d 2a 29 24 27 29 0d 0a 7b 0d 0a 24 5f  ^()]*)$')..{..$_
c2e0: 63 6d 64 6c 65 74 20 3d 20 24 6d 61 74 63 68 65  cmdlet = $matche
c2f0: 73 5b 31 5d 0d 0a 7d 0d 0a 0d 0a 23 20 74 61 6b  s[1]..}....# tak
c300: 65 20 74 68 65 20 66 69 72 73 74 20 73 70 61 63  e the first spac
c310: 65 20 73 65 70 61 72 61 74 65 64 20 74 6f 6b 65  e separated toke
c320: 6e 20 6f 66 20 74 68 65 20 72 65 6d 61 69 6e 69  n of the remaini
c330: 6e 67 20 73 74 72 69 6e 67 0d 0a 23 20 61 73 20  ng string..# as 
c340: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6c  the command to l
c350: 6f 6f 6b 20 75 70 2e 20 54 72 69 6d 20 61 6e 79  ook up. Trim any
c360: 20 6c 65 61 64 69 6e 67 20 6f 72 20 74 72 61 69   leading or trai
c370: 6c 69 6e 67 20 73 70 61 63 65 73 0d 0a 23 20 73  ling spaces..# s
c380: 6f 20 79 6f 75 20 64 6f 6e 27 74 20 67 65 74 20  o you don't get 
c390: 6c 65 61 64 69 6e 67 20 65 6d 70 74 79 20 65 6c  leading empty el
c3a0: 65 6d 65 6e 74 73 2e 0d 0a 24 5f 63 6d 64 6c 65  ements...$_cmdle
c3b0: 74 20 3d 20 24 5f 63 6d 64 6c 65 74 2e 54 72 69  t = $_cmdlet.Tri
c3c0: 6d 28 29 2e 53 70 6c 69 74 28 29 5b 30 5d 0d 0a  m().Split()[0]..
c3d0: 0d 0a 23 20 6e 6f 77 20 67 65 74 20 74 68 65 20  ..# now get the 
c3e0: 69 6e 66 6f 20 6f 62 6a 65 63 74 20 66 6f 72 20  info object for 
c3f0: 69 74 2e 2e 2e 0d 0a 24 5f 63 6d 64 6c 65 74 20  it.....$_cmdlet 
c400: 3d 20 40 28 47 65 74 2d 43 6f 6d 6d 61 6e 64 20  = @(Get-Command 
c410: 2d 74 79 70 65 20 27 41 70 70 6c 69 63 61 74 69  -type 'Applicati
c420: 6f 6e 27 20 24 5f 63 6d 64 6c 65 74 29 5b 30 5d  on' $_cmdlet)[0]
c430: 0d 0a 0d 0a 69 66 20 28 20 24 5f 63 6d 64 6c 65  ....if ( $_cmdle
c440: 74 2e 4e 61 6d 65 20 2d 65 71 20 22 70 6f 77 65  t.Name -eq "powe
c450: 72 73 68 65 6c 6c 2e 65 78 65 22 20 29 0d 0a 7b  rshell.exe" )..{
c460: 0d 0a 22 2d 50 53 43 6f 6e 73 6f 6c 65 46 69 6c  .."-PSConsoleFil
c470: 65 22 2c 20 22 2d 56 65 72 73 69 6f 6e 22 2c 20  e", "-Version", 
c480: 22 2d 4e 6f 4c 6f 67 6f 22 2c 20 22 2d 4e 6f 45  "-NoLogo", "-NoE
c490: 78 69 74 22 2c 20 22 2d 53 74 61 22 2c 20 22 2d  xit", "-Sta", "-
c4a0: 4e 6f 50 72 6f 66 69 6c 65 22 2c 20 22 2d 4e 6f  NoProfile", "-No
c4b0: 6e 49 6e 74 65 72 61 63 74 69 76 65 22 2c 0d 0a  nInteractive",..
c4c0: 22 2d 49 6e 70 75 74 46 6f 72 6d 61 74 22 2c 20  "-InputFormat", 
c4d0: 22 2d 4f 75 74 70 75 74 46 6f 72 6d 61 74 22 2c  "-OutputFormat",
c4e0: 20 22 2d 45 6e 63 6f 64 65 64 43 6f 6d 6d 61 6e   "-EncodedComman
c4f0: 64 22 2c 20 22 2d 46 69 6c 65 22 2c 20 22 2d 43  d", "-File", "-C
c500: 6f 6d 6d 61 6e 64 22 20 7c 20 73 6f 72 74 0d 0a  ommand" | sort..
c510: 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 69 66 20 28 20  break;..}..if ( 
c520: 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 2d 65  $_cmdlet.Name -e
c530: 71 20 22 66 73 75 74 69 6c 2e 65 78 65 22 20 29  q "fsutil.exe" )
c540: 0d 0a 7b 0d 0a 22 62 65 68 61 76 69 6f 72 20 71  ..{.."behavior q
c550: 75 65 72 79 22 2c 20 22 62 65 68 61 76 69 6f 72  uery", "behavior
c560: 20 73 65 74 22 2c 20 22 64 69 72 74 79 20 71 75   set", "dirty qu
c570: 65 72 79 22 2c 20 22 64 69 72 74 79 20 73 65 74  ery", "dirty set
c580: 22 2c 20 0d 0a 22 66 69 6c 65 20 66 69 6e 64 62  ", .."file findb
c590: 79 73 69 64 22 2c 20 22 66 69 6c 65 20 71 75 65  ysid", "file que
c5a0: 72 79 61 6c 6c 6f 63 72 61 6e 67 65 73 22 2c 20  ryallocranges", 
c5b0: 22 66 69 6c 65 20 73 65 74 73 68 6f 72 74 6e 61  "file setshortna
c5c0: 6d 65 22 2c 20 22 66 69 6c 65 20 73 65 74 76 61  me", "file setva
c5d0: 6c 69 64 64 61 74 61 22 2c 20 22 66 69 6c 65 20  liddata", "file 
c5e0: 73 65 74 7a 65 72 6f 64 61 74 61 22 2c 20 22 66  setzerodata", "f
c5f0: 69 6c 65 20 63 72 65 61 74 65 6e 65 77 22 2c 20  ile createnew", 
c600: 0d 0a 22 66 73 69 6e 66 6f 20 64 72 69 76 65 73  .."fsinfo drives
c610: 22 2c 20 22 66 73 69 6e 66 6f 20 64 72 69 76 65  ", "fsinfo drive
c620: 74 79 70 65 22 2c 20 22 66 73 69 6e 66 6f 20 76  type", "fsinfo v
c630: 6f 6c 75 6d 65 69 6e 66 6f 22 2c 20 22 66 73 69  olumeinfo", "fsi
c640: 6e 66 6f 20 6e 74 66 73 69 6e 66 6f 22 2c 20 22  nfo ntfsinfo", "
c650: 66 73 69 6e 66 6f 20 73 74 61 74 69 73 74 69 63  fsinfo statistic
c660: 73 22 2c 20 0d 0a 22 68 61 72 64 6c 69 6e 6b 20  s", .."hardlink 
c670: 63 72 65 61 74 65 22 2c 20 22 6f 62 6a 65 63 74  create", "object
c680: 69 64 20 71 75 65 72 79 22 2c 20 22 6f 62 6a 65  id query", "obje
c690: 63 74 69 64 20 73 65 74 22 2c 20 22 6f 62 6a 65  ctid set", "obje
c6a0: 63 74 69 64 20 64 65 6c 65 74 65 22 2c 20 22 6f  ctid delete", "o
c6b0: 62 6a 65 63 74 69 64 20 63 72 65 61 74 65 22 2c  bjectid create",
c6c0: 0d 0a 22 71 75 6f 74 61 20 64 69 73 61 62 6c 65  .."quota disable
c6d0: 22 2c 20 22 71 75 6f 74 61 20 74 72 61 63 6b 22  ", "quota track"
c6e0: 2c 20 22 71 75 6f 74 61 20 65 6e 66 6f 72 63 65  , "quota enforce
c6f0: 22 2c 20 22 71 75 6f 74 61 20 76 69 6f 6c 61 74  ", "quota violat
c700: 69 6f 6e 73 22 2c 20 22 71 75 6f 74 61 20 6d 6f  ions", "quota mo
c710: 64 69 66 79 22 2c 20 22 71 75 6f 74 61 20 71 75  dify", "quota qu
c720: 65 72 79 22 2c 0d 0a 22 72 65 70 61 72 73 65 70  ery",.."reparsep
c730: 6f 69 6e 74 20 71 75 65 72 79 22 2c 20 22 72 65  oint query", "re
c740: 70 61 72 73 65 70 6f 69 6e 74 20 64 65 6c 65 74  parsepoint delet
c750: 65 22 2c 20 22 73 70 61 72 73 65 20 73 65 74 66  e", "sparse setf
c760: 6c 61 67 22 2c 20 22 73 70 61 72 73 65 20 71 75  lag", "sparse qu
c770: 65 72 79 66 6c 61 67 22 2c 20 22 73 70 61 72 73  eryflag", "spars
c780: 65 20 71 75 65 72 79 72 61 6e 67 65 22 2c 20 22  e queryrange", "
c790: 73 70 61 72 73 65 20 73 65 74 72 61 6e 67 65 22  sparse setrange"
c7a0: 2c 0d 0a 22 75 73 6e 20 63 72 65 61 74 65 6a 6f  ,.."usn createjo
c7b0: 75 72 6e 61 6c 22 2c 20 22 75 73 6e 20 64 65 6c  urnal", "usn del
c7c0: 65 74 65 6a 6f 75 72 6e 61 6c 22 2c 20 22 75 73  etejournal", "us
c7d0: 6e 20 65 6e 75 6d 64 61 74 61 22 2c 20 22 75 73  n enumdata", "us
c7e0: 6e 20 71 75 65 72 79 6a 6f 75 72 6e 61 6c 22 2c  n queryjournal",
c7f0: 20 22 75 73 6e 20 72 65 61 64 64 61 74 61 22 2c   "usn readdata",
c800: 20 22 76 6f 6c 75 6d 65 20 64 69 73 6d 6f 75 6e   "volume dismoun
c810: 74 22 2c 20 22 76 6f 6c 75 6d 65 20 64 69 73 6b  t", "volume disk
c820: 66 72 65 65 22 20 7c 20 73 6f 72 74 0d 0a 62 72  free" | sort..br
c830: 65 61 6b 3b 0d 0a 7d 0d 0a 69 66 20 28 20 24 5f  eak;..}..if ( $_
c840: 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 2d 65 71 20  cmdlet.Name -eq 
c850: 22 6e 65 74 2e 65 78 65 22 20 29 0d 0a 7b 0d 0a  "net.exe" )..{..
c860: 22 41 43 43 4f 55 4e 54 53 20 22 2c 20 22 20 43  "ACCOUNTS ", " C
c870: 4f 4d 50 55 54 45 52 20 22 2c 20 22 20 43 4f 4e  OMPUTER ", " CON
c880: 46 49 47 20 22 2c 20 22 20 43 4f 4e 54 49 4e 55  FIG ", " CONTINU
c890: 45 20 22 2c 20 22 20 46 49 4c 45 20 22 2c 20 22  E ", " FILE ", "
c8a0: 20 47 52 4f 55 50 20 22 2c 20 22 20 48 45 4c 50   GROUP ", " HELP
c8b0: 20 22 2c 20 0d 0a 22 48 45 4c 50 4d 53 47 20 22   ", .."HELPMSG "
c8c0: 2c 20 22 20 4c 4f 43 41 4c 47 52 4f 55 50 20 22  , " LOCALGROUP "
c8d0: 2c 20 22 20 4e 41 4d 45 20 22 2c 20 22 20 50 41  , " NAME ", " PA
c8e0: 55 53 45 20 22 2c 20 22 20 50 52 49 4e 54 20 22  USE ", " PRINT "
c8f0: 2c 20 22 20 53 45 4e 44 20 22 2c 20 22 20 53 45  , " SEND ", " SE
c900: 53 53 49 4f 4e 20 22 2c 20 0d 0a 22 53 48 41 52  SSION ", .."SHAR
c910: 45 20 22 2c 20 22 20 53 54 41 52 54 20 22 2c 20  E ", " START ", 
c920: 22 20 53 54 41 54 49 53 54 49 43 53 20 22 2c 20  " STATISTICS ", 
c930: 22 20 53 54 4f 50 20 22 2c 20 22 20 54 49 4d 45  " STOP ", " TIME
c940: 20 22 2c 20 22 20 55 53 45 20 22 2c 20 22 20 55   ", " USE ", " U
c950: 53 45 52 20 22 2c 20 22 20 56 49 45 57 22 20 7c  SER ", " VIEW" |
c960: 20 73 6f 72 74 0d 0a 62 72 65 61 6b 3b 0d 0a 7d   sort..break;..}
c970: 0d 0a 69 66 20 28 20 24 5f 63 6d 64 6c 65 74 2e  ..if ( $_cmdlet.
c980: 4e 61 6d 65 20 2d 65 71 20 22 69 70 63 6f 6e 66  Name -eq "ipconf
c990: 69 67 2e 65 78 65 22 20 29 0d 0a 7b 0d 0a 22 2f  ig.exe" )..{.."/
c9a0: 3f 22 2c 20 22 2f 61 6c 6c 22 2c 20 22 2f 72 65  ?", "/all", "/re
c9b0: 6e 65 77 22 2c 20 22 2f 72 65 6c 65 61 73 65 22  new", "/release"
c9c0: 2c 20 22 2f 66 6c 75 73 68 64 6e 73 22 2c 20 22  , "/flushdns", "
c9d0: 2f 64 69 73 70 6c 61 79 64 6e 73 22 2c 0d 0a 22  /displaydns",.."
c9e0: 2f 72 65 67 69 73 74 65 72 64 6e 73 22 2c 20 22  /registerdns", "
c9f0: 2f 73 68 6f 77 63 6c 61 73 73 69 64 22 2c 20 22  /showclassid", "
ca00: 2f 73 65 74 63 6c 61 73 73 69 64 22 0d 0a 62 72  /setclassid"..br
ca10: 65 61 6b 3b 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a 69 66  eak;..}..}....if
ca20: 20 28 20 24 6c 69 6e 65 20 2d 6d 61 74 63 68 20   ( $line -match 
ca30: 27 5c 77 2b 5c 73 2b 28 5c 77 2b 28 5c 2e 7c 5b  '\w+\s+(\w+(\.|[
ca40: 5e 5c 73 5c 2e 5d 29 2a 29 24 27 20 29 0d 0a 7b  ^\s\.])*)$' )..{
ca50: 0d 0a 23 24 5f 6f 70 74 20 3d 20 24 4d 61 74 63  ..#$_opt = $Matc
ca60: 68 65 73 5b 31 5d 20 2b 20 27 2a 27 0d 0a 24 5f  hes[1] + '*'..$_
ca70: 63 6d 64 6c 65 74 20 3d 20 24 6c 69 6e 65 2e 54  cmdlet = $line.T
ca80: 72 69 6d 45 6e 64 28 22 20 22 29 2e 53 70 6c 69  rimEnd(" ").Spli
ca90: 74 28 22 20 7c 28 3b 3d 7b 22 29 5b 2d 32 5d 0d  t(" |(;={")[-2].
caa0: 0a 0d 0a 24 5f 6f 70 74 20 3d 20 24 4d 61 74 63  ...$_opt = $Matc
cab0: 68 65 73 5b 31 5d 2e 53 70 6c 69 74 28 22 20 2c  hes[1].Split(" ,
cac0: 22 29 5b 2d 31 5d 20 2b 20 27 2a 27 0d 0a 24 5f  ")[-1] + '*'..$_
cad0: 62 61 73 65 20 3d 20 24 4d 61 74 63 68 65 73 5b  base = $Matches[
cae0: 31 5d 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 24  1].Substring(0,$
caf0: 4d 61 74 63 68 65 73 5b 31 5d 2e 4c 65 6e 67 74  Matches[1].Lengt
cb00: 68 2d 24 4d 61 74 63 68 65 73 5b 31 5d 2e 53 70  h-$Matches[1].Sp
cb10: 6c 69 74 28 22 20 2c 22 29 5b 2d 31 5d 2e 6c 65  lit(" ,")[-1].le
cb20: 6e 67 74 68 29 0d 0a 0d 0a 0d 0a 23 20 6e 6f 77  ngth)......# now
cb30: 20 67 65 74 20 74 68 65 20 69 6e 66 6f 20 6f 62   get the info ob
cb40: 6a 65 63 74 20 66 6f 72 20 69 74 2e 2e 2e 0d 0a  ject for it.....
cb50: 24 5f 63 6d 64 6c 65 74 20 3d 20 40 28 47 65 74  $_cmdlet = @(Get
cb60: 2d 43 6f 6d 6d 61 6e 64 20 2d 74 79 70 65 20 27  -Command -type '
cb70: 63 6d 64 6c 65 74 2c 61 6c 69 61 73 2c 66 75 6e  cmdlet,alias,fun
cb80: 63 74 69 6f 6e 27 20 24 5f 63 6d 64 6c 65 74 29  ction' $_cmdlet)
cb90: 5b 30 5d 0d 0a 0d 0a 23 20 6c 6f 6f 70 20 72 65  [0]....# loop re
cba0: 73 6f 6c 76 69 6e 67 20 61 6c 69 61 73 65 73 2e  solving aliases.
cbb0: 2e 2e 0d 0a 77 68 69 6c 65 20 28 24 5f 63 6d 64  ....while ($_cmd
cbc0: 6c 65 74 2e 43 6f 6d 6d 61 6e 64 54 79 70 65 20  let.CommandType 
cbd0: 2d 65 71 20 27 61 6c 69 61 73 27 29 0d 0a 7b 0d  -eq 'alias')..{.
cbe0: 0a 24 5f 63 6d 64 6c 65 74 20 3d 20 40 28 47 65  .$_cmdlet = @(Ge
cbf0: 74 2d 43 6f 6d 6d 61 6e 64 20 2d 74 79 70 65 20  t-Command -type 
cc00: 27 63 6d 64 6c 65 74 2c 61 6c 69 61 73 2c 66 75  'cmdlet,alias,fu
cc10: 6e 63 74 69 6f 6e 27 20 24 5f 63 6d 64 6c 65 74  nction' $_cmdlet
cc20: 2e 44 65 66 69 6e 69 74 69 6f 6e 29 5b 30 5d 0d  .Definition)[0].
cc30: 0a 7d 0d 0a 0d 0a 69 66 20 28 20 22 53 65 74 2d  .}....if ( "Set-
cc40: 45 78 65 63 75 74 69 6f 6e 50 6f 6c 69 63 79 22  ExecutionPolicy"
cc50: 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 2e 4e 61   -eq $_cmdlet.Na
cc60: 6d 65 20 29 0d 0a 7b 0d 0a 22 55 6e 72 65 73 74  me )..{.."Unrest
cc70: 72 69 63 74 65 64 22 2c 20 22 52 65 6d 6f 74 65  ricted", "Remote
cc80: 53 69 67 6e 65 64 22 2c 20 22 41 6c 6c 53 69 67  Signed", "AllSig
cc90: 6e 65 64 22 2c 20 22 52 65 73 74 72 69 63 74 65  ned", "Restricte
cca0: 64 22 2c 20 22 44 65 66 61 75 6c 74 22 20 2d 6c  d", "Default" -l
ccb0: 69 6b 65 20 24 5f 6f 70 74 20 7c 20 73 6f 72 74  ike $_opt | sort
ccc0: 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69  ..break;..}....i
ccd0: 66 20 28 20 22 54 72 61 63 65 2d 43 6f 6d 6d 61  f ( "Trace-Comma
cce0: 6e 64 22 2c 22 47 65 74 2d 54 72 61 63 65 53 6f  nd","Get-TraceSo
ccf0: 75 72 63 65 22 2c 22 53 65 74 2d 54 72 61 63 65  urce","Set-Trace
cd00: 53 6f 75 72 63 65 22 20 2d 63 6f 6e 74 61 69 6e  Source" -contain
cd10: 73 20 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20  s $_cmdlet.Name 
cd20: 29 0d 0a 7b 0d 0a 47 65 74 2d 54 72 61 63 65 53  )..{..Get-TraceS
cd30: 6f 75 72 63 65 20 2d 4e 61 6d 65 20 24 5f 6f 70  ource -Name $_op
cd40: 74 20 7c 20 25 20 7b 20 24 5f 2e 4e 61 6d 65 20  t | % { $_.Name 
cd50: 7d 20 7c 20 73 6f 72 74 20 2d 55 6e 69 71 75 65  } | sort -Unique
cd60: 20 7c 20 25 20 7b 20 24 5f 62 61 73 65 20 2b 20   | % { $_base + 
cd70: 28 24 5f 20 2d 72 65 70 6c 61 63 65 20 27 5c 73  ($_ -replace '\s
cd80: 27 2c 27 60 20 27 29 20 7d 0d 0a 62 72 65 61 6b  ','` ') }..break
cd90: 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 22 4e 65  ;..}....if ( "Ne
cda0: 77 2d 4f 62 6a 65 63 74 22 20 2d 65 71 20 24 5f  w-Object" -eq $_
cdb0: 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 29 0d 0a 7b  cmdlet.Name )..{
cdc0: 0d 0a 24 5f 54 79 70 65 41 63 63 65 6c 65 72 61  ..$_TypeAccelera
cdd0: 74 6f 72 73 20 2d 6c 69 6b 65 20 24 5f 6f 70 74  tors -like $_opt
cde0: 0d 0a 57 72 69 74 65 2d 43 6c 61 73 73 4e 61 6d  ..Write-ClassNam
cdf0: 65 73 20 24 5f 54 79 70 65 4e 61 6d 65 73 5f 53  es $_TypeNames_S
ce00: 79 73 74 65 6d 20 28 24 5f 6f 70 74 2e 53 70 6c  ystem ($_opt.Spl
ce10: 69 74 28 22 2e 22 29 2e 43 6f 75 6e 74 2d 31 29  it(".").Count-1)
ce20: 0d 0a 57 72 69 74 65 2d 43 6c 61 73 73 4e 61 6d  ..Write-ClassNam
ce30: 65 73 20 24 5f 54 79 70 65 4e 61 6d 65 73 20 28  es $_TypeNames (
ce40: 24 5f 6f 70 74 2e 53 70 6c 69 74 28 22 2e 22 29  $_opt.Split(".")
ce50: 2e 43 6f 75 6e 74 2d 31 29 0d 0a 62 72 65 61 6b  .Count-1)..break
ce60: 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 24 5f 63  ;..}....if ( $_c
ce70: 6d 64 6c 65 74 2e 4e 61 6d 65 20 2d 6c 69 6b 65  mdlet.Name -like
ce80: 20 22 2a 57 4d 49 2a 22 20 29 0d 0a 7b 0d 0a 57   "*WMI*" )..{..W
ce90: 72 69 74 65 2d 43 6c 61 73 73 4e 61 6d 65 73 20  rite-ClassNames 
cea0: 24 5f 57 4d 49 43 6c 61 73 73 65 73 20 28 24 5f  $_WMIClasses ($_
ceb0: 6f 70 74 2e 53 70 6c 69 74 28 22 5f 22 29 2e 43  opt.Split("_").C
cec0: 6f 75 6e 74 2d 31 29 20 2d 73 65 70 20 27 5f 27  ount-1) -sep '_'
ced0: 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69  ..break;..}....i
cee0: 66 20 28 20 22 47 65 74 2d 50 72 6f 63 65 73 73  f ( "Get-Process
cef0: 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 2e 4e  " -eq $_cmdlet.N
cf00: 61 6d 65 20 29 0d 0a 7b 0d 0a 47 65 74 2d 50 72  ame )..{..Get-Pr
cf10: 6f 63 65 73 73 20 24 5f 6f 70 74 20 7c 20 25 20  ocess $_opt | % 
cf20: 7b 20 24 5f 2e 4e 61 6d 65 20 7d 20 7c 20 73 6f  { $_.Name } | so
cf30: 72 74 20 7c 20 25 20 7b 20 24 5f 62 61 73 65 20  rt | % { $_base 
cf40: 2b 20 28 24 5f 20 2d 72 65 70 6c 61 63 65 20 27  + ($_ -replace '
cf50: 5c 73 27 2c 27 60 20 27 29 20 7d 0d 0a 62 72 65  \s','` ') }..bre
cf60: 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 22  ak;..}....if ( "
cf70: 41 64 64 2d 50 53 53 6e 61 70 69 6e 22 2c 20 22  Add-PSSnapin", "
cf80: 47 65 74 2d 50 53 53 6e 61 70 69 6e 22 2c 20 22  Get-PSSnapin", "
cf90: 52 65 6d 6f 76 65 2d 50 53 53 6e 61 70 69 6e 22  Remove-PSSnapin"
cfa0: 20 2d 63 6f 6e 74 61 69 6e 73 20 24 5f 63 6d 64   -contains $_cmd
cfb0: 6c 65 74 2e 4e 61 6d 65 20 29 0d 0a 7b 0d 0a 69  let.Name )..{..i
cfc0: 66 20 28 20 24 67 6c 6f 62 61 6c 3a 5f 73 6e 61  f ( $global:_sna
cfd0: 70 69 6e 20 2d 6e 65 20 24 6e 75 6c 6c 20 29 0d  pin -ne $null ).
cfe0: 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 73 6e 61  .{..$global:_sna
cff0: 70 69 6e 20 2d 6c 69 6b 65 20 24 5f 6f 70 74 20  pin -like $_opt 
d000: 7c 20 25 20 7b 20 24 5f 62 61 73 65 20 2b 20 28  | % { $_base + (
d010: 24 5f 20 2d 72 65 70 6c 61 63 65 20 27 5c 73 27  $_ -replace '\s'
d020: 2c 27 60 20 27 29 20 7d 0d 0a 62 72 65 61 6b 3b  ,'` ') }..break;
d030: 0d 0a 7d 0d 0a 65 6c 73 65 0d 0a 7b 0d 0a 24 67  ..}..else..{..$g
d040: 6c 6f 62 61 6c 3a 5f 73 6e 61 70 69 6e 20 3d 20  lobal:_snapin = 
d050: 24 28 47 65 74 2d 50 53 53 6e 61 70 49 6e 20 2d  $(Get-PSSnapIn -
d060: 52 65 67 69 73 74 65 72 65 64 3b 47 65 74 2d 50  Registered;Get-P
d070: 53 53 6e 61 70 49 6e 29 7c 20 73 6f 72 74 20 4e  SSnapIn)| sort N
d080: 61 6d 65 20 2d 55 6e 69 71 75 65 3b 0d 0a 24 67  ame -Unique;..$g
d090: 6c 6f 62 61 6c 3a 5f 73 6e 61 70 69 6e 20 2d 6c  lobal:_snapin -l
d0a0: 69 6b 65 20 24 5f 6f 70 74 20 7c 20 25 20 7b 20  ike $_opt | % { 
d0b0: 24 5f 62 61 73 65 20 2b 20 28 24 5f 20 2d 72 65  $_base + ($_ -re
d0c0: 70 6c 61 63 65 20 27 5c 73 27 2c 27 60 20 27 29  place '\s','` ')
d0d0: 20 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 7d   }..break;..}..}
d0e0: 0d 0a 0d 0a 69 66 20 28 20 22 47 65 74 2d 50 53  ....if ( "Get-PS
d0f0: 44 72 69 76 65 22 2c 20 22 4e 65 77 2d 50 53 44  Drive", "New-PSD
d100: 72 69 76 65 22 2c 20 22 52 65 6d 6f 76 65 2d 50  rive", "Remove-P
d110: 53 44 72 69 76 65 22 20 60 0d 0a 2d 63 6f 6e 74  SDrive" `..-cont
d120: 61 69 6e 73 20 24 5f 63 6d 64 6c 65 74 2e 4e 61  ains $_cmdlet.Na
d130: 6d 65 20 2d 61 6e 64 20 22 4e 61 6d 65 22 20 29  me -and "Name" )
d140: 0d 0a 7b 0d 0a 47 65 74 2d 50 53 44 72 69 76 65  ..{..Get-PSDrive
d150: 20 2d 4e 61 6d 65 20 24 5f 6f 70 74 20 7c 20 73   -Name $_opt | s
d160: 6f 72 74 20 7c 20 25 20 7b 20 24 5f 62 61 73 65  ort | % { $_base
d170: 20 2b 20 28 24 5f 20 2d 72 65 70 6c 61 63 65 20   + ($_ -replace 
d180: 27 5c 73 27 2c 27 60 20 27 29 20 7d 0d 0a 62 72  '\s','` ') }..br
d190: 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20  eak;..}....if ( 
d1a0: 22 47 65 74 2d 50 53 50 72 6f 76 69 64 65 72 22  "Get-PSProvider"
d1b0: 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 2e 4e 61   -eq $_cmdlet.Na
d1c0: 6d 65 20 29 0d 0a 7b 0d 0a 47 65 74 2d 50 53 50  me )..{..Get-PSP
d1d0: 72 6f 76 69 64 65 72 20 2d 50 53 50 72 6f 76 69  rovider -PSProvi
d1e0: 64 65 72 20 24 5f 6f 70 74 20 7c 20 25 20 7b 20  der $_opt | % { 
d1f0: 24 5f 2e 4e 61 6d 65 20 7d 20 7c 20 73 6f 72 74  $_.Name } | sort
d200: 20 7c 20 25 20 7b 20 24 5f 62 61 73 65 20 2b 20   | % { $_base + 
d210: 28 24 5f 20 2d 72 65 70 6c 61 63 65 20 27 5c 73  ($_ -replace '\s
d220: 27 2c 27 60 20 27 29 20 7d 0d 0a 62 72 65 61 6b  ','` ') }..break
d230: 3b 0d 0a 7d 0d 0a 0d 0a 0d 0a 69 66 20 28 20 22  ;..}......if ( "
d240: 47 65 74 2d 45 76 65 6e 74 6c 6f 67 22 20 2d 65  Get-Eventlog" -e
d250: 71 20 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20  q $_cmdlet.Name 
d260: 29 0d 0a 7b 0d 0a 47 65 74 2d 45 76 65 6e 74 4c  )..{..Get-EventL
d270: 6f 67 20 2d 4c 69 73 74 20 7c 20 3f 20 7b 20 24  og -List | ? { $
d280: 5f 2e 4c 6f 67 20 2d 6c 69 6b 65 20 24 5f 6f 70  _.Log -like $_op
d290: 74 20 7d 20 7c 20 25 20 7b 20 24 5f 62 61 73 65  t } | % { $_base
d2a0: 20 2b 20 28 24 5f 2e 4c 6f 67 20 2d 72 65 70 6c   + ($_.Log -repl
d2b0: 61 63 65 20 27 5c 73 27 2c 27 60 20 27 29 20 7d  ace '\s','` ') }
d2c0: 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69  ..break;..}....i
d2d0: 66 20 28 20 22 47 65 74 2d 48 65 6c 70 22 20 2d  f ( "Get-Help" -
d2e0: 65 71 20 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65  eq $_cmdlet.Name
d2f0: 20 2d 6f 72 20 22 68 65 6c 70 22 20 2d 65 71 20   -or "help" -eq 
d300: 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 29 0d  $_cmdlet.Name ).
d310: 0a 7b 0d 0a 47 65 74 2d 48 65 6c 70 20 2d 43 61  .{..Get-Help -Ca
d320: 74 65 67 6f 72 79 20 61 6c 6c 20 2d 4e 61 6d 65  tegory all -Name
d330: 20 24 5f 6f 70 74 20 7c 20 25 20 7b 20 24 5f 2e   $_opt | % { $_.
d340: 4e 61 6d 65 20 7d 20 7c 20 73 6f 72 74 20 2d 55  Name } | sort -U
d350: 6e 69 71 75 65 0d 0a 62 72 65 61 6b 3b 0d 0a 7d  nique..break;..}
d360: 0d 0a 0d 0a 69 66 20 28 20 22 47 65 74 2d 53 65  ....if ( "Get-Se
d370: 72 76 69 63 65 22 2c 20 22 52 65 73 74 61 72 74  rvice", "Restart
d380: 2d 53 65 72 76 69 63 65 22 2c 20 22 52 65 73 75  -Service", "Resu
d390: 6d 65 2d 53 65 72 76 69 63 65 22 2c 0d 0a 22 53  me-Service",.."S
d3a0: 74 61 72 74 2d 53 65 72 76 69 63 65 22 2c 20 22  tart-Service", "
d3b0: 53 74 6f 70 2d 53 65 72 76 69 63 65 22 2c 20 22  Stop-Service", "
d3c0: 53 75 73 70 65 6e 64 2d 53 65 72 76 69 63 65 22  Suspend-Service"
d3d0: 20 60 0d 0a 2d 63 6f 6e 74 61 69 6e 73 20 24 5f   `..-contains $_
d3e0: 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 29 0d 0a 7b  cmdlet.Name )..{
d3f0: 0d 0a 47 65 74 2d 53 65 72 76 69 63 65 20 2d 4e  ..Get-Service -N
d400: 61 6d 65 20 24 5f 6f 70 74 20 7c 20 73 6f 72 74  ame $_opt | sort
d410: 20 4e 61 6d 65 20 20 7c 20 25 20 7b 20 24 5f 62   Name  | % { $_b
d420: 61 73 65 20 2b 20 28 24 5f 2e 4e 61 6d 65 20 2d  ase + ($_.Name -
d430: 72 65 70 6c 61 63 65 20 27 5c 73 27 2c 27 60 20  replace '\s','` 
d440: 27 29 20 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d  ') }..break;..}.
d450: 0a 0d 0a 69 66 20 28 20 22 47 65 74 2d 43 6f 6d  ...if ( "Get-Com
d460: 6d 61 6e 64 22 20 2d 65 71 20 24 5f 63 6d 64 6c  mand" -eq $_cmdl
d470: 65 74 2e 4e 61 6d 65 20 29 0d 0a 7b 0d 0a 47 65  et.Name )..{..Ge
d480: 74 2d 43 6f 6d 6d 61 6e 64 20 2d 43 6f 6d 6d 61  t-Command -Comma
d490: 6e 64 54 79 70 65 20 41 6c 6c 20 2d 4e 61 6d 65  ndType All -Name
d4a0: 20 24 5f 6f 70 74 20 7c 20 25 20 7b 20 24 5f 62   $_opt | % { $_b
d4b0: 61 73 65 20 2b 20 28 24 5f 2e 4e 61 6d 65 20 2d  ase + ($_.Name -
d4c0: 72 65 70 6c 61 63 65 20 27 5c 73 27 2c 27 60 20  replace '\s','` 
d4d0: 27 29 20 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d  ') }..break;..}.
d4e0: 0a 0d 0a 69 66 20 28 20 22 46 6f 72 6d 61 74 2d  ...if ( "Format-
d4f0: 4c 69 73 74 22 2c 20 22 46 6f 72 6d 61 74 2d 43  List", "Format-C
d500: 75 73 74 6f 6d 22 2c 20 22 46 6f 72 6d 61 74 2d  ustom", "Format-
d510: 54 61 62 6c 65 22 2c 20 22 46 6f 72 6d 61 74 2d  Table", "Format-
d520: 57 69 64 65 22 2c 20 22 43 6f 6d 70 61 72 65 2d  Wide", "Compare-
d530: 4f 62 6a 65 63 74 22 2c 0d 0a 22 43 6f 6e 76 65  Object",.."Conve
d540: 72 74 54 6f 2d 48 74 6d 6c 22 2c 20 22 4d 65 61  rtTo-Html", "Mea
d550: 73 75 72 65 2d 4f 62 6a 65 63 74 22 2c 20 22 53  sure-Object", "S
d560: 65 6c 65 63 74 2d 4f 62 6a 65 63 74 22 2c 20 22  elect-Object", "
d570: 47 72 6f 75 70 2d 4f 62 6a 65 63 74 22 2c 20 22  Group-Object", "
d580: 53 6f 72 74 2d 4f 62 6a 65 63 74 22 20 60 0d 0a  Sort-Object" `..
d590: 2d 63 6f 6e 74 61 69 6e 73 20 24 5f 63 6d 64 6c  -contains $_cmdl
d5a0: 65 74 2e 4e 61 6d 65 20 29 0d 0a 7b 0d 0a 0d 0a  et.Name )..{....
d5b0: 47 65 74 2d 50 69 70 65 4c 69 6e 65 4f 62 6a 65  Get-PipeLineObje
d5c0: 63 74 0d 0a 24 5f 64 75 6d 6d 79 20 7c 20 47 65  ct..$_dummy | Ge
d5d0: 74 2d 4d 65 6d 62 65 72 20 2d 4e 61 6d 65 20 24  t-Member -Name $
d5e0: 5f 6f 70 74 20 2d 4d 65 6d 62 65 72 54 79 70 65  _opt -MemberType
d5f0: 20 50 72 6f 70 65 72 74 69 65 73 2c 50 61 72 61   Properties,Para
d600: 6d 65 74 65 72 69 7a 65 64 50 72 6f 70 65 72 74  meterizedPropert
d610: 79 20 7c 20 73 6f 72 74 20 6d 65 6d 62 65 72 74  y | sort membert
d620: 79 70 65 20 7c 20 25 20 7b 20 24 5f 62 61 73 65  ype | % { $_base
d630: 20 2b 20 28 24 5f 2e 4e 61 6d 65 20 2d 72 65 70   + ($_.Name -rep
d640: 6c 61 63 65 20 27 5c 73 27 2c 27 60 20 27 29 20  lace '\s','` ') 
d650: 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a  }..break;..}....
d660: 69 66 20 28 20 22 43 6c 65 61 72 2d 56 61 72 69  if ( "Clear-Vari
d670: 61 62 6c 65 22 2c 20 22 47 65 74 2d 56 61 72 69  able", "Get-Vari
d680: 61 62 6c 65 22 2c 20 22 4e 65 77 2d 56 61 72 69  able", "New-Vari
d690: 61 62 6c 65 22 2c 20 22 52 65 6d 6f 76 65 2d 56  able", "Remove-V
d6a0: 61 72 69 61 62 6c 65 22 2c 20 22 53 65 74 2d 56  ariable", "Set-V
d6b0: 61 72 69 61 62 6c 65 22 20 2d 63 6f 6e 74 61 69  ariable" -contai
d6c0: 6e 73 20 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65  ns $_cmdlet.Name
d6d0: 20 29 0d 0a 7b 0d 0a 47 65 74 2d 56 61 72 69 61   )..{..Get-Varia
d6e0: 62 6c 65 20 2d 53 63 6f 70 65 20 47 6c 6f 62 61  ble -Scope Globa
d6f0: 6c 20 2d 4e 61 6d 65 20 24 5f 6f 70 74 20 7c 20  l -Name $_opt | 
d700: 25 20 7b 20 24 5f 2e 4e 61 6d 65 20 7d 20 7c 20  % { $_.Name } | 
d710: 73 6f 72 74 20 7c 20 25 20 7b 20 24 5f 62 61 73  sort | % { $_bas
d720: 65 20 2b 20 28 24 5f 20 2d 72 65 70 6c 61 63 65  e + ($_ -replace
d730: 20 27 5c 73 27 2c 27 60 20 27 29 20 7d 0d 0a 62   '\s','` ') }..b
d740: 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20 28  reak;..}....if (
d750: 20 22 47 65 74 2d 41 6c 69 61 73 22 2c 20 22 4e   "Get-Alias", "N
d760: 65 77 2d 41 6c 69 61 73 22 2c 20 22 53 65 74 2d  ew-Alias", "Set-
d770: 41 6c 69 61 73 22 20 2d 63 6f 6e 74 61 69 6e 73  Alias" -contains
d780: 20 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 29   $_cmdlet.Name )
d790: 0d 0a 7b 0d 0a 47 65 74 2d 41 6c 69 61 73 20 2d  ..{..Get-Alias -
d7a0: 4e 61 6d 65 20 24 5f 6f 70 74 20 7c 20 25 20 7b  Name $_opt | % {
d7b0: 20 24 5f 2e 4e 61 6d 65 20 7d 20 7c 20 73 6f 72   $_.Name } | sor
d7c0: 74 20 7c 20 25 20 7b 20 24 5f 62 61 73 65 20 2b  t | % { $_base +
d7d0: 20 28 24 5f 20 2d 72 65 70 6c 61 63 65 20 27 5c   ($_ -replace '\
d7e0: 73 27 2c 27 60 20 27 29 20 7d 0d 0a 62 72 65 61  s','` ') }..brea
d7f0: 6b 3b 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a 69 66 20 28  k;..}..}....if (
d800: 20 24 6c 69 6e 65 20 2d 6d 61 74 63 68 20 27 28   $line -match '(
d810: 2d 28 5c 77 2b 29 29 5c 73 2b 28 5b 5e 2d 5d 2a  -(\w+))\s+([^-]*
d820: 24 29 27 20 29 0d 0a 7b 0d 0a 0d 0a 24 5f 70 61  $)' )..{....$_pa
d830: 72 61 6d 20 3d 20 24 6d 61 74 63 68 65 73 5b 32  ram = $matches[2
d840: 5d 20 2b 20 27 2a 27 0d 0a 24 5f 6f 70 74 20 3d  ] + '*'..$_opt =
d850: 20 24 4d 61 74 63 68 65 73 5b 33 5d 2e 53 70 6c   $Matches[3].Spl
d860: 69 74 28 22 20 2c 22 29 5b 2d 31 5d 20 2b 20 27  it(" ,")[-1] + '
d870: 2a 27 0d 0a 24 5f 62 61 73 65 20 3d 20 24 4d 61  *'..$_base = $Ma
d880: 74 63 68 65 73 5b 33 5d 2e 53 75 62 73 74 72 69  tches[3].Substri
d890: 6e 67 28 30 2c 24 4d 61 74 63 68 65 73 5b 33 5d  ng(0,$Matches[3]
d8a0: 2e 4c 65 6e 67 74 68 2d 24 4d 61 74 63 68 65 73  .Length-$Matches
d8b0: 5b 33 5d 2e 53 70 6c 69 74 28 22 20 2c 22 29 5b  [3].Split(" ,")[
d8c0: 2d 31 5d 2e 6c 65 6e 67 74 68 29 0d 0a 23 24 5f  -1].length)..#$_
d8d0: 6f 70 74 20 3d 20 28 24 4d 61 74 63 68 65 73 5b  opt = ($Matches[
d8e0: 33 5d 20 2d 72 65 70 6c 61 63 65 20 27 28 5e 2e  3] -replace '(^.
d8f0: 2a 5c 73 2a 2c 3f 5c 73 2a 29 5c 77 2a 24 27 2c  *\s*,?\s*)\w*$',
d900: 27 24 31 27 29 20 2b 20 27 2a 27 0d 0a 0d 0a 23  '$1') + '*'....#
d910: 20 65 78 74 72 61 63 74 20 74 68 65 20 63 6f 6d   extract the com
d920: 6d 61 6e 64 20 6e 61 6d 65 20 66 72 6f 6d 20 74  mand name from t
d930: 68 65 20 73 74 72 69 6e 67 0d 0a 23 20 66 69 72  he string..# fir
d940: 73 74 20 73 70 6c 69 74 20 74 68 65 20 73 74 72  st split the str
d950: 69 6e 67 20 69 6e 74 6f 20 73 74 61 74 65 6d 65  ing into stateme
d960: 6e 74 73 20 61 6e 64 20 70 69 70 65 6c 69 6e 65  nts and pipeline
d970: 20 65 6c 65 6d 65 6e 74 73 0d 0a 23 20 54 68 69   elements..# Thi
d980: 73 20 64 6f 65 73 6e 27 74 20 68 61 6e 64 6c 65  s doesn't handle
d990: 20 73 74 72 69 6e 67 73 20 68 6f 77 65 76 65 72   strings however
d9a0: 2e 0d 0a 24 5f 63 6d 64 6c 65 74 20 3d 20 5b 72  ...$_cmdlet = [r
d9b0: 65 67 65 78 5d 3a 3a 53 70 6c 69 74 28 24 6c 69  egex]::Split($li
d9c0: 6e 65 2c 20 27 5b 7c 3b 3d 5d 27 29 5b 2d 31 5d  ne, '[|;=]')[-1]
d9d0: 0d 0a 0d 0a 23 20 20 45 78 74 72 61 63 74 20 74  ....#  Extract t
d9e0: 68 65 20 74 72 61 69 6c 69 6e 67 20 75 6e 63 6c  he trailing uncl
d9f0: 6f 73 65 64 20 62 6c 6f 63 6b 20 65 2e 67 2e 20  osed block e.g. 
da00: 6c 73 20 7c 20 66 6f 72 65 61 63 68 20 7b 20 63  ls | foreach { c
da10: 70 0d 0a 69 66 20 28 24 5f 63 6d 64 6c 65 74 20  p..if ($_cmdlet 
da20: 2d 6d 61 74 63 68 20 27 5c 7b 28 5b 5e 5c 7b 5c  -match '\{([^\{\
da30: 7d 5d 2a 29 24 27 29 0d 0a 7b 0d 0a 24 5f 63 6d  }]*)$')..{..$_cm
da40: 64 6c 65 74 20 3d 20 24 6d 61 74 63 68 65 73 5b  dlet = $matches[
da50: 31 5d 0d 0a 7d 0d 0a 0d 0a 23 20 45 78 74 72 61  1]..}....# Extra
da60: 63 74 20 74 68 65 20 6c 6f 6e 67 65 73 74 20 75  ct the longest u
da70: 6e 63 6c 6f 73 65 64 20 70 61 72 65 6e 74 68 65  nclosed parenthe
da80: 74 69 63 61 6c 20 65 78 70 72 65 73 73 69 6f 6e  tical expression
da90: 2e 2e 2e 0d 0a 69 66 20 28 24 5f 63 6d 64 6c 65  .....if ($_cmdle
daa0: 74 20 2d 6d 61 74 63 68 20 27 5c 28 28 5b 5e 28  t -match '\(([^(
dab0: 29 5d 2a 29 24 27 29 0d 0a 7b 0d 0a 24 5f 63 6d  )]*)$')..{..$_cm
dac0: 64 6c 65 74 20 3d 20 24 6d 61 74 63 68 65 73 5b  dlet = $matches[
dad0: 31 5d 0d 0a 7d 0d 0a 0d 0a 23 20 74 61 6b 65 20  1]..}....# take 
dae0: 74 68 65 20 66 69 72 73 74 20 73 70 61 63 65 20  the first space 
daf0: 73 65 70 61 72 61 74 65 64 20 74 6f 6b 65 6e 20  separated token 
db00: 6f 66 20 74 68 65 20 72 65 6d 61 69 6e 69 6e 67  of the remaining
db10: 20 73 74 72 69 6e 67 0d 0a 23 20 61 73 20 74 68   string..# as th
db20: 65 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 6c 6f 6f  e command to loo
db30: 6b 20 75 70 2e 20 54 72 69 6d 20 61 6e 79 20 6c  k up. Trim any l
db40: 65 61 64 69 6e 67 20 6f 72 20 74 72 61 69 6c 69  eading or traili
db50: 6e 67 20 73 70 61 63 65 73 0d 0a 23 20 73 6f 20  ng spaces..# so 
db60: 79 6f 75 20 64 6f 6e 27 74 20 67 65 74 20 6c 65  you don't get le
db70: 61 64 69 6e 67 20 65 6d 70 74 79 20 65 6c 65 6d  ading empty elem
db80: 65 6e 74 73 2e 0d 0a 24 5f 63 6d 64 6c 65 74 20  ents...$_cmdlet 
db90: 3d 20 24 5f 63 6d 64 6c 65 74 2e 54 72 69 6d 28  = $_cmdlet.Trim(
dba0: 29 2e 53 70 6c 69 74 28 29 5b 30 5d 0d 0a 0d 0a  ).Split()[0]....
dbb0: 23 20 6e 6f 77 20 67 65 74 20 74 68 65 20 69 6e  # now get the in
dbc0: 66 6f 20 6f 62 6a 65 63 74 20 66 6f 72 20 69 74  fo object for it
dbd0: 2e 2e 2e 0d 0a 24 5f 63 6d 64 6c 65 74 20 3d 20  .....$_cmdlet = 
dbe0: 40 28 47 65 74 2d 43 6f 6d 6d 61 6e 64 20 2d 74  @(Get-Command -t
dbf0: 79 70 65 20 27 43 6d 64 6c 65 74 2c 41 6c 69 61  ype 'Cmdlet,Alia
dc00: 73 2c 46 75 6e 63 74 69 6f 6e 2c 46 69 6c 74 65  s,Function,Filte
dc10: 72 2c 45 78 74 65 72 6e 61 6c 53 63 72 69 70 74  r,ExternalScript
dc20: 27 20 24 5f 63 6d 64 6c 65 74 29 5b 30 5d 0d 0a  ' $_cmdlet)[0]..
dc30: 0d 0a 23 20 6c 6f 6f 70 20 72 65 73 6f 6c 76 69  ..# loop resolvi
dc40: 6e 67 20 61 6c 69 61 73 65 73 2e 2e 2e 0d 0a 77  ng aliases.....w
dc50: 68 69 6c 65 20 28 24 5f 63 6d 64 6c 65 74 2e 43  hile ($_cmdlet.C
dc60: 6f 6d 6d 61 6e 64 54 79 70 65 20 2d 65 71 20 27  ommandType -eq '
dc70: 61 6c 69 61 73 27 29 0d 0a 7b 0d 0a 24 5f 63 6d  alias')..{..$_cm
dc80: 64 6c 65 74 20 3d 20 40 28 47 65 74 2d 43 6f 6d  dlet = @(Get-Com
dc90: 6d 61 6e 64 20 2d 74 79 70 65 20 27 43 6d 64 6c  mand -type 'Cmdl
dca0: 65 74 2c 41 6c 69 61 73 2c 46 75 6e 63 74 69 6f  et,Alias,Functio
dcb0: 6e 2c 46 69 6c 74 65 72 2c 45 78 74 65 72 6e 61  n,Filter,Externa
dcc0: 6c 53 63 72 69 70 74 27 20 24 5f 63 6d 64 6c 65  lScript' $_cmdle
dcd0: 74 2e 44 65 66 69 6e 69 74 69 6f 6e 29 5b 30 5d  t.Definition)[0]
dce0: 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 24 5f 70 61  ..}....if ( $_pa
dcf0: 72 61 6d 2e 54 72 69 6d 45 6e 64 28 22 2a 22 29  ram.TrimEnd("*")
dd00: 20 2d 65 71 20 22 65 61 22 20 2d 6f 72 20 24 5f   -eq "ea" -or $_
dd10: 70 61 72 61 6d 2e 54 72 69 6d 45 6e 64 28 22 2a  param.TrimEnd("*
dd20: 22 29 20 2d 65 71 20 22 77 61 22 20 29 0d 0a 7b  ") -eq "wa" )..{
dd30: 0d 0a 22 53 69 6c 65 6e 74 6c 79 43 6f 6e 74 69  .."SilentlyConti
dd40: 6e 75 65 22 2c 20 22 53 74 6f 70 22 2c 20 22 43  nue", "Stop", "C
dd50: 6f 6e 74 69 6e 75 65 22 2c 20 22 49 6e 71 75 69  ontinue", "Inqui
dd60: 72 65 22 20 7c 0d 0a 3f 20 7b 20 24 5f 20 2d 6c  re" |..? { $_ -l
dd70: 69 6b 65 20 24 5f 6f 70 74 20 7d 20 7c 20 73 6f  ike $_opt } | so
dd80: 72 74 20 2d 55 6e 69 71 75 65 0d 0a 62 72 65 61  rt -Unique..brea
dd90: 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 22 46  k;..}....if ( "F
dda0: 6f 72 6d 61 74 2d 4c 69 73 74 22 2c 20 22 46 6f  ormat-List", "Fo
ddb0: 72 6d 61 74 2d 43 75 73 74 6f 6d 22 2c 20 22 46  rmat-Custom", "F
ddc0: 6f 72 6d 61 74 2d 54 61 62 6c 65 22 2c 20 22 46  ormat-Table", "F
ddd0: 6f 72 6d 61 74 2d 57 69 64 65 22 20 2d 63 6f 6e  ormat-Wide" -con
dde0: 74 61 69 6e 73 20 24 5f 63 6d 64 6c 65 74 2e 4e  tains $_cmdlet.N
ddf0: 61 6d 65 20 60 0d 0a 2d 61 6e 64 20 22 67 72 6f  ame `..-and "gro
de00: 75 70 42 79 22 20 2d 6c 69 6b 65 20 24 5f 70 61  upBy" -like $_pa
de10: 72 61 6d 20 29 0d 0a 7b 0d 0a 47 65 74 2d 50 69  ram )..{..Get-Pi
de20: 70 65 4c 69 6e 65 4f 62 6a 65 63 74 0d 0a 24 5f  peLineObject..$_
de30: 64 75 6d 6d 79 20 7c 20 47 65 74 2d 4d 65 6d 62  dummy | Get-Memb
de40: 65 72 20 2d 4e 61 6d 65 20 24 5f 6f 70 74 20 2d  er -Name $_opt -
de50: 4d 65 6d 62 65 72 54 79 70 65 20 50 72 6f 70 65  MemberType Prope
de60: 72 74 69 65 73 2c 50 61 72 61 6d 65 74 65 72 69  rties,Parameteri
de70: 7a 65 64 50 72 6f 70 65 72 74 79 20 7c 20 73 6f  zedProperty | so
de80: 72 74 20 6d 65 6d 62 65 72 74 79 70 65 20 7c 20  rt membertype | 
de90: 25 20 7b 20 24 5f 2e 4e 61 6d 65 20 7d 0d 0a 62  % { $_.Name }..b
dea0: 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20 28  reak;..}....if (
deb0: 20 24 5f 70 61 72 61 6d 2e 54 72 69 6d 45 6e 64   $_param.TrimEnd
dec0: 28 22 2a 22 29 20 2d 65 71 20 22 65 76 22 20 2d  ("*") -eq "ev" -
ded0: 6f 72 20 24 5f 70 61 72 61 6d 2e 54 72 69 6d 45  or $_param.TrimE
dee0: 6e 64 28 22 2a 22 29 20 2d 65 71 20 22 6f 76 22  nd("*") -eq "ov"
def0: 20 2d 6f 72 0d 0a 22 45 72 72 6f 72 56 61 72 69   -or.."ErrorVari
df00: 61 62 6c 65 22 20 2d 6c 69 6b 65 20 24 5f 70 61  able" -like $_pa
df10: 72 61 6d 20 2d 6f 72 20 22 4f 75 74 56 61 72 69  ram -or "OutVari
df20: 61 62 6c 65 22 20 2d 6c 69 6b 65 20 24 5f 70 61  able" -like $_pa
df30: 72 61 6d 29 0d 0a 7b 0d 0a 47 65 74 2d 56 61 72  ram)..{..Get-Var
df40: 69 61 62 6c 65 20 2d 53 63 6f 70 65 20 47 6c 6f  iable -Scope Glo
df50: 62 61 6c 20 2d 4e 61 6d 65 20 24 5f 6f 70 74 20  bal -Name $_opt 
df60: 7c 20 25 20 7b 20 24 5f 2e 4e 61 6d 65 20 7d 20  | % { $_.Name } 
df70: 7c 20 73 6f 72 74 0d 0a 62 72 65 61 6b 3b 0d 0a  | sort..break;..
df80: 7d 0d 0a 0d 0a 69 66 20 28 20 22 54 65 65 2d 4f  }....if ( "Tee-O
df90: 62 6a 65 63 74 22 20 2d 65 71 20 24 5f 63 6d 64  bject" -eq $_cmd
dfa0: 6c 65 74 2e 4e 61 6d 65 20 2d 61 6e 64 20 22 56  let.Name -and "V
dfb0: 61 72 69 61 62 6c 65 22 20 2d 6c 69 6b 65 20 24  ariable" -like $
dfc0: 5f 70 61 72 61 6d 20 29 0d 0a 7b 0d 0a 47 65 74  _param )..{..Get
dfd0: 2d 56 61 72 69 61 62 6c 65 20 2d 53 63 6f 70 65  -Variable -Scope
dfe0: 20 47 6c 6f 62 61 6c 20 2d 4e 61 6d 65 20 24 5f   Global -Name $_
dff0: 6f 70 74 20 7c 20 25 20 7b 20 24 5f 2e 4e 61 6d  opt | % { $_.Nam
e000: 65 20 7d 20 7c 20 73 6f 72 74 0d 0a 62 72 65 61  e } | sort..brea
e010: 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 22 43  k;..}....if ( "C
e020: 6c 65 61 72 2d 56 61 72 69 61 62 6c 65 22 2c 20  lear-Variable", 
e030: 22 47 65 74 2d 56 61 72 69 61 62 6c 65 22 2c 20  "Get-Variable", 
e040: 22 4e 65 77 2d 56 61 72 69 61 62 6c 65 22 2c 20  "New-Variable", 
e050: 22 52 65 6d 6f 76 65 2d 56 61 72 69 61 62 6c 65  "Remove-Variable
e060: 22 2c 20 22 53 65 74 2d 56 61 72 69 61 62 6c 65  ", "Set-Variable
e070: 22 20 2d 63 6f 6e 74 61 69 6e 73 20 24 5f 63 6d  " -contains $_cm
e080: 64 6c 65 74 2e 4e 61 6d 65 20 60 0d 0a 2d 61 6e  dlet.Name `..-an
e090: 64 20 22 4e 61 6d 65 22 20 2d 6c 69 6b 65 20 24  d "Name" -like $
e0a0: 5f 70 61 72 61 6d 29 0d 0a 7b 0d 0a 47 65 74 2d  _param)..{..Get-
e0b0: 56 61 72 69 61 62 6c 65 20 2d 53 63 6f 70 65 20  Variable -Scope 
e0c0: 47 6c 6f 62 61 6c 20 2d 4e 61 6d 65 20 24 5f 6f  Global -Name $_o
e0d0: 70 74 20 7c 20 25 20 7b 20 24 5f 2e 4e 61 6d 65  pt | % { $_.Name
e0e0: 20 7d 20 7c 20 73 6f 72 74 20 7c 20 25 20 7b 20   } | sort | % { 
e0f0: 24 5f 62 61 73 65 20 2b 20 28 24 5f 20 2d 72 65  $_base + ($_ -re
e100: 70 6c 61 63 65 20 27 5c 73 27 2c 27 60 20 27 29  place '\s','` ')
e110: 20 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d   }..break;..}...
e120: 0a 69 66 20 28 20 22 45 78 70 6f 72 74 2d 41 6c  .if ( "Export-Al
e130: 69 61 73 22 2c 20 22 47 65 74 2d 41 6c 69 61 73  ias", "Get-Alias
e140: 22 2c 20 22 4e 65 77 2d 41 6c 69 61 73 22 2c 20  ", "New-Alias", 
e150: 22 53 65 74 2d 41 6c 69 61 73 22 20 2d 63 6f 6e  "Set-Alias" -con
e160: 74 61 69 6e 73 20 24 5f 63 6d 64 6c 65 74 2e 4e  tains $_cmdlet.N
e170: 61 6d 65 20 60 0d 0a 2d 61 6e 64 20 22 4e 61 6d  ame `..-and "Nam
e180: 65 22 20 2d 6c 69 6b 65 20 24 5f 70 61 72 61 6d  e" -like $_param
e190: 29 0d 0a 7b 0d 0a 47 65 74 2d 41 6c 69 61 73 20  )..{..Get-Alias 
e1a0: 2d 4e 61 6d 65 20 24 5f 6f 70 74 20 7c 20 25 20  -Name $_opt | % 
e1b0: 7b 20 24 5f 2e 4e 61 6d 65 20 7d 20 7c 20 73 6f  { $_.Name } | so
e1c0: 72 74 20 7c 20 25 20 7b 20 24 5f 62 61 73 65 20  rt | % { $_base 
e1d0: 2b 20 28 24 5f 20 2d 72 65 70 6c 61 63 65 20 27  + ($_ -replace '
e1e0: 5c 73 27 2c 27 60 20 27 29 20 7d 0d 0a 62 72 65  \s','` ') }..bre
e1f0: 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 22  ak;..}....if ( "
e200: 4f 75 74 2d 46 69 6c 65 22 2c 22 45 78 70 6f 72  Out-File","Expor
e210: 74 2d 43 53 56 22 2c 22 53 65 6c 65 63 74 2d 53  t-CSV","Select-S
e220: 74 72 69 6e 67 22 2c 22 45 78 70 6f 72 74 2d 43  tring","Export-C
e230: 6c 69 78 6d 6c 22 20 2d 63 6f 6e 74 61 69 6e 73  lixml" -contains
e240: 20 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 60   $_cmdlet.Name `
e250: 0d 0a 2d 61 6e 64 20 22 45 6e 63 6f 64 69 6e 67  ..-and "Encoding
e260: 22 20 2d 6c 69 6b 65 20 24 5f 70 61 72 61 6d 29  " -like $_param)
e270: 0d 0a 7b 0d 0a 22 55 6e 69 63 6f 64 65 22 2c 20  ..{.."Unicode", 
e280: 20 22 55 54 46 37 22 2c 20 22 55 54 46 38 22 2c   "UTF7", "UTF8",
e290: 20 22 41 53 43 49 49 22 2c 20 22 55 54 46 33 32   "ASCII", "UTF32
e2a0: 22 2c 20 22 42 69 67 45 6e 64 69 61 6e 55 6e 69  ", "BigEndianUni
e2b0: 63 6f 64 65 22 2c 20 22 44 65 66 61 75 6c 74 22  code", "Default"
e2c0: 2c 20 22 4f 45 4d 22 20 7c 0d 0a 3f 20 7b 20 24  , "OEM" |..? { $
e2d0: 5f 20 2d 6c 69 6b 65 20 24 5f 6f 70 74 20 7d 20  _ -like $_opt } 
e2e0: 7c 20 73 6f 72 74 20 2d 55 6e 69 71 75 65 0d 0a  | sort -Unique..
e2f0: 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20  break;..}....if 
e300: 28 20 22 54 72 61 63 65 2d 43 6f 6d 6d 61 6e 64  ( "Trace-Command
e310: 22 2c 22 47 65 74 2d 54 72 61 63 65 53 6f 75 72  ","Get-TraceSour
e320: 63 65 22 2c 22 53 65 74 2d 54 72 61 63 65 53 6f  ce","Set-TraceSo
e330: 75 72 63 65 22 20 2d 63 6f 6e 74 61 69 6e 73 20  urce" -contains 
e340: 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 60 0d  $_cmdlet.Name `.
e350: 0a 2d 61 6e 64 20 22 4e 61 6d 65 22 20 2d 6c 69  .-and "Name" -li
e360: 6b 65 20 24 5f 70 61 72 61 6d 29 0d 0a 7b 0d 0a  ke $_param)..{..
e370: 47 65 74 2d 54 72 61 63 65 53 6f 75 72 63 65 20  Get-TraceSource 
e380: 2d 4e 61 6d 65 20 24 5f 6f 70 74 20 7c 20 25 20  -Name $_opt | % 
e390: 7b 20 24 5f 2e 4e 61 6d 65 20 7d 20 7c 20 73 6f  { $_.Name } | so
e3a0: 72 74 20 2d 55 6e 69 71 75 65 20 7c 20 25 20 7b  rt -Unique | % {
e3b0: 20 24 5f 62 61 73 65 20 2b 20 28 24 5f 20 2d 72   $_base + ($_ -r
e3c0: 65 70 6c 61 63 65 20 27 5c 73 27 2c 27 60 20 27  eplace '\s','` '
e3d0: 29 20 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a  ) }..break;..}..
e3e0: 0d 0a 69 66 20 28 20 22 4e 65 77 2d 4f 62 6a 65  ..if ( "New-Obje
e3f0: 63 74 22 20 2d 6c 69 6b 65 20 24 5f 63 6d 64 6c  ct" -like $_cmdl
e400: 65 74 2e 4e 61 6d 65 20 29 0d 0a 7b 0d 0a 69 66  et.Name )..{..if
e410: 20 28 20 22 43 6f 6d 4f 62 6a 65 63 74 22 20 2d   ( "ComObject" -
e420: 6c 69 6b 65 20 24 5f 70 61 72 61 6d 20 29 0d 0a  like $_param )..
e430: 7b 0d 0a 24 5f 50 72 6f 67 49 44 20 2d 6c 69 6b  {..$_ProgID -lik
e440: 65 20 24 5f 6f 70 74 20 7c 20 25 20 7b 20 24 5f  e $_opt | % { $_
e450: 20 2d 72 65 70 6c 61 63 65 20 27 5c 73 27 2c 27   -replace '\s','
e460: 60 20 27 20 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d  ` ' }..break;..}
e470: 0d 0a 0d 0a 69 66 20 28 20 22 54 79 70 65 4e 61  ....if ( "TypeNa
e480: 6d 65 22 20 2d 6c 69 6b 65 20 24 5f 70 61 72 61  me" -like $_para
e490: 6d 20 29 0d 0a 7b 0d 0a 69 66 20 28 20 24 5f 6f  m )..{..if ( $_o
e4a0: 70 74 20 2d 65 71 20 22 2a 22 20 29 0d 0a 7b 0d  pt -eq "*" )..{.
e4b0: 0a 24 5f 54 79 70 65 41 63 63 65 6c 65 72 61 74  .$_TypeAccelerat
e4c0: 6f 72 73 20 2d 6c 69 6b 65 20 24 5f 6f 70 74 0d  ors -like $_opt.
e4d0: 0a 7d 0d 0a 65 6c 73 65 0d 0a 7b 0d 0a 24 5f 54  .}..else..{..$_T
e4e0: 79 70 65 41 63 63 65 6c 65 72 61 74 6f 72 73 20  ypeAccelerators 
e4f0: 2d 6c 69 6b 65 20 24 5f 6f 70 74 0d 0a 57 72 69  -like $_opt..Wri
e500: 74 65 2d 43 6c 61 73 73 4e 61 6d 65 73 20 24 5f  te-ClassNames $_
e510: 54 79 70 65 4e 61 6d 65 73 5f 53 79 73 74 65 6d  TypeNames_System
e520: 20 28 24 5f 6f 70 74 2e 53 70 6c 69 74 28 22 2e   ($_opt.Split(".
e530: 22 29 2e 43 6f 75 6e 74 2d 31 29 0d 0a 57 72 69  ").Count-1)..Wri
e540: 74 65 2d 43 6c 61 73 73 4e 61 6d 65 73 20 24 5f  te-ClassNames $_
e550: 54 79 70 65 4e 61 6d 65 73 20 28 24 5f 6f 70 74  TypeNames ($_opt
e560: 2e 53 70 6c 69 74 28 22 2e 22 29 2e 43 6f 75 6e  .Split(".").Coun
e570: 74 2d 31 29 0d 0a 7d 0d 0a 62 72 65 61 6b 3b 0d  t-1)..}..break;.
e580: 0a 7d 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 22 4e  .}..}....if ( "N
e590: 65 77 2d 49 74 65 6d 22 20 2d 65 71 20 24 5f 63  ew-Item" -eq $_c
e5a0: 6d 64 6c 65 74 2e 4e 61 6d 65 20 29 0d 0a 7b 0d  mdlet.Name )..{.
e5b0: 0a 69 66 20 28 20 22 49 74 65 6d 54 79 70 65 22  .if ( "ItemType"
e5c0: 20 2d 6c 69 6b 65 20 24 5f 70 61 72 61 6d 20 29   -like $_param )
e5d0: 0d 0a 7b 0d 0a 22 64 69 72 65 63 74 6f 72 79 22  ..{.."directory"
e5e0: 2c 20 22 66 69 6c 65 22 20 2d 6c 69 6b 65 20 24  , "file" -like $
e5f0: 5f 6f 70 74 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d  _opt..break;..}.
e600: 0a 7d 0d 0a 0d 0a 69 66 20 28 20 22 47 65 74 2d  .}....if ( "Get-
e610: 4c 6f 63 61 74 69 6f 6e 22 2c 20 22 47 65 74 2d  Location", "Get-
e620: 50 53 44 72 69 76 65 22 2c 20 22 47 65 74 2d 50  PSDrive", "Get-P
e630: 53 50 72 6f 76 69 64 65 72 22 2c 20 22 4e 65 77  SProvider", "New
e640: 2d 50 53 44 72 69 76 65 22 2c 20 22 52 65 6d 6f  -PSDrive", "Remo
e650: 76 65 2d 50 53 44 72 69 76 65 22 20 60 0d 0a 2d  ve-PSDrive" `..-
e660: 63 6f 6e 74 61 69 6e 73 20 24 5f 63 6d 64 6c 65  contains $_cmdle
e670: 74 2e 4e 61 6d 65 20 60 0d 0a 2d 61 6e 64 20 22  t.Name `..-and "
e680: 50 53 50 72 6f 76 69 64 65 72 22 20 2d 6c 69 6b  PSProvider" -lik
e690: 65 20 24 5f 70 61 72 61 6d 20 29 0d 0a 7b 0d 0a  e $_param )..{..
e6a0: 47 65 74 2d 50 53 50 72 6f 76 69 64 65 72 20 2d  Get-PSProvider -
e6b0: 50 53 50 72 6f 76 69 64 65 72 20 24 5f 6f 70 74  PSProvider $_opt
e6c0: 20 7c 20 25 20 7b 20 24 5f 2e 4e 61 6d 65 20 7d   | % { $_.Name }
e6d0: 20 7c 20 73 6f 72 74 20 20 7c 20 25 20 7b 20 24   | sort  | % { $
e6e0: 5f 62 61 73 65 20 2b 20 28 24 5f 20 2d 72 65 70  _base + ($_ -rep
e6f0: 6c 61 63 65 20 27 5c 73 27 2c 27 60 20 27 29 20  lace '\s','` ') 
e700: 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a  }..break;..}....
e710: 69 66 20 28 20 22 47 65 74 2d 4c 6f 63 61 74 69  if ( "Get-Locati
e720: 6f 6e 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74  on" -eq $_cmdlet
e730: 2e 4e 61 6d 65 20 2d 61 6e 64 20 22 50 53 44 72  .Name -and "PSDr
e740: 69 76 65 22 20 2d 6c 69 6b 65 20 24 5f 70 61 72  ive" -like $_par
e750: 61 6d 20 29 0d 0a 7b 0d 0a 47 65 74 2d 50 53 44  am )..{..Get-PSD
e760: 72 69 76 65 20 2d 4e 61 6d 65 20 24 5f 6f 70 74  rive -Name $_opt
e770: 20 7c 20 73 6f 72 74 20 7c 20 25 20 7b 20 24 5f   | sort | % { $_
e780: 62 61 73 65 20 2b 20 28 24 5f 20 2d 72 65 70 6c  base + ($_ -repl
e790: 61 63 65 20 27 5c 73 27 2c 27 60 20 27 29 20 7d  ace '\s','` ') }
e7a0: 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69  ..break;..}....i
e7b0: 66 20 28 20 22 47 65 74 2d 50 53 44 72 69 76 65  f ( "Get-PSDrive
e7c0: 22 2c 20 22 4e 65 77 2d 50 53 44 72 69 76 65 22  ", "New-PSDrive"
e7d0: 2c 20 22 52 65 6d 6f 76 65 2d 50 53 44 72 69 76  , "Remove-PSDriv
e7e0: 65 22 20 60 0d 0a 2d 63 6f 6e 74 61 69 6e 73 20  e" `..-contains 
e7f0: 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 2d 61  $_cmdlet.Name -a
e800: 6e 64 20 22 4e 61 6d 65 22 20 2d 6c 69 6b 65 20  nd "Name" -like 
e810: 24 5f 70 61 72 61 6d 20 29 0d 0a 7b 0d 0a 47 65  $_param )..{..Ge
e820: 74 2d 50 53 44 72 69 76 65 20 2d 4e 61 6d 65 20  t-PSDrive -Name 
e830: 24 5f 6f 70 74 20 7c 20 73 6f 72 74 20 7c 20 25  $_opt | sort | %
e840: 20 7b 20 24 5f 62 61 73 65 20 2b 20 28 24 5f 20   { $_base + ($_ 
e850: 2d 72 65 70 6c 61 63 65 20 27 5c 73 27 2c 27 60  -replace '\s','`
e860: 20 27 29 20 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d   ') }..break;..}
e870: 0d 0a 0d 0a 69 66 20 28 20 22 47 65 74 2d 43 6f  ....if ( "Get-Co
e880: 6d 6d 61 6e 64 22 20 2d 65 71 20 24 5f 63 6d 64  mmand" -eq $_cmd
e890: 6c 65 74 2e 4e 61 6d 65 20 2d 61 6e 64 20 20 22  let.Name -and  "
e8a0: 50 53 53 6e 61 70 69 6e 22 20 2d 6c 69 6b 65 20  PSSnapin" -like 
e8b0: 24 5f 70 61 72 61 6d 29 0d 0a 7b 0d 0a 69 66 20  $_param)..{..if 
e8c0: 28 20 24 67 6c 6f 62 61 6c 3a 5f 73 6e 61 70 69  ( $global:_snapi
e8d0: 6e 20 2d 6e 65 20 24 6e 75 6c 6c 20 29 0d 0a 7b  n -ne $null )..{
e8e0: 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 73 6e 61 70 69  ..$global:_snapi
e8f0: 6e 20 2d 6c 69 6b 65 20 24 5f 6f 70 74 20 20 7c  n -like $_opt  |
e900: 20 25 20 7b 20 24 5f 62 61 73 65 20 2b 20 24 5f   % { $_base + $_
e910: 20 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 65   }..break;..}..e
e920: 6c 73 65 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a  lse..{..$global:
e930: 5f 73 6e 61 70 69 6e 20 3d 20 24 28 47 65 74 2d  _snapin = $(Get-
e940: 50 53 53 6e 61 70 49 6e 20 2d 52 65 67 69 73 74  PSSnapIn -Regist
e950: 65 72 65 64 3b 47 65 74 2d 50 53 53 6e 61 70 49  ered;Get-PSSnapI
e960: 6e 29 7c 20 73 6f 72 74 20 4e 61 6d 65 20 2d 55  n)| sort Name -U
e970: 6e 69 71 75 65 3b 0d 0a 24 67 6c 6f 62 61 6c 3a  nique;..$global:
e980: 5f 73 6e 61 70 69 6e 20 2d 6c 69 6b 65 20 24 5f  _snapin -like $_
e990: 6f 70 74 20 20 7c 20 25 20 7b 20 24 5f 62 61 73  opt  | % { $_bas
e9a0: 65 20 2b 20 28 24 5f 20 2d 72 65 70 6c 61 63 65  e + ($_ -replace
e9b0: 20 27 5c 73 27 2c 27 60 20 27 29 20 7d 0d 0a 62   '\s','` ') }..b
e9c0: 72 65 61 6b 3b 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a 69  reak;..}..}....i
e9d0: 66 20 28 20 22 41 64 64 2d 50 53 53 6e 61 70 69  f ( "Add-PSSnapi
e9e0: 6e 22 2c 20 22 47 65 74 2d 50 53 53 6e 61 70 69  n", "Get-PSSnapi
e9f0: 6e 22 2c 20 22 52 65 6d 6f 76 65 2d 50 53 53 6e  n", "Remove-PSSn
ea00: 61 70 69 6e 22 20 60 0d 0a 2d 63 6f 6e 74 61 69  apin" `..-contai
ea10: 6e 73 20 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65  ns $_cmdlet.Name
ea20: 20 2d 61 6e 64 20 22 4e 61 6d 65 22 20 2d 6c 69   -and "Name" -li
ea30: 6b 65 20 24 5f 70 61 72 61 6d 20 29 0d 0a 7b 0d  ke $_param )..{.
ea40: 0a 69 66 20 28 20 24 67 6c 6f 62 61 6c 3a 5f 73  .if ( $global:_s
ea50: 6e 61 70 69 6e 20 2d 6e 65 20 24 6e 75 6c 6c 20  napin -ne $null 
ea60: 29 0d 0a 7b 0d 0a 24 67 6c 6f 62 61 6c 3a 5f 73  )..{..$global:_s
ea70: 6e 61 70 69 6e 20 2d 6c 69 6b 65 20 24 5f 6f 70  napin -like $_op
ea80: 74 20 7c 20 25 20 7b 20 24 5f 62 61 73 65 20 2b  t | % { $_base +
ea90: 20 28 24 5f 20 2d 72 65 70 6c 61 63 65 20 27 5c   ($_ -replace '\
eaa0: 73 27 2c 27 60 20 27 29 20 7d 0d 0a 62 72 65 61  s','` ') }..brea
eab0: 6b 3b 0d 0a 7d 0d 0a 65 6c 73 65 0d 0a 7b 0d 0a  k;..}..else..{..
eac0: 24 67 6c 6f 62 61 6c 3a 5f 73 6e 61 70 69 6e 20  $global:_snapin 
ead0: 3d 20 24 28 47 65 74 2d 50 53 53 6e 61 70 49 6e  = $(Get-PSSnapIn
eae0: 20 2d 52 65 67 69 73 74 65 72 65 64 3b 47 65 74   -Registered;Get
eaf0: 2d 50 53 53 6e 61 70 49 6e 29 7c 20 73 6f 72 74  -PSSnapIn)| sort
eb00: 20 4e 61 6d 65 20 2d 55 6e 69 71 75 65 3b 0d 0a   Name -Unique;..
eb10: 24 67 6c 6f 62 61 6c 3a 5f 73 6e 61 70 69 6e 20  $global:_snapin 
eb20: 2d 6c 69 6b 65 20 24 5f 6f 70 74 20 7c 20 25 20  -like $_opt | % 
eb30: 7b 20 24 5f 62 61 73 65 20 2b 20 24 5f 20 7d 0d  { $_base + $_ }.
eb40: 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 7d 0d 0a 0d  .break;..}..}...
eb50: 0a 69 66 20 28 20 22 43 6c 65 61 72 2d 56 61 72  .if ( "Clear-Var
eb60: 69 61 62 6c 65 22 2c 20 22 45 78 70 6f 72 74 2d  iable", "Export-
eb70: 41 6c 69 61 73 22 2c 20 22 47 65 74 2d 41 6c 69  Alias", "Get-Ali
eb80: 61 73 22 2c 20 22 47 65 74 2d 50 53 44 72 69 76  as", "Get-PSDriv
eb90: 65 22 2c 20 22 47 65 74 2d 56 61 72 69 61 62 6c  e", "Get-Variabl
eba0: 65 22 2c 20 22 49 6d 70 6f 72 74 2d 41 6c 69 61  e", "Import-Alia
ebb0: 73 22 2c 0d 0a 22 4e 65 77 2d 41 6c 69 61 73 22  s",.."New-Alias"
ebc0: 2c 20 22 4e 65 77 2d 50 53 44 72 69 76 65 22 2c  , "New-PSDrive",
ebd0: 20 22 4e 65 77 2d 56 61 72 69 61 62 6c 65 22 2c   "New-Variable",
ebe0: 20 22 52 65 6d 6f 76 65 2d 56 61 72 69 61 62 6c   "Remove-Variabl
ebf0: 65 22 2c 20 22 53 65 74 2d 41 6c 69 61 73 22 2c  e", "Set-Alias",
ec00: 20 22 53 65 74 2d 56 61 72 69 61 62 6c 65 22 20   "Set-Variable" 
ec10: 60 0d 0a 2d 63 6f 6e 74 61 69 6e 73 20 24 5f 63  `..-contains $_c
ec20: 6d 64 6c 65 74 2e 4e 61 6d 65 20 2d 61 6e 64 20  mdlet.Name -and 
ec30: 22 53 63 6f 70 65 22 20 2d 6c 69 6b 65 20 24 5f  "Scope" -like $_
ec40: 70 61 72 61 6d 20 29 0d 0a 7b 0d 0a 22 47 6c 6f  param )..{.."Glo
ec50: 62 61 6c 22 2c 20 22 4c 6f 63 61 6c 22 2c 20 22  bal", "Local", "
ec60: 53 63 72 69 70 74 22 20 2d 6c 69 6b 65 20 24 5f  Script" -like $_
ec70: 6f 70 74 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a  opt..break;..}..
ec80: 0d 0a 69 66 20 28 20 22 47 65 74 2d 50 72 6f 63  ..if ( "Get-Proc
ec90: 65 73 73 22 2c 20 22 53 74 6f 70 2d 50 72 6f 63  ess", "Stop-Proc
eca0: 65 73 73 22 2c 20 22 57 61 69 74 2d 50 72 6f 63  ess", "Wait-Proc
ecb0: 65 73 73 22 20 2d 63 6f 6e 74 61 69 6e 73 20 24  ess" -contains $
ecc0: 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 2d 61 6e  _cmdlet.Name -an
ecd0: 64 20 22 4e 61 6d 65 22 20 2d 6c 69 6b 65 20 24  d "Name" -like $
ece0: 5f 70 61 72 61 6d 20 29 0d 0a 7b 0d 0a 47 65 74  _param )..{..Get
ecf0: 2d 50 72 6f 63 65 73 73 20 24 5f 6f 70 74 20 7c  -Process $_opt |
ed00: 20 25 20 7b 20 24 5f 2e 4e 61 6d 65 20 7d 20 7c   % { $_.Name } |
ed10: 20 73 6f 72 74 20 7c 20 25 20 7b 20 24 5f 62 61   sort | % { $_ba
ed20: 73 65 20 2b 20 28 24 5f 20 2d 72 65 70 6c 61 63  se + ($_ -replac
ed30: 65 20 27 5c 73 27 2c 27 60 20 27 29 20 7d 0d 0a  e '\s','` ') }..
ed40: 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20  break;..}....if 
ed50: 28 20 22 47 65 74 2d 45 76 65 6e 74 6c 6f 67 22  ( "Get-Eventlog"
ed60: 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 2e 4e 61   -eq $_cmdlet.Na
ed70: 6d 65 20 2d 61 6e 64 20 22 4c 6f 67 4e 61 6d 65  me -and "LogName
ed80: 22 20 2d 6c 69 6b 65 20 24 5f 70 61 72 61 6d 20  " -like $_param 
ed90: 29 0d 0a 7b 0d 0a 47 65 74 2d 45 76 65 6e 74 4c  )..{..Get-EventL
eda0: 6f 67 20 2d 4c 69 73 74 20 7c 20 3f 20 7b 20 24  og -List | ? { $
edb0: 5f 2e 4c 6f 67 20 2d 6c 69 6b 65 20 24 5f 6f 70  _.Log -like $_op
edc0: 74 20 7d 20 7c 20 25 20 7b 20 24 5f 62 61 73 65  t } | % { $_base
edd0: 20 2b 20 28 24 5f 2e 4c 6f 67 20 2d 72 65 70 6c   + ($_.Log -repl
ede0: 61 63 65 20 27 5c 73 27 2c 27 60 20 27 29 20 7d  ace '\s','` ') }
edf0: 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69  ..break;..}....i
ee00: 66 20 28 20 22 47 65 74 2d 48 65 6c 70 22 20 2d  f ( "Get-Help" -
ee10: 65 71 20 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65  eq $_cmdlet.Name
ee20: 20 2d 6f 72 20 22 68 65 6c 70 22 20 2d 65 71 20   -or "help" -eq 
ee30: 24 5f 63 6d 64 6c 65 74 2e 4e 61 6d 65 20 29 0d  $_cmdlet.Name ).
ee40: 0a 7b 0d 0a 69 66 20 28 20 22 4e 61 6d 65 22 20  .{..if ( "Name" 
ee50: 2d 6c 69 6b 65 20 24 5f 70 61 72 61 6d 20 29 0d  -like $_param ).
ee60: 0a 7b 0d 0a 47 65 74 2d 48 65 6c 70 20 2d 43 61  .{..Get-Help -Ca
ee70: 74 65 67 6f 72 79 20 61 6c 6c 20 2d 4e 61 6d 65  tegory all -Name
ee80: 20 24 5f 6f 70 74 20 7c 20 25 20 7b 20 24 5f 2e   $_opt | % { $_.
ee90: 4e 61 6d 65 20 7d 20 7c 20 73 6f 72 74 20 2d 55  Name } | sort -U
eea0: 6e 69 71 75 65 0d 0a 62 72 65 61 6b 3b 0d 0a 7d  nique..break;..}
eeb0: 0d 0a 69 66 20 28 20 22 43 61 74 65 67 6f 72 79  ..if ( "Category
eec0: 22 20 2d 6c 69 6b 65 20 24 5f 70 61 72 61 6d 20  " -like $_param 
eed0: 29 0d 0a 7b 0d 0a 22 41 6c 69 61 73 22 2c 20 22  )..{.."Alias", "
eee0: 43 6d 64 6c 65 74 22 2c 20 22 50 72 6f 76 69 64  Cmdlet", "Provid
eef0: 65 72 22 2c 20 22 47 65 6e 65 72 61 6c 22 2c 20  er", "General", 
ef00: 22 46 41 51 22 2c 0d 0a 22 47 6c 6f 73 73 61 72  "FAQ",.."Glossar
ef10: 79 22 2c 20 22 48 65 6c 70 46 69 6c 65 22 2c 20  y", "HelpFile", 
ef20: 22 41 6c 6c 22 20 2d 6c 69 6b 65 20 24 5f 6f 70  "All" -like $_op
ef30: 74 20 7c 20 73 6f 72 74 20 7c 20 25 20 7b 20 24  t | sort | % { $
ef40: 5f 62 61 73 65 20 2b 20 24 5f 20 7d 0d 0a 62 72  _base + $_ }..br
ef50: 65 61 6b 3b 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a 69 66  eak;..}..}....if
ef60: 20 28 20 22 47 65 74 2d 53 65 72 76 69 63 65 22   ( "Get-Service"
ef70: 2c 20 22 52 65 73 74 61 72 74 2d 53 65 72 76 69  , "Restart-Servi
ef80: 63 65 22 2c 20 22 52 65 73 75 6d 65 2d 53 65 72  ce", "Resume-Ser
ef90: 76 69 63 65 22 2c 0d 0a 22 53 74 61 72 74 2d 53  vice",.."Start-S
efa0: 65 72 76 69 63 65 22 2c 20 22 53 74 6f 70 2d 53  ervice", "Stop-S
efb0: 65 72 76 69 63 65 22 2c 20 22 53 75 73 70 65 6e  ervice", "Suspen
efc0: 64 2d 53 65 72 76 69 63 65 22 20 60 0d 0a 2d 63  d-Service" `..-c
efd0: 6f 6e 74 61 69 6e 73 20 24 5f 63 6d 64 6c 65 74  ontains $_cmdlet
efe0: 2e 4e 61 6d 65 20 29 0d 0a 7b 0d 0a 69 66 20 28  .Name )..{..if (
eff0: 20 22 4e 61 6d 65 22 20 2d 6c 69 6b 65 20 24 5f   "Name" -like $_
f000: 70 61 72 61 6d 20 29 0d 0a 7b 0d 0a 47 65 74 2d  param )..{..Get-
f010: 53 65 72 76 69 63 65 20 2d 4e 61 6d 65 20 24 5f  Service -Name $_
f020: 6f 70 74 20 7c 20 73 6f 72 74 20 4e 61 6d 65 20  opt | sort Name 
f030: 20 7c 20 25 20 7b 20 24 5f 62 61 73 65 20 2b 20   | % { $_base + 
f040: 28 24 5f 2e 4e 61 6d 65 20 2d 72 65 70 6c 61 63  ($_.Name -replac
f050: 65 20 27 5c 73 27 2c 27 60 20 27 29 20 7d 0d 0a  e '\s','` ') }..
f060: 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 69 66 20 28 20  break;..}..if ( 
f070: 22 44 69 73 70 6c 61 79 4e 61 6d 65 22 20 2d 6c  "DisplayName" -l
f080: 69 6b 65 20 24 5f 70 61 72 61 6d 20 29 0d 0a 7b  ike $_param )..{
f090: 0d 0a 47 65 74 2d 53 65 72 76 69 63 65 20 2d 4e  ..Get-Service -N
f0a0: 61 6d 65 20 24 5f 6f 70 74 20 7c 20 73 6f 72 74  ame $_opt | sort
f0b0: 20 44 69 73 70 6c 61 79 4e 61 6d 65 20 7c 20 25   DisplayName | %
f0c0: 20 7b 20 24 5f 62 61 73 65 20 2b 20 28 24 5f 2e   { $_base + ($_.
f0d0: 44 69 73 70 6c 61 79 4e 61 6d 65 20 2d 72 65 70  DisplayName -rep
f0e0: 6c 61 63 65 20 27 5c 73 27 2c 27 60 20 27 29 20  lace '\s','` ') 
f0f0: 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 7d 0d  }..break;..}..}.
f100: 0a 0d 0a 69 66 20 28 20 22 4e 65 77 2d 53 65 72  ...if ( "New-Ser
f110: 76 69 63 65 22 20 2d 65 71 20 24 5f 63 6d 64 6c  vice" -eq $_cmdl
f120: 65 74 2e 4e 61 6d 65 20 2d 61 6e 64 20 22 64 65  et.Name -and "de
f130: 70 65 6e 64 73 4f 6e 22 20 2d 6c 69 6b 65 20 24  pendsOn" -like $
f140: 5f 70 61 72 61 6d 20 29 0d 0a 7b 0d 0a 47 65 74  _param )..{..Get
f150: 2d 53 65 72 76 69 63 65 20 2d 4e 61 6d 65 20 24  -Service -Name $
f160: 5f 6f 70 74 20 7c 20 73 6f 72 74 20 4e 61 6d 65  _opt | sort Name
f170: 20 7c 20 25 20 7b 20 24 5f 62 61 73 65 20 2b 20   | % { $_base + 
f180: 28 24 5f 2e 4e 61 6d 65 20 2d 72 65 70 6c 61 63  ($_.Name -replac
f190: 65 20 27 5c 73 27 2c 27 60 20 27 29 20 7d 0d 0a  e '\s','` ') }..
f1a0: 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20  break;..}....if 
f1b0: 28 20 22 47 65 74 2d 45 76 65 6e 74 4c 6f 67 22  ( "Get-EventLog"
f1c0: 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 2e 4e 61   -eq $_cmdlet.Na
f1d0: 6d 65 20 2d 61 6e 64 20 22 45 6e 74 72 79 54 79  me -and "EntryTy
f1e0: 70 65 22 20 2d 6c 69 6b 65 20 24 5f 70 61 72 61  pe" -like $_para
f1f0: 6d 20 29 0d 0a 7b 0d 0a 22 45 72 72 6f 72 22 2c  m )..{.."Error",
f200: 20 22 49 6e 66 6f 72 6d 61 74 69 6f 6e 22 2c 20   "Information", 
f210: 22 46 61 69 6c 75 72 65 41 75 64 69 74 22 2c 20  "FailureAudit", 
f220: 22 53 75 63 63 65 73 73 41 75 64 69 74 22 2c 20  "SuccessAudit", 
f230: 22 57 61 72 6e 69 6e 67 22 20 2d 6c 69 6b 65 20  "Warning" -like 
f240: 24 5f 6f 70 74 20 7c 20 73 6f 72 74 20 7c 20 25  $_opt | sort | %
f250: 20 7b 20 24 5f 62 61 73 65 20 2b 20 24 5f 20 7d   { $_base + $_ }
f260: 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69  ..break;..}....i
f270: 66 20 28 20 22 47 65 74 2d 43 6f 6d 6d 61 6e 64  f ( "Get-Command
f280: 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 2e 4e  " -eq $_cmdlet.N
f290: 61 6d 65 20 2d 61 6e 64 20 22 4e 61 6d 65 22 20  ame -and "Name" 
f2a0: 2d 6c 69 6b 65 20 24 5f 70 61 72 61 6d 20 29 0d  -like $_param ).
f2b0: 0a 7b 0d 0a 47 65 74 2d 43 6f 6d 6d 61 6e 64 20  .{..Get-Command 
f2c0: 2d 43 6f 6d 6d 61 6e 64 54 79 70 65 20 41 6c 6c  -CommandType All
f2d0: 20 2d 4e 61 6d 65 20 24 5f 6f 70 74 20 7c 20 25   -Name $_opt | %
f2e0: 20 7b 20 24 5f 62 61 73 65 20 2b 20 28 24 5f 2e   { $_base + ($_.
f2f0: 4e 61 6d 65 20 2d 72 65 70 6c 61 63 65 20 27 5c  Name -replace '\
f300: 73 27 2c 27 60 20 27 29 20 7d 0d 0a 62 72 65 61  s','` ') }..brea
f310: 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20 28 20 24 5f  k;..}....if ( $_
f320: 63 6d 64 6c 65 74 2e 4e 6f 75 6e 20 2d 6c 69 6b  cmdlet.Noun -lik
f330: 65 20 22 2a 57 4d 49 2a 22 20 29 0d 0a 7b 0d 0a  e "*WMI*" )..{..
f340: 69 66 20 28 20 22 43 6c 61 73 73 22 20 2d 6c 69  if ( "Class" -li
f350: 6b 65 20 24 5f 70 61 72 61 6d 20 29 0d 0a 7b 0d  ke $_param )..{.
f360: 0a 57 72 69 74 65 2d 43 6c 61 73 73 4e 61 6d 65  .Write-ClassName
f370: 73 20 24 5f 57 4d 49 43 6c 61 73 73 65 73 20 28  s $_WMIClasses (
f380: 24 5f 6f 70 74 2e 53 70 6c 69 74 28 22 5f 22 29  $_opt.Split("_")
f390: 2e 43 6f 75 6e 74 2d 31 29 20 2d 73 65 70 20 27  .Count-1) -sep '
f3a0: 5f 27 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 7d  _'..break;..}..}
f3b0: 0d 0a 0d 0a 69 66 20 28 20 22 46 6f 72 6d 61 74  ....if ( "Format
f3c0: 2d 4c 69 73 74 22 2c 20 22 46 6f 72 6d 61 74 2d  -List", "Format-
f3d0: 43 75 73 74 6f 6d 22 2c 20 22 46 6f 72 6d 61 74  Custom", "Format
f3e0: 2d 54 61 62 6c 65 22 2c 20 22 46 6f 72 6d 61 74  -Table", "Format
f3f0: 2d 57 69 64 65 22 2c 20 22 43 6f 6d 70 61 72 65  -Wide", "Compare
f400: 2d 4f 62 6a 65 63 74 22 2c 0d 0a 22 43 6f 6e 76  -Object",.."Conv
f410: 65 72 74 54 6f 2d 48 74 6d 6c 22 2c 20 22 4d 65  ertTo-Html", "Me
f420: 61 73 75 72 65 2d 4f 62 6a 65 63 74 22 2c 20 22  asure-Object", "
f430: 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74 22 2c 20  Select-Object", 
f440: 22 47 72 6f 75 70 2d 4f 62 6a 65 63 74 22 2c 20  "Group-Object", 
f450: 22 53 6f 72 74 2d 4f 62 6a 65 63 74 22 20 60 0d  "Sort-Object" `.
f460: 0a 2d 63 6f 6e 74 61 69 6e 73 20 24 5f 63 6d 64  .-contains $_cmd
f470: 6c 65 74 2e 4e 61 6d 65 20 2d 61 6e 64 20 22 50  let.Name -and "P
f480: 72 6f 70 65 72 74 79 22 20 2d 6c 69 6b 65 20 24  roperty" -like $
f490: 5f 70 61 72 61 6d 20 29 0d 0a 7b 0d 0a 47 65 74  _param )..{..Get
f4a0: 2d 50 69 70 65 4c 69 6e 65 4f 62 6a 65 63 74 0d  -PipeLineObject.
f4b0: 0a 24 5f 64 75 6d 6d 79 20 7c 20 47 65 74 2d 4d  .$_dummy | Get-M
f4c0: 65 6d 62 65 72 20 2d 4e 61 6d 65 20 24 5f 6f 70  ember -Name $_op
f4d0: 74 20 2d 4d 65 6d 62 65 72 54 79 70 65 20 50 72  t -MemberType Pr
f4e0: 6f 70 65 72 74 69 65 73 2c 50 61 72 61 6d 65 74  operties,Paramet
f4f0: 65 72 69 7a 65 64 50 72 6f 70 65 72 74 79 20 7c  erizedProperty |
f500: 20 73 6f 72 74 20 6d 65 6d 62 65 72 74 79 70 65   sort membertype
f510: 20 7c 20 25 20 7b 20 24 5f 62 61 73 65 20 2b 20   | % { $_base + 
f520: 28 24 5f 2e 4e 61 6d 65 20 2d 72 65 70 6c 61 63  ($_.Name -replac
f530: 65 20 27 5c 73 27 2c 27 60 20 27 29 20 7d 0d 0a  e '\s','` ') }..
f540: 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 0d 0a 69 66 20  break;..}....if 
f550: 28 20 22 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74  ( "Select-Object
f560: 22 20 2d 65 71 20 24 5f 63 6d 64 6c 65 74 2e 4e  " -eq $_cmdlet.N
f570: 61 6d 65 20 29 0d 0a 7b 0d 0a 69 66 20 28 20 22  ame )..{..if ( "
f580: 45 78 63 6c 75 64 65 50 72 6f 70 65 72 74 79 22  ExcludeProperty"
f590: 20 2d 6c 69 6b 65 20 24 5f 70 61 72 61 6d 20 29   -like $_param )
f5a0: 0d 0a 7b 0d 0a 47 65 74 2d 50 69 70 65 4c 69 6e  ..{..Get-PipeLin
f5b0: 65 4f 62 6a 65 63 74 0d 0a 24 5f 64 75 6d 6d 79  eObject..$_dummy
f5c0: 20 7c 20 47 65 74 2d 4d 65 6d 62 65 72 20 2d 4e   | Get-Member -N
f5d0: 61 6d 65 20 24 5f 6f 70 74 20 2d 4d 65 6d 62 65  ame $_opt -Membe
f5e0: 72 54 79 70 65 20 50 72 6f 70 65 72 74 69 65 73  rType Properties
f5f0: 2c 50 61 72 61 6d 65 74 65 72 69 7a 65 64 50 72  ,ParameterizedPr
f600: 6f 70 65 72 74 79 20 7c 20 73 6f 72 74 20 6d 65  operty | sort me
f610: 6d 62 65 72 74 79 70 65 20 7c 20 25 20 7b 20 24  mbertype | % { $
f620: 5f 62 61 73 65 20 2b 20 28 24 5f 2e 4e 61 6d 65  _base + ($_.Name
f630: 20 2d 72 65 70 6c 61 63 65 20 27 5c 73 27 2c 27   -replace '\s','
f640: 60 20 27 29 20 7d 0d 0a 62 72 65 61 6b 3b 0d 0a  ` ') }..break;..
f650: 7d 0d 0a 0d 0a 69 66 20 28 20 22 45 78 70 61 6e  }....if ( "Expan
f660: 64 50 72 6f 70 65 72 74 79 22 20 2d 6c 69 6b 65  dProperty" -like
f670: 20 24 5f 70 61 72 61 6d 20 29 0d 0a 7b 0d 0a 47   $_param )..{..G
f680: 65 74 2d 50 69 70 65 4c 69 6e 65 4f 62 6a 65 63  et-PipeLineObjec
f690: 74 0d 0a 24 5f 64 75 6d 6d 79 20 7c 20 47 65 74  t..$_dummy | Get
f6a0: 2d 4d 65 6d 62 65 72 20 2d 4e 61 6d 65 20 24 5f  -Member -Name $_
f6b0: 6f 70 74 20 2d 4d 65 6d 62 65 72 54 79 70 65 20  opt -MemberType 
f6c0: 50 72 6f 70 65 72 74 69 65 73 2c 50 61 72 61 6d  Properties,Param
f6d0: 65 74 65 72 69 7a 65 64 50 72 6f 70 65 72 74 79  eterizedProperty
f6e0: 20 7c 20 73 6f 72 74 20 6d 65 6d 62 65 72 74 79   | sort memberty
f6f0: 70 65 20 7c 20 25 20 7b 20 24 5f 2e 4e 61 6d 65  pe | % { $_.Name
f700: 20 7d 0d 0a 62 72 65 61 6b 3b 0d 0a 7d 0d 0a 7d   }..break;..}..}
f710: 0d 0a 0d 0a 73 65 6c 65 63 74 20 2d 49 6e 70 75  ....select -Inpu
f720: 74 4f 62 6a 65 63 74 20 24 5f 63 6d 64 6c 65 74  tObject $_cmdlet
f730: 20 2d 45 78 70 61 6e 64 50 72 6f 70 65 72 74 79   -ExpandProperty
f740: 20 50 61 72 61 6d 65 74 65 72 53 65 74 73 20 7c   ParameterSets |
f750: 20 73 65 6c 65 63 74 20 2d 45 78 70 61 6e 64 50   select -ExpandP
f760: 72 6f 70 65 72 74 79 20 50 61 72 61 6d 65 74 65  roperty Paramete
f770: 72 73 20 7c 0d 0a 3f 20 7b 20 24 5f 2e 4e 61 6d  rs |..? { $_.Nam
f780: 65 20 2d 6c 69 6b 65 20 24 5f 70 61 72 61 6d 20  e -like $_param 
f790: 7d 20 7c 20 3f 20 7b 20 24 5f 2e 50 61 72 61 6d  } | ? { $_.Param
f7a0: 65 74 65 72 54 79 70 65 2e 49 73 45 6e 75 6d 20  eterType.IsEnum 
f7b0: 7d 20 7c 0d 0a 25 20 7b 20 5b 45 6e 75 6d 5d 3a  } |..% { [Enum]:
f7c0: 3a 47 65 74 4e 61 6d 65 73 28 24 5f 2e 50 61 72  :GetNames($_.Par
f7d0: 61 6d 65 74 65 72 54 79 70 65 29 20 7d 20 7c 20  ameterType) } | 
f7e0: 3f 20 7b 20 24 5f 20 2d 6c 69 6b 65 20 24 5f 6f  ? { $_ -like $_o
f7f0: 70 74 20 7d 20 7c 20 73 6f 72 74 20 2d 55 6e 69  pt } | sort -Uni
f800: 71 75 65 20 7c 20 25 20 7b 20 24 5f 62 61 73 65  que | % { $_base
f810: 20 2b 20 24 5f 20 7d 0d 0a 0d 0a 7d 0d 0a 0d 0a   + $_ }....}....
f820: 69 66 20 28 24 5f 74 6f 6b 65 6e 73 29 0d 0a 7b  if ($_tokens)..{
f830: 0d 0a 24 5f 6c 61 73 74 54 6f 6b 65 6e 20 3d 20  ..$_lastToken = 
f840: 24 5f 74 6f 6b 65 6e 73 5b 24 5f 74 6f 6b 65 6e  $_tokens[$_token
f850: 73 2e 63 6f 75 6e 74 20 2d 20 31 5d 0d 0a 69 66  s.count - 1]..if
f860: 20 28 24 5f 6c 61 73 74 54 6f 6b 65 6e 2e 54 79   ($_lastToken.Ty
f870: 70 65 20 2d 65 71 20 27 43 6f 6d 6d 61 6e 64 27  pe -eq 'Command'
f880: 29 0d 0a 7b 0d 0a 24 5f 63 6d 64 20 3d 20 24 5f  )..{..$_cmd = $_
f890: 6c 61 73 74 54 6f 6b 65 6e 2e 43 6f 6e 74 65 6e  lastToken.Conten
f8a0: 74 0d 0a 0d 0a 23 20 64 6f 6e 27 74 20 6c 6f 6f  t....# don't loo
f8b0: 6b 20 66 6f 72 20 70 61 74 68 73 2e 2e 2e 0d 0a  k for paths.....
f8c0: 69 66 20 28 24 5f 63 6d 64 2e 49 6e 64 65 78 4f  if ($_cmd.IndexO
f8d0: 66 41 6e 79 28 27 2f 5c 27 29 20 2d 65 71 20 2d  fAny('/\') -eq -
f8e0: 31 29 0d 0a 7b 0d 0a 23 20 68 61 6e 64 6c 65 20  1)..{..# handle 
f8f0: 70 61 72 73 69 6e 67 20 65 72 72 6f 72 73 20 2d  parsing errors -
f900: 20 74 68 65 20 6c 61 73 74 20 74 6f 6b 65 6e 20   the last token 
f910: 73 74 72 69 6e 67 20 73 68 6f 75 6c 64 20 62 65  string should be
f920: 20 74 68 65 20 6c 61 73 74 0d 0a 23 20 73 74 72   the last..# str
f930: 69 6e 67 20 69 6e 20 74 68 65 20 6c 69 6e 65 2e  ing in the line.
f940: 2e 2e 0d 0a 69 66 20 28 24 6c 61 73 74 77 6f 72  ....if ($lastwor
f950: 64 2e 73 75 62 73 74 72 69 6e 67 28 24 6c 61 73  d.substring($las
f960: 74 77 6f 72 64 2e 6c 65 6e 67 74 68 2d 24 5f 63  tword.length-$_c
f970: 6d 64 2e 6c 65 6e 67 74 68 29 20 2d 65 71 20 24  md.length) -eq $
f980: 5f 63 6d 64 29 0d 0a 7b 0d 0a 24 5f 70 61 74 20  _cmd)..{..$_pat 
f990: 3d 20 24 5f 63 6d 64 20 2b 20 27 2a 27 0d 0a 24  = $_cmd + '*'..$
f9a0: 5f 62 61 73 65 20 3d 20 24 6c 61 73 74 77 6f 72  _base = $lastwor
f9b0: 64 2e 73 75 62 73 74 72 69 6e 67 28 30 2c 20 24  d.substring(0, $
f9c0: 6c 61 73 74 77 6f 72 64 2e 6c 65 6e 67 74 68 2d  lastword.length-
f9d0: 24 5f 63 6d 64 2e 6c 65 6e 67 74 68 29 0d 0a 22  $_cmd.length).."
f9e0: 62 65 67 69 6e 20 7b 22 2c 20 22 62 72 65 61 6b  begin {", "break
f9f0: 22 2c 20 22 63 61 74 63 68 20 7b 22 2c 20 22 63  ", "catch {", "c
fa00: 6f 6e 74 69 6e 75 65 22 2c 20 22 64 61 74 61 20  ontinue", "data 
fa10: 7b 22 2c 20 22 64 6f 20 7b 22 2c 20 22 64 79 6e  {", "do {", "dyn
fa20: 61 6d 69 63 70 61 72 61 6d 20 28 22 2c 20 22 65  amicparam (", "e
fa30: 6c 73 65 20 7b 22 2c 20 22 65 6c 73 65 69 66 20  lse {", "elseif 
fa40: 28 22 2c 0d 0a 22 65 6e 64 20 7b 22 2c 20 22 65  (",.."end {", "e
fa50: 78 69 74 22 2c 20 22 66 69 6c 74 65 72 20 22 2c  xit", "filter ",
fa60: 20 22 66 69 6e 61 6c 6c 79 20 7b 22 2c 20 22 66   "finally {", "f
fa70: 6f 72 20 28 22 2c 20 22 66 6f 72 65 61 63 68 20  or (", "foreach 
fa80: 22 2c 20 22 66 72 6f 6d 22 2c 20 22 66 75 6e 63  ", "from", "func
fa90: 74 69 6f 6e 20 22 2c 20 22 69 66 20 28 22 2c 20  tion ", "if (", 
faa0: 22 69 6e 20 22 2c 0d 0a 22 70 61 72 61 6d 20 28  "in ",.."param (
fab0: 22 2c 20 22 70 72 6f 63 65 73 73 20 7b 22 2c 20  ", "process {", 
fac0: 22 72 65 74 75 72 6e 22 2c 20 22 73 77 69 74 63  "return", "switc
fad0: 68 20 22 2c 20 22 74 68 72 6f 77 20 22 2c 20 22  h ", "throw ", "
fae0: 74 72 61 70 20 22 2c 20 22 74 72 79 20 7b 22 2c  trap ", "try {",
faf0: 20 22 75 6e 74 69 6c 20 28 22 2c 20 22 77 68 69   "until (", "whi
fb00: 6c 65 20 28 22 20 60 0d 0a 2d 6c 69 6b 65 20 24  le (" `..-like $
fb10: 5f 70 61 74 20 7c 20 25 20 20 7b 27 7b 30 7d 7b  _pat | %  {'{0}{
fb20: 31 7d 27 20 2d 66 20 24 5f 62 61 73 65 2c 24 5f  1}' -f $_base,$_
fb30: 20 7d 0d 0a 24 45 78 65 63 75 74 69 6f 6e 43 6f   }..$ExecutionCo
fb40: 6e 74 65 78 74 2e 49 6e 76 6f 6b 65 43 6f 6d 6d  ntext.InvokeComm
fb50: 61 6e 64 2e 47 65 74 43 6f 6d 6d 61 6e 64 4e 61  and.GetCommandNa
fb60: 6d 65 28 24 5f 70 61 74 2c 24 74 72 75 65 2c 20  me($_pat,$true, 
fb70: 24 66 61 6c 73 65 29 20 7c 0d 0a 53 6f 72 74 2d  $false) |..Sort-
fb80: 4f 62 6a 65 63 74 20 2d 55 6e 69 71 75 65 20 7c  Object -Unique |
fb90: 20 46 6f 72 45 61 63 68 2d 4f 62 6a 65 63 74 20   ForEach-Object 
fba0: 7b 27 7b 30 7d 7b 31 7d 27 20 2d 66 20 24 5f 62  {'{0}{1}' -f $_b
fbb0: 61 73 65 2c 24 5f 20 7d 0d 0a 7d 0d 0a 7d 0d 0a  ase,$_ }..}..}..
fbc0: 7d 0d 0a 7d 0d 0a 7d 0d 0a 7d 0d 0a 7d 0d 0a 7d  }..}..}..}..}..}
fbd0: 0d 0a                                            ..