PowerShell Shell.Application To:Launch Windows Explorer

Scripting COM Shell Objects – Launch Windows Explorer

On this page I will show you how to create a COM object, which opens and then manipulates Windows Explorer.  ComObject, or plain COM, is a key PowerShell command that performs many of the jobs previously undertaken by VBScript.  For our task, we are going to persuade PowerShell to create a Shell.Application; from there we will manipulate the Explorer programmatically.

Topics for PowerShell’s Shell.Application


PowerShell’s New-Object -Com

All COM objects are created through the command: New-Object -COM.  There are dozens of options and possibilities for New-Object -COM, for our purpose we specifically need a Shell.Application type of object.  Let me take you step-by-step through the method.

1) Assuming You Have Installed PowerShell

Using the ISE (GUI) or the PowerShell command line issue these commands:

2) Create the object (Shell.Application)
The first step is to create an object and assign it to a variable, for example:

# PowerShell Shell.Application
$ShellExp = New-Object -ComObject Shell.Application

3) Let us put the object to work and open the Windows Explorer at the C:\

# ShellOpen.ps1 Opening Explorer using PowerShell
$ShellExp = New-Object -ComObject Shell.Application

Learning Points

When I first experimented with this command I tried $ShellExp.open without the brackets – wrong.  Then I tried $ShellExp.Open() – no good.  Finally I remembered that the parenthesis style of brackets needs to enclose a value, $ShellExp.Open("C:\").  Eureka, success, the Windows Explorer launched anchored at the C:\.

Guy Recommends: Free WMI Monitor for PowerShellSolarwinds Free WMI Monitor for PowerShell

Windows Management Instrumentation (WMI) is one of the hidden treasures of Microsoft’s operating systems.  Fortunately, SolarWinds have created a Free WMI Monitor so that you can discover these gems of performance information, and thus improve your PowerShell scripts.

Take the guess work out of which WMI counters to use when scripting the operating system, Active Directory, or Exchange Server. Give this WMI monitor a try – it’s free.

Download your free copy of WMI Monitor

PowerShell Script Manipulating the Windows Explorer

The idea behind a second version of opening the Windows Explorer is to give you perspective.  By changing a few items, I hope that it gives you extra understanding, also more ideas for your own situation.  In the example below I have introduced a variable $Drive to hold the value for the folder, which you want explorer to view.  Note also how I have changed .open("D:") to .explore("C:\windows").  For this script to work, you need to have a \windows folder on your c: drive, fortunately, this is the default location for this system folder.

# ShellExplore.ps1
# Opening Explorer using PowerShell
# Author Guy Thomas https://computerperformance.co.uk/
# Version 2.5 – November 2013
# Sets the Drive
$Drive = "C:\windows"
# Launches the Explorer
$ShellExp = New-Object -ComObject Shell.Application

Research Shell.Application Methods and Properties

Let us investigate the methods and properties available to our shell object with Get-Member

# PowerShell Shell.Application properties
$ShellExp = New-Object -ComObject Shell.Application
$ShellExp | Get-Member

In particular, lookout for the methods: ‘Open’ and ‘Explore’, because these are the methods that we are going to apply to our object.


Name MemberType
——————- ———-
AddToRecent Method
BrowseForFolder Method
CanStartStopService Method
CascadeWindows Method
ControlPanelItem Method
EjectPC Method
Explore Method
ExplorerPolicy Method
FileRun Method
FindComputer Method
FindFiles Method
FindPrinter Method
GetSetting Method
GetSystemInformation Method
Help Method
IsRestricted Method
IsServiceRunning Method
MinimizeAll Method
NameSpace Method
Open Method
RefreshMenu Method
ServiceStart Method
ServiceStop Method
SetTime Method
ShellExecute Method
ShowBrowserBar Method
ShutdownWindows Method
Suspend Method
TileHorizontally Method
TileVertically Method
ToggleDesktop Method
TrayProperties Method
UndoMinimizeALL Method
Windows Method
WindowsSecurity Method
Application Property
Parent Property

Here Is -ComObject Example from Outlook

In this example we employ New-Object to create an Outlook Application.  The resulting object has a rich seam of properties and methods.

$Folder = "InBox"
Add-Type -Assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNameSpace("MAPI")
$Email = $NameSpace.Folders.Item(1).Folders.Item($Folder).Items
$Email | Sort-Object SenderEmailAddress -Unique | FT SenderEmailAddress

See More on PowerShell's Send-Email function ยป

Summary of -COM Shell Objects

Once you have discovered the straightforward technique of creating com objects, then you can specialise by creating a Shell.Application object.  After you have assigned the object to a variable, you can apply methods to perform useful tasks such as opening folders or exploring with Windows Explorer.  The secret of this method is adding a value in the brackets at the end of the command, for example, $ShellExp.Open("C:\").

If you like this page then please share it with your friends


See more Microsoft PowerShell tasks:

PowerShell Home   • Shell Application   • New-Object   • PowerShell Add Printer   • PowerShell -com

PowerShell Logon Script  • Map Network Drive  • PowerShell Create Shortcut  • Free CSV Import Tool

Invoke-Expression   • Invoke-Command   • Invoke-Item   • PowerShell Expression v Command Mode

Please email me if you have a better example script. Also please report any factual mistakes, grammatical errors or broken links, I will be happy to correct the fault.