Run PowerShell Scripts Silently

In this blog we provide a solution that enables administrators to run PowerShell scripts silently.

Many of us have tried to launch Powershell.exe silently with the following parameter:

Powershell.exe -WindowStyle Hidden...

But we still see a flash of the blue PowerShell console, even if for a split second.  Unfortunately since PowerShell is console-based, there is no native way around this.  The only other, relatively simple solution, is to use VBScript to launch it.  And I discovered a very handy script over at StackOverflow:

On Error Resume Next

ReDim args(WScript.Arguments.Count-1)

For i = 0 To WScript.Arguments.Count-1
    If InStr(WScript.Arguments(i), " ") > 0 Then
        args(i) = Chr(34) & WScript.Arguments(i) & Chr(34)
    Else
        args(i) = WScript.Arguments(i)
        End If
Next

CreateObject("WScript.Shell").Run Join(args, " "), 0, False

Which you can launch like so:

WScript.exe /b "\\path\to\silent.vbs" powershell.exe -ExecutionPolicy ByPass -file "\\path\to\powershell.ps1"

or another example:

wscript.exe /b "\\path\to\silent.vbs" powershell.exe -ExecutionPolicy Bypass -Command "New-Item 'HKLM:\SOFTWARE\Test' -Force"