Powershell - PowerShell


Overview

The Powershell command is a powerful tool for executing PowerShell commands within another PowerShell session or script. It allows you to invoke cmdlets, functions, and scripts dynamically, providing flexibility and automation capabilities.

Syntax

Powershell [-Command] <script-block | script-file> [<arguments>]
Powershell [-File] <script-file> [<arguments>]
Powershell [-NoProfile]
Powershell [-NoLogo]
Powershell [-WindowStyle <WindowStyle>]

Options/Flags

  • -Command: Specifies a script block or inline script to execute.
  • -File: Executes a PowerShell script file.
  • -NoProfile: Prevents the execution of the user profile, loading only the default profile.
  • -NoLogo: Suppresses the display of the PowerShell logo and version information.
  • -WindowStyle: Specifies the window style for the PowerShell session:
    • Normal: Default console window.
    • Minimized: Starts PowerShell with the window minimized.
    • Maximized: Starts PowerShell with the window maximized.
    • Hidden: Creates a hidden PowerShell console window.

Examples

Execute a script block:

Powershell -Command { Get-Service | Where { $_.Status -eq "Running" } }

Execute a script file:

Powershell -File "C:\Scripts\Example.ps1"

Invoke a cmdlet with arguments:

Powershell -Command { Get-Process 'explorer.exe' | Stop-Process }

Run without loading user profile:

Powershell -NoProfile -Command { Get-Date }

Common Issues

  • Profiling Errors: If the -NoProfile option is not used, the user profile may interfere with the execution of the command.
  • Syntax Errors: Ensure the scripts or commands passed to Powershell are syntactically correct.
  • Execution Errors: Handle exceptions properly within the script or command block being executed.

Integration

Powershell can be integrated with other commands and tools in various ways:

  • Execute SQL Queries with Invoke-Sqlcmd: Powershell -Command { Invoke-Sqlcmd -ServerInstanceName 'ServerName' -Query 'SELECT * FROM MyTable' }
  • Automation with Scheduled Tasks: Use Powershell to execute recurring scripts or tasks using the Task Scheduler.
  • Web Automation with Selenium: Control web browsers using Powershell and the Selenium module, automating web interactions.
  • Invoke-Expression: Executes a string as a PowerShell expression.
  • Start-Process: Launches a new PowerShell process.
  • Invoke-Command: Executes commands on remote computers.