PoshCode Archive  Hex Artifact Content

Artifact d1f61a7fda084174c2ce8f52403b8453b45ee1fa1f3e4ae3d2704e95f73db166:

  • File Select-Alive.ps1 — part of check-in [754425eacf] at 2018-06-10 14:06:45 on branch trunk — Selects only objects containing a hostname that is pingable. (user: dragonmc77 size: 1403)

0000: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 61 73 63 69  # encoding: asci
0010: 69 0d 0a 23 20 61 70 69 3a 20 70 6f 77 65 72 73  i..# api: powers
0020: 68 65 6c 6c 0d 0a 23 20 74 69 74 6c 65 3a 20 53  hell..# title: S
0030: 65 6c 65 63 74 2d 41 6c 69 76 65 0d 0a 23 20 64  elect-Alive..# d
0040: 65 73 63 72 69 70 74 69 6f 6e 3a 20 53 65 6c 65  escription: Sele
0050: 63 74 73 20 6f 6e 6c 79 20 6f 62 6a 65 63 74 73  cts only objects
0060: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 68 6f   containing a ho
0070: 73 74 6e 61 6d 65 20 74 68 61 74 20 69 73 20 70  stname that is p
0080: 69 6e 67 61 62 6c 65 2e 0d 0a 23 20 76 65 72 73  ingable...# vers
0090: 69 6f 6e 3a 20 30 2e 31 0d 0a 23 20 74 79 70 65  ion: 0.1..# type
00a0: 3a 20 66 75 6e 63 74 69 6f 6e 0d 0a 23 20 61 75  : function..# au
00b0: 74 68 6f 72 3a 20 64 72 61 67 6f 6e 6d 63 37 37  thor: dragonmc77
00c0: 0d 0a 23 20 6c 69 63 65 6e 73 65 3a 20 43 43 30  ..# license: CC0
00d0: 0d 0a 23 20 66 75 6e 63 74 69 6f 6e 3a 20 53 65  ..# function: Se
00e0: 6c 65 63 74 2d 41 6c 69 76 65 0d 0a 23 20 78 2d  lect-Alive..# x-
00f0: 70 6f 73 68 63 6f 64 65 2d 69 64 3a 20 36 30 34  poshcode-id: 604
0100: 0d 0a 23 20 78 2d 61 72 63 68 69 76 65 64 3a 20  ..# x-archived: 
0110: 32 30 31 34 2d 30 38 2d 30 31 54 32 30 3a 34 34  2014-08-01T20:44
0120: 3a 32 36 0d 0a 23 20 78 2d 70 75 62 6c 69 73 68  :26..# x-publish
0130: 65 64 3a 20 32 30 30 39 2d 30 39 2d 32 35 54 31  ed: 2009-09-25T1
0140: 33 3a 35 31 3a 30 30 0d 0a 23 0d 0a 23 0d 0a 23  3:51:00..#..#..#
0150: 23 20 74 68 69 73 20 66 69 6c 65 72 20 70 61 73  # this filer pas
0160: 73 65 73 20 74 68 72 6f 75 67 68 20 6f 6e 6c 79  ses through only
0170: 20 6f 62 6a 65 63 74 73 20 74 68 61 74 20 61 72   objects that ar
0180: 65 20 70 69 6e 67 61 62 6c 65 0d 0a 23 23 20 69  e pingable..## i
0190: 74 20 74 61 6b 65 73 20 61 6e 79 20 6f 62 6a 65  t takes any obje
01a0: 63 74 20 61 73 20 69 6e 70 75 74 2c 20 62 75 74  ct as input, but
01b0: 20 74 68 65 20 70 72 6f 70 65 72 74 79 20 63 6f   the property co
01c0: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 68 6f 73  ntaining the hos
01d0: 74 6e 61 6d 65 0d 0a 23 23 20 74 6f 20 70 69 6e  tname..## to pin
01e0: 67 20 6d 75 73 74 20 62 65 20 73 70 65 63 69 66  g must be specif
01f0: 69 65 64 20 69 66 20 74 68 65 20 6f 62 6a 65 63  ied if the objec
0200: 74 20 69 73 20 6e 6f 74 20 61 20 73 74 72 69 6e  t is not a strin
0210: 67 0d 0a 66 75 6e 63 74 69 6f 6e 20 53 65 6c 65  g..function Sele
0220: 63 74 2d 41 6c 69 76 65 20 7b 70 61 72 61 6d 28  ct-Alive {param(
0230: 09 5b 6f 62 6a 65 63 74 5d 24 49 6e 70 75 74 4f  .[object]$InputO
0240: 62 6a 65 63 74 2c 0d 0a 09 09 09 09 5b 73 74 72  bject,......[str
0250: 69 6e 67 5d 24 50 72 6f 70 65 72 74 79 2c 0d 0a  ing]$Property,..
0260: 09 09 09 09 5b 69 6e 74 33 32 5d 24 52 65 71 75  ....[int32]$Requ
0270: 65 73 74 73 20 3d 20 33 2c 0d 0a 09 09 09 09 5b  ests = 3,......[
0280: 73 77 69 74 63 68 5d 24 56 65 72 62 6f 73 65 29  switch]$Verbose)
0290: 0d 0a 0d 0a 09 50 52 4f 43 45 53 53 20 7b 0d 0a  .....PROCESS {..
02a0: 09 09 69 66 20 28 24 49 6e 70 75 74 4f 62 6a 65  ..if ($InputObje
02b0: 63 74 20 2d 65 71 20 24 6e 75 6c 6c 29 20 7b 24  ct -eq $null) {$
02c0: 49 6e 20 3d 20 24 5f 7d 20 65 6c 73 65 20 7b 24  In = $_} else {$
02d0: 49 6e 20 3d 20 24 49 6e 70 75 74 4f 62 6a 65 63  In = $InputObjec
02e0: 74 7d 0d 0a 09 09 69 66 20 28 24 49 6e 2e 47 65  t}....if ($In.Ge
02f0: 74 54 79 70 65 28 29 2e 4e 61 6d 65 20 2d 65 71  tType().Name -eq
0300: 20 22 53 74 72 69 6e 67 22 29 20 7b 0d 0a 09 09   "String") {....
0310: 09 24 48 6f 73 74 4e 61 6d 65 20 3d 20 24 49 6e  .$HostName = $In
0320: 0d 0a 09 09 7d 20 0d 0a 09 09 65 6c 73 65 69 66  ....} ....elseif
0330: 20 28 28 24 49 6e 20 7c 20 47 65 74 2d 4d 65 6d   (($In | Get-Mem
0340: 62 65 72 20 7c 20 57 68 65 72 65 2d 4f 62 6a 65  ber | Where-Obje
0350: 63 74 20 7b 24 49 6e 2e 4e 61 6d 65 20 2d 65 71  ct {$In.Name -eq
0360: 20 24 50 72 6f 70 65 72 74 79 7d 29 20 2d 6e 65   $Property}) -ne
0370: 20 24 6e 75 6c 6c 29 20 7b 0d 0a 09 09 09 24 48   $null) {.....$H
0380: 6f 73 74 4e 61 6d 65 20 3d 20 24 49 6e 2e 24 50  ostName = $In.$P
0390: 72 6f 70 65 72 74 79 0d 0a 09 09 7d 20 65 6c 73  roperty....} els
03a0: 65 20 7b 72 65 74 75 72 6e 20 24 6e 75 6c 6c 7d  e {return $null}
03b0: 0d 0a 09 09 0d 0a 09 09 69 66 20 28 24 56 65 72  ........if ($Ver
03c0: 62 6f 73 65 29 20 7b 57 72 69 74 65 2d 48 6f 73  bose) {Write-Hos
03d0: 74 20 22 50 69 6e 67 69 6e 67 20 24 48 6f 73 74  t "Pinging $Host
03e0: 4e 61 6d 65 2e 2e 2e 22 20 2d 4e 6f 4e 65 77 6c  Name..." -NoNewl
03f0: 69 6e 65 7d 0d 0a 09 09 66 6f 72 20 28 24 69 20  ine}....for ($i 
0400: 3d 20 31 3b 20 24 69 20 2d 6c 65 20 24 52 65 71  = 1; $i -le $Req
0410: 75 65 73 74 73 3b 20 24 69 2b 2b 29 20 7b 0d 0a  uests; $i++) {..
0420: 09 09 09 24 52 65 73 75 6c 74 20 3d 20 47 65 74  ...$Result = Get
0430: 2d 57 6d 69 4f 62 6a 65 63 74 20 2d 43 6c 61 73  -WmiObject -Clas
0440: 73 20 57 69 6e 33 32 5f 50 69 6e 67 53 74 61 74  s Win32_PingStat
0450: 75 73 20 2d 43 6f 6d 70 75 74 65 72 4e 61 6d 65  us -ComputerName
0460: 20 2e 20 2d 46 69 6c 74 65 72 20 22 41 64 64 72   . -Filter "Addr
0470: 65 73 73 3d 27 24 48 6f 73 74 4e 61 6d 65 27 22  ess='$HostName'"
0480: 0d 0a 09 09 09 53 74 61 72 74 2d 53 6c 65 65 70  .....Start-Sleep
0490: 20 2d 53 65 63 6f 6e 64 73 20 31 0d 0a 09 09 09   -Seconds 1.....
04a0: 69 66 20 28 24 52 65 73 75 6c 74 2e 53 74 61 74  if ($Result.Stat
04b0: 75 73 43 6f 64 65 20 2d 6e 65 20 30 29 20 7b 0d  usCode -ne 0) {.
04c0: 0a 09 09 09 09 69 66 20 28 24 56 65 72 62 6f 73  .....if ($Verbos
04d0: 65 29 20 7b 57 72 69 74 65 2d 48 6f 73 74 20 22  e) {Write-Host "
04e0: 4e 6f 20 72 65 73 70 6f 6e 73 65 2e 22 20 2d 46  No response." -F
04f0: 6f 72 65 67 72 6f 75 6e 64 43 6f 6c 6f 72 20 22  oregroundColor "
0500: 52 65 64 22 7d 0d 0a 09 09 09 09 72 65 74 75 72  Red"}......retur
0510: 6e 20 24 6e 75 6c 6c 0d 0a 09 09 09 7d 0d 0a 09  n $null.....}...
0520: 09 7d 0d 0a 09 09 69 66 20 28 24 56 65 72 62 6f  .}....if ($Verbo
0530: 73 65 29 20 7b 57 72 69 74 65 2d 48 6f 73 74 20  se) {Write-Host 
0540: 22 53 75 63 63 65 73 73 2e 22 20 2d 46 6f 72 65  "Success." -Fore
0550: 67 72 6f 75 6e 64 43 6f 6c 6f 72 20 22 47 72 65  groundColor "Gre
0560: 65 6e 22 7d 0d 0a 09 09 72 65 74 75 72 6e 20 24  en"}....return $
0570: 49 6e 0d 0a 09 7d 0d 0a 7d 0d 0a                 In...}..}..