Zum Inhalt
Desktop shortcut intune
Home » Desktop Verknüpfung(en) / Icon mit Intune verwalten

Desktop Verknüpfung(en) / Icon mit Intune verwalten

Immer wieder treffe ich die Situation an, dass Kunden vordefinierte Desktop Verknüpfungen für Programme, Webseiten oder Webapplikationen verteilt haben möchten. Um diese effizient zu verteilen und aktualisieren zu können, habe ich ein PowerShell Script erstellt, welches mir die Desktop Verknüpfung(en) mit Intune, wenn gewünscht mit einem spezifischen Icon verteilt. Das Ganze packe ich dann in eine win32 Applikation, um auch mit Versionen zu arbeiten.

Table of Contents

Vorbereitung

Hier findest du meine Vorlage inklusive zweier Beispiel Verknüpfungen: GitHub - scloud/DesktopShortcut

Meine Lösung bietet die Möglichkeit, entweder vordefinierte Verknüpfungen zu verwenden oder diese in einem CSV zu pflegen.
Die vordefinierten Verknüpfungen kannst du einfach unter ".\Desktop" ablegen. Achte dabei darauf, dass wenn Icons hinterlegt sind, diese nur funktionieren, solange sie auch auf dem Zielsystem, am entsprechenden Ort vorhanden sind.
Im CSV (link-list.csv) musst du lediglich den Verknüpfungsnamen, den Link und das Icon angeben. Das Icon legst du im Ordner "icon" ab.

Verteilung - PowerShell Script

Durch das File "install.ps1" wird die gesamte Verteilung abgehandelt.

In einem ersten Schritt definiere ich den Paketnamen sowie die Version. Zudem starte ich ein Transkript des Ablaufs, um ein Log lokal auf dem Gerät zu haben.

$PackageName = "DesktopIcon_SLZ"
$Version = "1"

$Path_4netIntune = "$Env:Programfiles\4net\EndpointManager"
Start-Transcript -Path "$Path_4netIntune\Log\$PackageName-install.log" -ForceCodesprache: Power Shell (powershell)

Im zweiten Schritt definiere und erstelle ich die Pfade beziehungsweise Ordner, welche ich für die Verknüpfungen und Icons benötige.

# Paths
$DesktopTMP = "$Path_4netIntune\Data\Desktop\$PackageName"
$DesktopIcons = "$Path_4netIntune\Data\icons\$PackageName"

# Create Folders
New-Item -Path $DesktopTMP -ItemType directory -force
New-Item -Path $DesktopIcons -ItemType directory -force
New-Item -Path "C:\Users\Public\Desktop" -ItemType directory -forceCodesprache: Power Shell (powershell)

Als drittes entferne ich mögliche Vorgänger-Versionen des Pakets, dessen Verknüpfungen auf dem Desktop sowie Icons im lokalen Ordner.

# Remove old shortcuts and icons
$OLD_Items = Get-ChildItem -Path $DesktopTMP
foreach($OLD_Item in $OLD_Items){
    Remove-Item "C:\Users\Public\Desktop\$($OLD_Item.Name)" -Force
}
Remove-Item "$DesktopTMP\*" -Force
Remove-Item "$DesktopIcons\*" -ForceCodesprache: Power Shell (powershell)

Im vierten Schritt kopiere ich alle vordefinierten Icons aus dem Ordner "Desktop" in den temporären lokalen Ordner auf dem PC.

# Copy New shortcuts
Copy-Item -Path ".\Desktop\*" -Destination $DesktopTMP -Recurse
Copy-Item -Path ".\icons\*" -Destination $DesktopIcons -RecurseCodesprache: Power Shell (powershell)

Anschliessen lese ich das CSV ein und erstelle die definierten Verknüpfungen ebenfalls im temporären Desktop-Ordner.

# shortcuts from list
$shortcuts = Import-CSV "link-list.csv"
foreach($shortcut in $shortcuts){
    $WshShell = New-Object -comObject WScript.Shell
    $Shortcut_file = $WshShell.CreateShortcut("$DesktopTMP\$($shortcut.name).lnk")
    $Shortcut_file.TargetPath = $shortcut.link
    $Shortcut_file.IconLocation = "$DesktopIcons\$($shortcut.icon)"
    $Shortcut_file.Save()
}Codesprache: Power Shell (powershell)

Nach des Kopiervorgangs und der Erstellung aller Verknüpfungen kopiere ich diese in den Public Desktop des Gerätes.

# Copy icons to public Desktop
Copy-Item -Path "$DesktopTMP\*" -Destination "C:\Users\Public\Desktop" -RecurseCodesprache: Power Shell (powershell)

Zum Abschluss erstelle ich eine Datei die als Erkennungsregel fungiert und die Version meines Paketes beinhaltet. Zudem stoppe ich das Transkript.

# Validation
New-Item -Path "$Path_4netIntune\Validation\$PackageName" -ItemType "file" -Force -Value $Version

Stop-Transcript
Codesprache: Power Shell (powershell)

Die Erkennungsregel

Die Erkennungsregel liest die Validierungsdatei und zudem dessen Inhalt aus und vergleicht diesen mit der Versionsnummer. Ist alles korrekt, wird dies so an Intune rapportiert. Falls du den PackageName oder die Version im "install.ps1" anpasst, musst du dies auch im "check.ps1" machen.

$PackageName = "DesktopIcon_SLZ"
$Version = "1"
$ProgramVersion_current = Get-Content -Path "$Env:Programfiles\4net\EndpointManager\Validation\$PackageName"

if($ProgramVersion_current -eq $Version){
    Write-Host "Found it!"
}Codesprache: Power Shell (powershell)

Intune win32 Paket

Mit dem Intune Win32 Prep Tool wird das Paket, nachdem das CSV und oder der Desktop Ordner abgefüllt ist erstellt:

intunewin desktop shortcut win32

Anschliessend laden wir die erstellte Datei "install.intunewin" im MEM/Intune hoch und setzten die entsprechenden Parameter. (rot zwingend, orange Optional, aber hilfreich, wenn das Unternehmensportal genutzt wird.)

NameDesktopShortcuts oder individuell
BeschreibungHinweis zu den Verknüpfungen
Herausgeberindividuell
Iconfrei wählbar
Installations-Befehl%SystemRoot%\sysnative\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -command .\install.ps1
Deinstallations-Befehl%SystemRoot%\sysnative\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -command .\uninstall.ps1
Anforderungenx64 und 2004 (Windows Version nicht relevant)
Erkennungsregelcustom script, check.ps1
Abhängigkeitkeine
Zuweisungje nach Anforderung

Möchtest du die Verknüpfung/en gleich automatisiert hochladen?
Dann habe ich hier einen Beitrag für dich: wi
n32 App Deployment automatisiert

Installations-Demo (Unternehmensportal)

Dies ist der Installations Prozess via Unternehmensportal, wobei der Benutzer die Installation anstösst. Ebenso funktioniert die Verteilung via Targeting. Der Prozess, mit Intune eine Desktop Verknüpfung mit Icon zu verteilen ist so sehr einfach und praktikabel. Auch Updates sind schnell umgesetzt.

demo win32 intune desktop shortcut

16 Gedanken zu „Desktop Verknüpfung(en) / Icon mit Intune verwalten“

    1. Based on the last package configuration old icons will be removed and new added.
      For this purpose, I save a copy of the package's shortcuts unter "C:\Program Files\4net\EndpointManager\Data\Desktop"
      It is important to raise the version number for this scenario.

  1. Pingback: Ungewollte Desktop Verknüpfungen proaktiv entfernen | scloud

  2. Can I use this to deploy multiple icons at once? For example, I'm looking to deploy, Outlook, Word, Excel and Powerpoint icons within one go so I can add this to the company portal. How would I do that?

  3. Great script. But how do I include a shortcut to open in Inprivate window?

    I tried to add another csv (link-list1.csv) with the following PS, but didn't worked.

    $shortcuts1 = Import-CSV "link-list1.csv"
    foreach($shortcut1 in $shortcuts1){
    $WshShell = New-Object -comObject WScript.Shell
    $Shortcut_file1 = $WshShell.CreateShortcut("$DesktopTMP\$($shortcut1.name).lnk")
    $Shortcut_file1.WorkingDirectory = $shortcut1.path
    $Shortcut_file1.TargetPath = $shortcut1.link
    $Shortcut_file1.IconLocation = "$DesktopIcons\$($shortcut1.icon)"
    $Shortcut_file1.Save()
    }

    1. Hi Sahil, you could create a custom shortcut and place it in the "Desktop" folder. Within the CSV only direct url/links are possible.
      The custom URL would look like:
      "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" -inprivate "https://scloud.work"

      1. Hi Florian,

        Yes, I tried that. But the link is not opening in inprivate window.

        I also tried adding the custom URL in CSV, but still won't work

      2. Hey Florian: I figured out. You have to place the incognito shortcut in the Desktop folder with the icon in icons folder and then in the CSV add the shortcut name and icon entries keeping the link field empty.

        It was also creating duplicate shortcuts - .url copied from the $DesktopTMP folder and .lnk created from the link-list.csv. So I just added incognito shortcuts in the Desktop folder and other shortcuts added in the csv file.

        Thank you again for this great script.

  4. When the script runs it is creating two icons on the desktop. one that the correct shortcut and one that looks like a broken shortcut how can this be resolved ?

  5. I deployed this script as required to a device group and users seem to be getting prompted for UAC when it tries to install. Could this be due to the fact that the users I pushed it to are Local Admin on their workstations? Or is there something else that may be causing this? From my knowledge, if this is being pushed in system context then it should not prompt for anything.

  6. Hello, tks for your work, I have a question when someone deletes the shortcut will the intune put the shortcut again?
    Regards,
    PauloP

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

de_CHDE