New
#101
You have to add shortcuts.
This is the script I use (you would have to change your name and where you save your programs) but it might be useful as it has all the code to add administrator authority to the shortcut when required...Alternatively you can make shortcuts manually in \AppData\Roaming\Microsoft\Windows\Start Menu\Programs\ for example.Code:# Shortcuts will be created in $ShortcutRoot for programs found in $ExeRoot (except for $Exclusions) $ExeRoot="C:\Users\Hali\OneDrive\Programs\" $ShortcutRoot=$Home + "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" $Exclusions = @("gdisk64","nvspbind","StartKiller","UnlockerInject32") $PoShExeRoot="C:\Users\Hali\OneDrive\Programs\Powershell Scripts\" $PoShShortcutRoot=$Home + "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Powershell Scripts\" $PoShExclusions = @("Sleep Mac Transmission","Wake Mac Transmission","WakeTransmission") $SysinternalsExeRoot="C:\Users\Hali\OneDrive\Programs\SysinternalsSuite\" $SysinternalsShortcutRoot=$Home + "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\SysinternalsSuite\" $SysinternalsExclusions = @( "accesschk","autorunsc","adrestore","Clockres","Contig","CoreInfo","ctrl2cap","diskext","du","efsdump","FindLinks","handle","hex2dec","junction","ldmdump","listdlls", "livekd","logonsessions","movefile","ntfsinfo","pendmoves","pipelist","procdump","PsExec","psfile","PsGetSid","PsInfo","pskill","pslist","PsLoggedon","psloglist","pspasswd", "psping","PsService","psshutdown","pssuspend","RegDelNull","regjump","RootkitRevealer","ru","sdelete","sigcheck","streams","strings","sysmon","sync","VolumeID","Whois") #---------------------------------------------------------------- # Check set-up #---------------------------------------------------------------- Write-Host "Shortcuts will be created in " -NoNewline; Write-Host $ShortcutRoot -f White Write-Host "for programs found in " -NoNewline; Write-Host $ExeRoot -NoNewline -f White; Write-Host " and " -NoNewline; Write-Host $SysinternalsExeRoot -f White $title="Keep folder structure for shortcuts?" $message="Enter choice" $choices = @( @("Yes", "Keep existing structure"), @("No", "Create Shortcuts in root directory"), @("Exit","Exit") ) $options = @($i=0;$choices | %{New-Object System.Management.Automation.Host.ChoiceDescription "&$i`b$($_[0])", $_[1]; $i++}) $result = $host.ui.PromptForChoice($title, $message, $options, 1) $choice = $choices[$result][0] Switch ($result) { 0 {$Consolidate=$False} 1 {$Consolidate=$True} 2 {exit} } #---------------------------------------------------------------- Function Set-Admin #---------------------------------------------------------------- # Set the Run As Administrator flag ($file) { if (-not (Test-Path $file)) { Write-Host "File not found " -NoNewline -f red; Write-Host "$file" -f red } else { $bytes = [System.IO.File]::ReadAllBytes($file) $bytes[0x15] = $bytes[0x15] -bor 0x20 #set byte 21 (0x15) bit 6 (0x20) ON (Use –bor to set RunAsAdministrator option and –bxor to unset) [System.IO.File]::WriteAllBytes($file, $bytes) Write-Host "Administrator authority granted " -NoNewline -f green; Write-Host "$file" -f White } } #---------------------------------------------------------------- Function Create-Shortcuts #--------------------------------------------------------------- # Create shortcuts for all non-excluded .exe ($ExeRoot,$ShortcutRoot,$Exclusions,$Consolidate,$Recurse) { # Get all program objects if ($Recurse) {$Apps=Get-ChildItem -path $ExeRoot -include @("*.exe","*.ps1") -recurse} else {$Apps=Get-ChildItem -path "$ExeRoot*" -include @("*.exe","*.ps1")} Foreach ($App in $Apps) { $ShortcutName=[io.path]::GetFileNameWithoutExtension($App.FullName)+'.lnk' $IconPath=(Split-Path $App.FullName -parent)+"\"+[io.path]::GetFileNameWithoutExtension($App.FullName)+'.ico' if ($consolidate) { $ShortcutPath=$ShortcutRoot+$ShortcutName } else { $ShortcutPath=([io.path]::ChangeExtension($ShortcutRoot + $App.FullName.SubString($ExeRoot.Length), '.lnk')) } if (Test-Path $ShortcutPath) { Write-Host "Shortcut exists " -NoNewline -f cyan; Write-Host "$ShortcutPath" -f white } elseif ($Exclusions -contains $App.BaseName) { Write-Host " excluded " -NoNewline -f red; Write-Host "$App" -f red } else { # Create directory if required $ShortcutDirectory = Split-Path $ShortcutPath -parent if (-not (Test-Path $ShortcutDirectory )) { New-Item -ItemType Directory -Path $ShortcutDirectory -Force } # Create Shortcut $WshShell=New-Object -ComObject WScript.Shell $Shortcut=$WshShell.CreateShortcut($ShortcutPath) If([io.path]::GetExtension($App.FullName) -eq '.exe') { $Shortcut.TargetPath = $App.FullName } Else { $Shortcut.TargetPath ='%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe' $Shortcut.Arguments = '-ExecutionPolicy Bypass -File "'+$App.FullName+'"' } if (Test-Path $IconPath) {$Shortcut.IconLocation = $IconPath} $Shortcut.WorkingDirectory = Split-Path $App.FullName -parent $Shortcut.Save() Write-Host "Shortcut created " -NoNewline -f green; Write-Host $ShortcutPath -f White # Make Powershell shortcuts run as administrator If([io.path]::GetExtension($App.FullName) -eq '.ps1') {Set-Admin $ShortcutPath} } } } Write-Host "EXEs Processed" -f Yellow; Write-Host #---------------------------------------------------------------- # Sysinternals Programs #---------------------------------------------------------------- Create-Shortcuts $SysinternalsExeRoot $SysinternalsShortcutRoot $SysinternalsExclusions $True $False # sync.exe (want to add icon) $WshShell=New-Object -ComObject WScript.Shell $Shortcut=$WshShell.CreateShortcut("$SysinternalsShortcutRoot\sync.lnk") $Shortcut.TargetPath = "$SysinternalsExeRoot\sync.exe" $Shortcut.WorkingDirectory = "$SysinternalsExeRoot" $Shortcut.IconLocation = "%SystemRoot%\system32\shell32.dll,217" # (54 accross *4 deep + 1 down = 217 in the dll) $Shortcut.Save() Write-Host "Shortcut created " -NoNewline -f green; Write-Host $SysinternalsShortcutRoot"sync.lnk" -f White # Set various shortcuts to run as Admin Set-Admin "$SysinternalsShortcutRoot`Autoruns.lnk" Set-Admin "$SysinternalsShortcutRoot`procexp.lnk" Set-Admin "$SysinternalsShortcutRoot`Procmon.lnk" Set-Admin "$SysinternalsShortcutRoot`sync.lnk" #---------------------------------------------------------------- # Powershell scripts #---------------------------------------------------------------- Create-Shortcuts $PoShExeRoot $PoShShortcutRoot $PoShExclusions $True $True #---------------------------------------------------------------- # Other Programs #---------------------------------------------------------------- # Get Programs in root Create-Shortcuts $ExeRoot $ShortcutRoot $Exclusions $True $False # Get programs in sub-directories (except Sysinternals) $OtherDirs = Get-ChildItem -path $ExeRoot -dir -exclude "SysinternalsSuite","Powershell Scripts" $SavedShortcutRoot=$ShortcutRoot $SavedExeRoot=$ExeRoot Foreach ($OtherDir in $OtherDirs) { $ExeRoot=$OtherDir.FullName+"\" if (-not $Consolidate) { $ShortcutRoot=$SavedShortcutRoot+$OtherDir.Name+"\" } Create-Shortcuts $ExeRoot $ShortcutRoot $Exclusions $Consolidate $True } $ShortcutRoot=$SavedShortcutRoot $ExeRoot=$SavedExeRoot # Set various shortcuts to run as Admin Set-Admin "$ShortcutRoot`windirstat.lnk" Set-Admin "$ShortcutRoot`TreeSizeFree.lnk" #---------------------------------------------------------------- # Other Shortcuts #---------------------------------------------------------------- $WshShell = New-Object -ComObject WScript.Shell $Shortcut=$WshShell.CreateShortcut("$ShortcutRoot\God Mode.lnk") $Shortcut.TargetPath = $Shortcut.TargetPath = "$env:systemroot\explorer.exe" $Shortcut.Arguments = "shell:::{ED7BA470-8E54-465E-825C-99712043E01C}" $Shortcut.Save() Write-Host "Shortcut created " -NoNewline -f green; Write-Host $ShortcutRoot"God Mode.lnk" -f White if (-not(Test-Path "$ShortcutRoot\TN5250")) {New-Item -ItemType Directory -Path "$ShortcutRoot\TN5250" -Force} Copy-Item $ExeRoot\TN5250\PUB1.lnk $ShortcutRoot\TN5250\ Copy-Item $ExeRoot\TN5250\SIASDEV.lnk $ShortcutRoot\TN5250\ Move-Item $ShortcutRoot\TN5250.lnk $ShortcutRoot\TN5250\ #---------------------------------------------------------------- # Rename any odd named #---------------------------------------------------------------- if (Test-Path "$ShortcutRoot\TFC.lnk") {Rename-Item "$ShortcutRoot\TFC.lnk" "$ShortcutRoot\Temp File Cleaner.lnk"} if (Test-Path "$ShortcutRoot\Rapr.lnk") {Rename-Item "$ShortcutRoot\Rapr.lnk" "$ShortcutRoot\Driver Store Explorer.lnk"} Write-Host Read-Host -Prompt "Press Enter to exit"