# Invoke-BluGeniePSQuery

﻿

### Invoke-BluGeniePSQuery <a href="#invoke-blugeniepsquery" id="invoke-blugeniepsquery"></a>

### SYNOPSIS <a href="#synopsis" id="synopsis"></a>

Invoke-BluGeniePSQuery will sweep one or more IP addresses to determine if PowerShell 3 or higher is installed.

### SYNTAX <a href="#syntax" id="syntax"></a>

```
Invoke-BluGeniePSQuery [[-System] <String[]>] [[-Range] <String[]>] [[-PassThrough]] [[-PingTimeOut] <Int32>] [[-Force]] [[-JSONJob] <String>] [[-FilterType] <String>] [[-Pattern] <Object>] [[-Run]] [[-LogPath] 
<String>] [[-LogName] <String>] [[-Walkthrough]] [<CommonParameters>]
```

### DESCRIPTION <a href="#description" id="description"></a>

Invoke-BluGeniePSQuery will query system information over WMI for one or more IP addresses to determine if PowerShell 3 or higher is installed. A report is generated by default in the Transcripts directory called "PingReport\_D\_TG.CSV"

Captured Data fields Address - Remote IP Address ( 10.20.136.121 ) ComputerName - Remote Host Name ( win7sp1001 ) FQDN - Fully Qualified Domain Name ( WIN7SP1001.TestLab.Com ) FreePhysicalMemoryGB - Free Physical Memory Quote in GB ( .54 ) FreePhysicalMemoryMB - Free Physical Memory Quote in MB ( 558 ) Online - Online Status ( True or False ) OS - Operating System Name ( Microsoft Windows 7 Enterprise ) OSVersion - Operating Version ( 6.1.7601 ) Compliant - PowerShell Version 3 or Higher ( True ) PowerShellVer - Installed PowerShell Version ( 2.0 ) TotalPhysicalMemoryGB - Total Physical Memory Quote in GB ( 6 ) TotalPhysicalMemoryMB - Total Physical Memory Quote in MB ( 6291000 ) TotalVirtualMemorySizeGB - Total Virtual Memory Quote in GB ( 12 ) TotalVirtualMemorySizeMB - Total Virtual Memory Quote in MB ( 12285 )

### EXAMPLES <a href="#examples" id="examples"></a>

#### EXAMPLE 1 <a href="#example-1" id="example-1"></a>

```
Command: Invoke-BluGeniePSQuery -System 10.20.136.51
```

```
Description: Scan the ip address specified and pull System and PowerShell information if the computer is Online!
Notes: A report is generated by default in the Transcripts directory called "PingReport_D<DATE>_T<TIME>G<GUID>.CSV"
```

#### EXAMPLE 2 <a href="#example-2" id="example-2"></a>

```
Command: Invoke-BluGeniePSQuery -Range "10.20.136.50-10.20.136.100"
```

```
Description: Scan the ip address range specified and pull System and PowerShell information if the computer is Online!
Notes: A report is generated by default in the Transcripts directory called "PingReport_D<DATE>_T<TIME>G<GUID>.CSV"
```

#### EXAMPLE 3 <a href="#example-3" id="example-3"></a>

```
Command: Invoke-BluGeniePSQuery -System "10.20.136.1","10.20.136.2","10.20.136.3","10.20.136.4","10.20.136.5","10.20.136.10","10.20.136.11","10.20.136.50","10.20.136.51","10.20.136.52"
```

```
Description: Scan multiple ip addresses specified and pull System and PowerShell information if the computer is Online!
Notes: A report is generated by default in the Transcripts directory called "PingReport_D<DATE>_T<TIME>G<GUID>.CSV"
```

#### EXAMPLE 4 <a href="#example-4" id="example-4"></a>

```
Command: Invoke-BluGeniePSQuery -System 'TestPC001','TestPC002','TestPC003' -Force
```

```
Description: Scan the hosts and pull System and PowerShell information. Do not process an [ICMP / Ping] request prior to trying to connect.
Notes:
```

#### EXAMPLE 5 <a href="#example-5" id="example-5"></a>

```
Command: Invoke-BluGeniePSQuery -System 'TestPC001','TestPC002','TestPC003' -PassThrough
```

```
Description: Scan the hosts and updates the BluGenie Systems list with any remote computer that is PowerShell 3 or higher (Default Filter)
Notes:
```

#### EXAMPLE 6 <a href="#example-6" id="example-6"></a>

```
Command: Invoke-BluGeniePSQuery -Range "10.20.136.50-10.20.136.100" -PingTimeOut 5
```

```
Description: Scan the ip address range specified, and update the Ping Time Out to 5 ms.
Notes: This speeds up the process for systems that are not online.  The default value is 15 which is still very fast.
```

#### EXAMPLE 7 <a href="#example-7" id="example-7"></a>

```
\Job.JSON'
```

```
Description: Import settings from a JSON job file and Scan the specified systems from the JSON file and pull System and PowerShell information if the computer is Online!
Notes:
```

#### EXAMPLE 8 <a href="#example-8" id="example-8"></a>

```
\Job.JSON' -PassThrough
```

```
Description: Import settings from a JSON job file, Scan the specified systems from the JSON file, and update the BluGenie Systems list with any remote computer that is PowerShell 3 or higher
Notes: -FilterType is set to filter (Compliant) by default and -Pattern is set to (True) so only machines with PowerShell 3 or higher will be found.
```

#### EXAMPLE 9 <a href="#example-9" id="example-9"></a>

```
\Job.JSON' -PassThrough -FilterType OS -Patter 'Windows\s10'
```

```
Description: Import settings from a JSON job file, Scan the specified systems from the JSON file, and update the BluGenie Systems list with any remote computer that is (Windows 10)
Notes:
```

#### EXAMPLE 10 <a href="#example-10" id="example-10"></a>

```
\Job.JSON' -PassThrough -FilterType OS -Patter 'Windows\s10' -Run
```

```
Description: Import settings from a JSON job file, Scan the specified systems from the JSON file, update the BluGenie Systems list with any remote computer that is (Windows 10) and Run all remote commands on the updates computer list
Notes:
```

#### EXAMPLE 11 <a href="#example-11" id="example-11"></a>

```
\Job.JSON' -LogName 'BG_System_Query'
```

```
Description: Import settings from a JSON job file, Scan the specified systems from the JSON file, and save a report named (BG_System_Query.CSV and BG_System_Query.JSON) to the Current Transcript Directory
Notes:
```

#### EXAMPLE 12 <a href="#example-12" id="example-12"></a>

```
\Job.JSON' -LogName 'BG_System_Query' -LogPath 'C:\Temp'
```

```
Description: Import settings from a JSON job file, Scan the specified systems from the JSON file, and save a report named (BG_System_Query.CSV and BG_System_Query.JSON) to the Current Transcript Directory
Notes:
```

#### EXAMPLE 13 <a href="#example-13" id="example-13"></a>

```
Command: Invoke-BluGeniePSQuery -Help
```

```
Description: Call Help Information
Notes: If Help / WalkThrough is setup as a parameter, this script will be called to setup the Dynamic Help Menu if not the normal Get-Help will be called with the -Full parameter
```

#### EXAMPLE 14 <a href="#example-14" id="example-14"></a>

```
Command: Invoke-BluGeniePSQuery -WalkThrough
```

```
Description: Call Help Information [2]
Notes: If Help / WalkThrough is setup as a parameter, this script will be called to setup the Dynamic Help Menu if not the normal Get-Help will be called with the -Full parameter
```

### PARAMETERS <a href="#parameters" id="parameters"></a>

#### System <a href="#system" id="system"></a>

```
-System <String[]>
   Description: IP Address or Host name to Query
   Notes: System names can also be called from BluGenie's system list if the System parameter is not set.
   Alias:
   ValidateSet:
   
   Required?                    false
   Position?                    1
   Default value                $global:ConsoleSystems
   Accept pipeline input?       false
   Accept wildcard characters?  false
```

#### Range <a href="#range" id="range"></a>

```
-Range <String[]>
   Description: Range of IP Addresses to Query 
   Notes: Range information can also be called from BluGenie's range list if the Range parameter is not set.
   Alias:
   ValidateSet:
   
   Required?                    false
   Position?                    2
   Default value                $global:ConsoleRange
   Accept pipeline input?       false
   Accept wildcard characters?  false
```

#### PassThrough <a href="#passthrough" id="passthrough"></a>

```
-PassThrough [<SwitchParameter>]
   Description: Update the BGConsole System Array list with all systems that match the filtered information
   Notes:  
   Alias:
   ValidateSet:
   
   Required?                    false
   Position?                    3
   Default value                False
   Accept pipeline input?       false
   Accept wildcard characters?  false
```

#### PingTimeOut <a href="#pingtimeout" id="pingtimeout"></a>

```
-PingTimeOut <Int32>
   Description: [TTL] - Time to live ping setting 
   Notes: The default is 15ms 
   Alias:
   ValidateSet:
   
   Required?                    false
   Position?                    4
   Default value                15
   Accept pipeline input?       false
   Accept wildcard characters?  false
```

#### Force <a href="#force" id="force"></a>

```
-Force [<SwitchParameter>]
   Description: Force connect without trying to run an ICMP (Internet Control Message Protocol)
   Notes:  
   Alias:
   ValidateSet:
   
   Required?                    false
   Position?                    5
   Default value                False
   Accept pipeline input?       false
   Accept wildcard characters?  false
```

#### JSONJob <a href="#jsonjob" id="jsonjob"></a>

```
-JSONJob <String>
   Description: Use a JSON job file to import settings
   Notes:  
   Alias:
   ValidateSet:
   
   Required?                    false
   Position?                    6
   Default value                
   Accept pipeline input?       false
   Accept wildcard characters?  false
```

#### FilterType <a href="#filtertype" id="filtertype"></a>

```
-FilterType <String>
   Description:  Which property to filter by
   Notes:  
           Filter Option = Address                     - Remote IP Address                   ( 10.20.136.121 )
           Filter Option = ComputerName                - Remote Host Name                    ( win7sp1001 )
           Filter Option = FQDN                        - Fully Qualified Domain Name         ( WIN7SP1001.TestLab.Com )
           Filter Option = FreePhysicalMemoryGB        - Free Physical Memory Quote in GB    ( .54 )
           Filter Option = FreePhysicalMemoryMB        - Free Physical Memory Quote in MB    ( 558 )
           Filter Option = Online                      - Online Status                       ( True or False )
           Filter Option = OS                          - Operating System Name               ( Microsoft Windows 7 Enterprise )
           Filter Option = OSVersion                   - Operating Version                   ( 6.1.7601 )
           Filter Option = Compliant                 - PowerShell Version 3 or Higher      ( True or False ) **Default Search Field**
           Filter Option = PowerShellVer               - Installed PowerShell Version        ( 2.0 )
           Filter Option = TotalPhysicalMemoryGB       - Total Physical Memory Quote in GB   ( 6 )
           Filter Option = TotalPhysicalMemoryMB       - Total Physical Memory Quote in MB   ( 6291000 )
           Filter Option = TotalVirtualMemorySizeGB    - Total Virtual Memory Quote in GB    ( 12 )
           Filter Option = TotalVirtualMemorySizeMB    - Total Virtual Memory Quote in MB    ( 12285 )
   Alias:
   ValidateSet: 'Name','Address','ComputerName','FQDN','FreePhysicalMemoryGB','FreePhysicalMemoryMB','Online','OS','OSVersion','Compliant','PowerShellVer','TotalPhysicalMemoryGB','TotalPhysicalMemoryMB','TotalVir
   tualMemorySizeGB','TotalVirtualMemorySizeMB'
   
   Required?                    false
   Position?                    7
   Default value                Compliant
   Accept pipeline input?       false
   Accept wildcard characters?  false
```

#### Pattern <a href="#pattern" id="pattern"></a>

```
-Pattern <Object>
   Description: Search Pattern using RegEx
   Notes: Using -SearchHidden will convert the Pattern to RegEx Automatically but without the comma or the -SearchHidden the -Pattern is viewed as as a Command Console Search pattern.  You can use (*) wildcards. 
   Alias:
   ValidateSet:
   
   Required?                    false
   Position?                    8
   Default value                True
   Accept pipeline input?       false
   Accept wildcard characters?  false
```

#### Run <a href="#run" id="run"></a>

```
-Run [<SwitchParameter>]
   Description: Process any command(s) from the JSON Job file on any of the systems filtered by PSQuery.
   Notes: 
   Alias:
   ValidateSet:
   
   Required?                    false
   Position?                    9
   Default value                False
   Accept pipeline input?       false
   Accept wildcard characters?  false
```

#### LogPath <a href="#logpath" id="logpath"></a>

```
-LogPath <String>
   Description: Path to save the Log File
   Notes: Default is the ( $TranscriptsDir ) Transcript Directory
   Alias:
   ValidateSet:
   
   Required?                    false
   Position?                    10
   Default value                $TranscriptsDir
   Accept pipeline input?       false
   Accept wildcard characters?  false
```

#### LogName <a href="#logname" id="logname"></a>

```
-LogName <String>
   Description: Name of the Report(s)
   Notes: There are 2 reports that get generated (*.CSV, and *.JSON).  The default file name is ( PingReport_D<Current Date>_T<Current Time>G_<5 Digit UID> )
   Alias:
   ValidateSet:
   
   Required?                    false
   Position?                    11
   Default value                $($('PingReport_D{0}G_{1}' -f $(New-TimeStamp), $(New-UID -NumPerSet 5 -NumOfSets 1)) -replace '(\d)_(\d)','$1_T$2')
   Accept pipeline input?       false
   Accept wildcard characters?  false
```

#### Walkthrough <a href="#walkthrough" id="walkthrough"></a>

```
-Walkthrough [<SwitchParameter>]
   Description:  Start the dynamic help menu system to help walk through the current command and all of the parameters
   Notes:  
   Alias: Help
   ValidateSet:
   
   Required?                    false
   Position?                    12
   Default value                False
   Accept pipeline input?       false
   Accept wildcard characters?  false
```

#### CommonParameters <a href="#commonparameters" id="commonparameters"></a>

This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about\_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
