Method One
This is the method I've used for some time, though I think that the second method below might be the better solution as it uses native tools available in Windows, where this solution requires a third party tool.
Download Hidden Start
Once you have the utility, you can use it like this to hide a running PowerShell script:
%SystemDir%\Scripts\hstart.exe /NOCONSOLE /SILENT "POWERSHELL.EXE -FILE %SystemDir%\Scripts\MyScript.ps1"
Warning: Some security software suites will detect this tool as 'bad' so if you have problems with it, check you security software logs to see if the utility is being treated as malware.
Update: While writing this post I found the Hidden Start now requires a license for commercial use. I'm pretty sure this was a free tool in the past when I've downloaded it. This will rule it out for a lot of you I'm sure.
Method Two
This method uses a vbScript to call the PowerShell script as a hidden window. This is not sophisticated but does work. There are a number of ways to do this, but the following little script is quiet cute as you can reuse this code and just pass a new script to it on the command line. The scheduled task would run something like this:
cscript.exe %SystemDrive%\Scripts\RunPowerShellScriptHidden.vbs %SystemDrive%\Scripts\MyScript.ps1
' ---------------------------------------------------------------------- ' ' Purpose: Prompts end user to contact the Service Desk and opens IE to the ' Service Desk home page ' ' Usage : cscript.exe RunPowerShellScriptHidden.vbs mypath\myscript.ps1 ' ' Version 1.0 ' ' Maintenance History ' ---------------------------------------------------------------------- ' Version - Date - Change - Author ' ---------------------------------------------------------------------- ' 1.0 25/06/12 Script Created justanothertechnicalblog ' ' Option Explicit 'Variables Dim oShell, ScriptName, appCmd ' Read target script path from command line argument or echo usage details if arguments are wrong If WScript.Arguments.Count = 1 Then ScriptName = WScript.Arguments.Item(0) Else Wscript.Echo "Usage: RunPowerShellScriptHidden path\powershellscript" Wscript.Quit End If 'Create objects Set oShell = CreateObject("WScript.Shell") ' Build the command line appCmd = "PowerShell.exe -file " + ScriptName 'Run the PowerShell script now oShell.Run appCmd, 0, false
No comments:
Post a Comment