PowerShell’s New-Object -Com Creates a Shortcut
The purpose of this page is to explain how to create a shortcut on your desktop. The method we will be using is, New-Object -ComObject WScript.Shell.
Topics for PowerShell Creates Desktop Shortcut
- PowerShell’s New-Object -Com
- Create the Object (WScript.Shell)
- Create a Functioning Shortcut on Your Desktop
- Another PowerShell Shortcut Example
- List Start Menu Shortcuts
- Summary of Com Shell Objects
♣
PowerShell’s New-Object -Com
All PowerShell COM objects are rely on the basic command: New-Object -Com. For our mission to create a shortcut we need a WScript.Shell type of comObject. As usual, I will take you step-by-step through the method.
1) Assuming You Have Installed PowerShell
Launch the ISE (GUI) or if you prefer, the PowerShell command line; then issue these commands:
2) Create the Object (WScript.Shell)
It is convenient to create an object and assign it to a variable, for example:
# Windows PowerShell Com Object
$WshShell = New-Object -ComObject WScript.Shell
3) Research the Methods with Get-Member
Creating the com object is like creating a shortcut shell, next we need to supply properties using the correct .method.
# Research WScript.Shell Methods
$WshShell = New-Object -ComObject WScript.Shell
$WshShell | Get-Member -memberType methods
Learning Points
The above is how I discovered the .CreateShortcut method. Let us now see how we can build a shortcut on the desktop.
4) Build a Shortcut Shell
Problem: This example below merely creates a shell, we are going to need properties for a fully functioning shortcut see 5) Create Shortcut.
# Build a Shortcut Shell
$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\MyFirstShortCut.lnk")
$Shortcut | Get-Member -memberType Properties
Learning Points
Note 1: $Home\Desktop specifies the location for the shortcut, this translates to the desktop of the current user.
Note 2: Here are the shortcut properties some of which are vital to build a functioning shortcut.
Arguments Property
Description Property
FullName Property
Hotkey Property
IconLocation Property
RelativePath Property
TargetPath Property
WindowStyle Property
WorkingDirectory Property
5) Create a Functioning Shortcut on Your Desktop
This example uses PowerShell to create a shortcut for calc.exe on your desktop. You could substitute the name of another executable, or if you prefer type the full path to the program you want to launch via a desktop shortcut.
# Create a Calculator Shortcut with Windows PowerShell
$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\Calc.lnk")
$Shortcut.TargetPath = "Calc"
$Shortcut.Save()
Note 3: Nothing much happens unless you append the .Save() method.
Note 4: It’s essential to put the name of the application "Calc", or the path, in double speech marks.
Guy Recommends: 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
Another PowerShell Shortcut Example
The purpose of this script is to create a different shortcut, one which allows you to remove USB hardware quickly, but safely.
PowerShell Script to Create a Shortcut
$AppLocation = "C:\Windows\System32\rundll32.exe"
$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\USB Hardware.lnk")
$Shortcut.TargetPath = $AppLocation
$Shortcut.Arguments ="shell32.dll,Control_RunDLL hotplug.dll"
$Shortcut.IconLocation = "hotplug.dll,0"
$Shortcut.Description ="Device Removal"
$Shortcut.WorkingDirectory ="C:\Windows\System32"
$Shortcut.Save()
Note 5: This example employs more properties, for example, .Arguments and .IconLocation.
- Create Shortcut Function
- See more on safely removing hardware.
- See more on create a shortcut with PowerShell.
- How to Create a Windows 8 Metro Tile
Troubleshooting PowerShell Create Shortcut
The secret of troubleshooting PowerShell in general, and shortcuts in particular, is to have a manual walk-through of the process.
- Right-click on the desktop.
- Select ‘New’.
- Select ‘Shortcut’
- Type Calc
- Next
- Finish
Another source of troubleshooting a shortcut that PowerShell did not make correctly is to compare the failure with the properties of a shortcut you successfully created manually. My idea is to match up the properties as researched with Get-Member with boxes such as Target, or Start in.
Guy Recommends: A Free Trial of the Network Performance Monitor (NPM)
v11.5
SolarWinds’ Network Performance Monitor will help you discover what’s happening on your network. This utility will also guide you through troubleshooting; the dashboard will indicate whether the root cause is a broken link, faulty equipment or resource overload.
What I like best is the way NPM suggests solutions to network problems. Its also has the ability to monitor the health of individual VMware virtual machines. If you are interested in troubleshooting, and creating network maps, then I recommend that you try NPM now.
Download a free trial of Solarwinds’ Network Performance Monitor
How to List Shortcuts
Here is a script to list shortcuts on Microsoft's Start Menu
# List all .lnk files and their image paths
Clear-Host
$Path = "$Env:ProgramData\Microsoft\Windows\Start Menu\Programs"
$StartMenu = Get-ChildItem $Path -Recurse -Include *.lnk
ForEach ($Item in $StartMenu) {
$Shell = New-Object -ComObject WScript.Shell
$Properties = @{
ShortcutName = $Item.Name
Target = $Shell.CreateShortcut($Item).targetpath
}
New-Object PSObject -Property $Properties
}
[Runtime.InteropServices.Marshal]::ReleaseComObject($Shell) | Out-Null
See more PowerShell COM Object tasks »
Summary of PowerShell Create Shortcut Script
I have employed the New-Object cmdlet to mimic what you do manually when creating a shortcut on the desktop. Because it’s trickier than you might suspect, I have built-up gradually, in particular, I explained how to research the methods and properties.
If you like this page then please share it with your friends
See More Windows PowerShell Examples of Real-life Tasks
• PowerShell Tutorials • PowerShell Examples • Get-Counter • IpConfig • PowerShell v3 Ipconfig
• Monitor Performance – PowerShell • PowerShell Create Shortcut • PowerShell Function Shortcut
• PowerShell Restore Computer • PowerShell Temp • PowerShell Get-Item Env: • PowerShell NetSh
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.