Da qualche tempo al lavoro utilizziamo NinjaOne per dare assistenza ai computer di un nostro cliente. Tra le tante cose che si possono fare tramite NinjaOne è utilizzare degli script in PowerShell per automatizzare, e facilitare, determinate operazioni che prima era necessario fare in presenza in sede e, nei casi peggiori, dover girare computer per computer. In questo caso dovevo creare dei nuovi link, da posizionare sul desktop dei vari computer, per raggiungere un indirizzo Web che era cambiato. Così ho fatto qualche ricerca e trovato come si creano i collegamenti a file, cartelle, programmi e indirizzi Web.
Collegamento a file/cartelle/programmi
Per creare un collegamento a un programma qualsiasi sul desktop dell’utente attualmente collegato al computer
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\notepad.lnk")
$Shortcut.TargetPath = "C:\WINDOWS\system32\notepad.exe"
$Shortcut.Save()
Mentre in questo modo si crea un collegamento allo stesso programma, sul desktop pubblico, in modo che sia disponibile per qualsiasi utente si colleghi al computer.
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("C:\Users\Public\Desktop\notepad.lnk")
$Shortcut.TargetPath = "C:\WINDOWS\system32\notepad.exe"
$Shortcut.Save()
Nello stesso modo si può creare un collegamento a un file, o a una cartella, basta sostituire il percorso presente in $Shortcut.TargetPath.
Con questo script potete creare un collegamento veloce alla cartella Temp dentro il vostro account.
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("C:\Users\Public\Desktop\DaPulire.lnk")
$Shortcut.TargetPath = "C:\Users\Account\AppData\Local\Temp"
$Shortcut.Save()
Un altro sistema per la creazione di un link ad una cartella, che vi permette di definire anche una combinazione di tasti per aprirla, è questo:
$SourceFilePath = "D:\Dati Personali\"
$ShortcutPath = "C:\Users\Public\Desktop\Dati Personali.lnk"
$WScriptObj = New-Object -ComObject ("WScript.Shell")
$shortcut = $WscriptObj.CreateShortcut($ShortcutPath)
$shortcut.TargetPath = $SourceFilePath
$shortcut.WindowStyle = 1
$ShortCut.Hotkey = "CTRL+SHIFT+D";
$shortcut.Save()
Collegamento Web
Con questo script creiamo un collegamento ad un sito, sul desktop dell'account corrente, che verrà aperto con il browser di default del sistema operativo.
$Shell = New-Object -ComObject ("WScript.Shell")
$Favorite = $Shell.CreateShortcut("$env:USERPROFILE + "\Desktop\TurboLab.url")
$Favorite.TargetPath = "https://turbolab.it";
$Favorite.Save()
Se vogliamo che il sito sia aperto da un browser diverso da quello di default, dobbiamo indicare il percorso completo nel $shortcut.TargetPath, mentre l’indirizzo del sito va nel $shortcut.Arguments.
$shell = New-Object -comObject WScript.Shell
$shortcut = $shell.CreateShortcut("C:\Users\Public\Desktop\TurboLab.it.lnk")
$shortcut.TargetPath = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
$shortcut.Arguments = """https://turbolab.it"""
$shortcut.Save()
Se avete tanti computer e non siete sicuri di quale versione del browser avete installato, se a 32 bit o a 64 bit, si possono usare le condizioni if e else, per creare il link con i due $shortcut.TargetPath diversi a seconda della versione del browser.
if (Test-Path "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
{$shell = New-Object -comObject WScript.Shell
$shortcut = $shell.CreateShortcut("C:\Users\Public\Desktop\TurboLab.it.lnk")
$shortcut.TargetPath = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
$shortcut.Arguments = """https://turbolab.it"""
$shortcut.Save()}else{$shell = New-Object -comObject WScript.Shell
$shortcut = $shell.CreateShortcut("C:\Users\Public\Desktop\TurboLab.it.lnk")
$shortcut.TargetPath = "C:\Program Files\Google\Chrome\Application\chrome.exe"
$shortcut.Arguments = """https://turbolab.it"""
$shortcut.Save()}
Conclusioni
Dalle prove fatte, durante le ricerche su Internet per trovare i comandi giusti, mi sono accorto che non ci vuole molto per generare un errore nello script. Basta uno spazio di troppo, o una coppia di virgolette non chiusa nel modo corretto, per avere un errore o una mancata risposta dello script.
In questo script ho inserito due errori, uno spazio di troppo e non ho chiuso una copia di virgolette, il simbolo del prompt rimane rosso per indicare che ci sono dei problemi. Se tento di avviare questo script non ottengo nessuna risposta.
Nella stessa impaginazione degli articoli, troppo spesso, ho trovato questo genere di errori e script che sembravano interessanti non funzionavano e bisognava trovare il perché non andassero.