1. Computer management. Path: %windir%\system32\compmgmt.msc
2. The Windows PowerShell icon. Path: %windir%\System32\WindowsPowerShell\v1.0\powershell.exe
3. The Task Scheduler icon Path: %windir%\system32\taskschd.msc
4. The command prompt icon. Path: %windir%\system32\cmd.exe
5. The Internet Information Services (IIS) Manager icon. Path: %windir%\system32\inetsrv\InetMgr.exe
6. The Notepad icon. Path: %windir%\system32\notepad.exe
This script will mostly be used in environments where I don't have access to Active Directory or Group Policy but where I can have the AD team put in a PowerShell script to run one time on several servers or where I will be running this PowerShell script whenever necessary on the individual servers and workstations that I am customizing.
Someone wrote the following script which needs just a few more modifications until it will work properly:
Code: Select all
function New-ShortCut
{
[cmdletbinding()]
Param
(
[parameter(Mandatory)]
[ValidateScript({ Test-Path -path $_ })]
[string] $sourceExe,
[parameter(ValueFromPipelineByPropertyName)]
[string]$Arguments,
[parameter(ValueFromPipelineByPropertyName)]
[ValidateScript({
(Test-Path -path $_) -and ( (Get-Item -path $_).PSIsContainer )
})]
[string]$WorkingDirectory,
[parameter(ValueFromPipelineByPropertyName)]
[string] $DestinationLinkName = '{0}\temp.lnk' -f [environment]::GetFolderPath("desktop"),
[parameter(ValueFromPipelineByPropertyName)]
[ValidateSet('Default','Maximized','Minimized')]
[string]$WindowStyle = 'Default',
[parameter(ValueFromPipelineByPropertyName)]
[ValidateScript({ Test-Path -path $_ })]
[string]$IconPath,
[parameter(ValueFromPipelineByPropertyName)]
[ValidateScript({ $null -ne $IconPath })]
[int]$IconIndexNumber,
[parameter(ValueFromPipelineByPropertyName)]
[string]$HotKeyString
)
$wshShell = New-Object -ComObject WScript.Shell
$WindowStyles = @{
Default = 1
Maximized = 3
Minimized = 7
}
$shortcut = $wshShell.CreateShortcut( $DestinationLinkName )
$shortcut.TargetPath = $sourceExe
if ($arguments) { $shortcut.Arguments = $Arguments }
if ($WorkingDirectory) { $shortcut.WorkingDirectory = $WorkingDirectory }
if ($WindowStyle) { $shortcut.WindowStyle = $WindowStyles.$WindowStyle }
if ($HotKeyString) { $shortcut.Hotkey = $HotKeyString}
if ($IconPath) {
if ($IconIndexNumber) {
$shortcut.IconLocation = '{0},{1}' -f $IconPath,$IconIndexNumber
}
else {
$shortcut.IconLocation = $IconPath
}
}
try
{
$shortcut.Save()
}
catch
{
$_.Exception.Message
}
$null = [System.Runtime.InteropServices.Marshal]::ReleaseComObject($wshShell)
}
.\New-ShortCut -sourceExe 'c:\windows\System32\mmc.exe' -arguments 'compmgmt.msc' -DestinationLinkName $env:userprofile\desktop\ComputerManagement.lnk
.\New-Shortcut -sourceExe 'c:\windows\system32\windowspowershell\v1.0\powershell.exe' -DestinationLinkName $env:userprofile\desktop\powershell.lnk