{"id":293068,"date":"2024-03-09T00:09:11","date_gmt":"2024-03-08T23:09:11","guid":{"rendered":"https:\/\/www.borncity.com\/blog\/?p=293068"},"modified":"2024-03-05T13:20:33","modified_gmt":"2024-03-05T12:20:33","slug":"windows-10-11-icon-von-verknuepfungsdateien-per-powershell-aendern","status":"publish","type":"post","link":"https:\/\/borncity.com\/blog\/2024\/03\/09\/windows-10-11-icon-von-verknuepfungsdateien-per-powershell-aendern\/","title":{"rendered":"Windows 10\/11: Icon von Verkn\u00fcpfungsdateien per PowerShell \u00e4ndern"},"content":{"rendered":"<p><img decoding=\"async\" style=\"float: left; margin: 0px 10px 0px 0px; display: inline;\" title=\"Windows\" src=\"https:\/\/borncity.com\/blog\/wp-content\/uploads\/2021\/04\/Windows-klein.jpg\" alt=\"Windows\" width=\"200\" align=\"left\" \/>Gelegentlich steht am als Nutzer oder Administrator vor der Aufgabe die Icons von Verkn\u00fcpfungsdateien zu \u00e4ndern. Bei ein oder zwei Dateien l\u00e4sst sich dies manuell \u00fcber deren Eigenschaften erledigen. Bei vielen Dateien kann die PowerShell zum Einsatz gelangen. Ein Blog-Leser hat mir ein entsprechendes Script zur Ver\u00f6ffentlichung bereitgestellt.<!--more--><\/p>\n<h2>Eine Leseranfrage<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vg06.met.vgwort.de\/na\/01a6f08d296c42979fd6037eee8caff9\" alt=\"\" width=\"1\" height=\"1\" \/>Heute mal ein kleiner Tipp, der vielleicht dem einen oder anderen Administrator behilflich sein kann. Blog-Leser Antonius hatte mich vor einiger Zeit per Mail kontaktiert und gefragt, wie man eigentlich bei einer ganze Reihe Verkn\u00fcpfungsdateien das Verkn\u00fcpfungssymbol automatisiert anpassen k\u00f6nne.<\/p>\n<blockquote><p>Guten Tag Herr Born,<\/p>\n<p>folgende dringende Frage zum Betriebssystem Windows10\/11 haben wir.<\/p>\n<p>Im Netz gibt es Anweisungen wie man per Hand ein Icon einer Verkn\u00fcpfung (.URL bzw. .LNK-Datei) \u00e4ndern kann.<\/p>\n<p>Leider hilft uns das hier beschriebene <u>manuelle<\/u> \u00c4ndern der Icons bspw. f\u00fcr Desktop-Verkn\u00fcpfungen (= .URL-Dateien) nicht weiter!<\/p>\n<p>Wir ben\u00f6tigen einen <u>automatisierten<\/u> Weg das Icon von sehr vielen .URL-Dateien zu \u00e4ndern.<\/p>\n<p>Wenn Sie mehr als 200 .URL-Dateien haben, dann ist der oben beschriebene manuelle Weg sinnlos.<\/p>\n<p>Wir ben\u00f6tigen quasi einen CMD-Befehl mit dem man das Icon einer bestehenden .URL-Datei auf ein anderes Icon (mit neue Pfadangabe des neuen Icons) \u00e4ndern kann.<\/p>\n<p>Wenn wir einen Befehl f\u00fcr die eine Datei haben, dann k\u00f6nnen wir eine FOR-Schleife bauen, die alle 200 .URL-Dateien \u00e4ndern kann.<\/p>\n<p>Wie k\u00f6nnen wir dies durchf\u00fchren? Kennen Sie einen DOS-Befehl oder eine Batch-Datei?<\/p>\n<p>Oder kennen Sie ein Programm oder eine andere L\u00f6sung unter Windows 10\/11?<\/p>\n<p>F\u00fcr Ihre Unterst\u00fctzung und Hilfe w\u00e4ren wir Ihnen dankbar.<\/p><\/blockquote>\n<p>Mir selbst war ad-hoc kein Programm und auch keine L\u00f6sung f\u00fcr diese Anforderung bekannt. Einen DOS-Befehl dazu gibt es meines Wissens nicht. Ich hatte zur Jahrtausendwende in meinen Windows Script Host-B\u00fcchern wohl mal entsprechende Ans\u00e4tze mittels\u00a0Windows Script Host und JScript zum Anpassen der Parameter einer Verkn\u00fcpfungsdatei erw\u00e4hnt, aber kein sofortige L\u00f6sung. Mir waren nur folgende Internet-Treffer bei einer kurzen Suche aufgefallen:<\/p>\n<p><a href=\"https:\/\/community.spiceworks.com\/topic\/355002-how-to-replace-an-existing-url-shortcut-created-on-all-desktop-with-a-new-url\" target=\"_blank\" rel=\"noopener\">how to replace an existing url shortcut created on all desktop with a new url<\/a><br \/>\n<a href=\"https:\/\/learn.microsoft.com\/en-us\/troubleshoot\/windows-client\/admin-development\/create-desktop-shortcut-with-wsh\" target=\"_blank\" rel=\"noopener\">How to create a desktop shortcut with the Windows Script Host<\/a><\/p>\n<p>die irgendwie den Windows Script Host mit VBScript f\u00fcr die Manipulation von Shortcut-Dateien verwendeten. Allerdings ging mir im Kopf herum, dass die PowerShell vermutlich die bessere L\u00f6sung f\u00fcr diesen Zweck bereith\u00e4lt und hatte dem Blog-Leser diese Information mit einigen Links bereitgestellt.<\/p>\n<p><a href=\"http:\/\/powershellblogger.com\/2016\/01\/create-shortcuts-lnk-or-url-files-with-powershell\/\" target=\"_blank\" rel=\"noopener\">Create Shortcuts .lnk or .url Files With PowerShell<\/a> (PowerShell-Blogger)<br \/>\n<a href=\"https:\/\/www.reddit.com\/r\/PowerShell\/comments\/bb9ded\/change_url_shortcuts_icon_in_ps\/\" target=\"_blank\" rel=\"noopener\">Change .url shortcuts icon in PS?<\/a> (reddit.com Post)<br \/>\n<a href=\"https:\/\/community.spiceworks.com\/topic\/2317514-powershell-how-can-i-change-the-icon-of-a-shortcut-to-a-custom-icon-file-i-have\" target=\"_blank\" rel=\"noopener\">PowerShell:How can I change the icon of a shortcut to a custom icon file I have?<\/a> (Spiceworks)<\/p>\n<h2>Die L\u00f6sung des Lesers<\/h2>\n<p>Blog-Leser Antonius hat sich dann die betreffenden Fundstellen angesehen und begonnen, ein PowerShell-Script, welches die Icons von mehreren Verkn\u00fcpfungsdateien umsetzen kann, zu entwickeln. Als das Script stand, hat er nachgefragt, ob ich Interesse daran h\u00e4tte. Ich stelle das Ganze hier AS-IS f\u00fcr die Leserschaft zur Verf\u00fcgung:<\/p>\n<pre>#  Autor und Programmierer: Herr Antonios\r\n#  Datum: 14.02.2024\r\n#  PS-Skript zum massenhaften \u00c4ndern von URL-Datei-Symbolen (Icons) in einem Quellordner\r\n#\r\n#    FOLGENDE SCHRITTE SIND DURCHZUF\u00dcHREN:\r\n# 1. Anzupassen w\u00e4re im Skript individuell NUR der Wert der Variablen \"$IconFile=\".\r\n#    Geben Sie dort den Pfad an, wo sich das neue Icon (sprich .ico-Datei) befindet.\r\n# 2. Speichern Sie das Skript in dem Ordner ab, wo sich die zu \u00e4ndernden .URL-Dateien befinden.\r\n#    Als Skript-Name k\u00f6nnen Sie bspw. vergeben: \"z_PS_Skript_massenhafte_\u00c4nderung_von_URL_Datei_Icons.ps1\".\r\n#\r\n# 3. F\u00fchren Sie das Skript aus.\r\n# 4. Um die neuen Icons zu sehen, melden Sie sich als Benutzer in Windows ab und wieder neu an ! \r\n\r\nCLS \r\n\r\n# Implementiert wird hier eine relative Pfadangabe, damit das PS-Skript in unterschiedlichen\r\n# (Unter-)Ordnern ausgef\u00fchrt werden kann.\r\n\r\n$Pfad = '.\\'\r\n$DateiTyp = '*.URL'\r\n$DateiPfad = $Pfad + $DateiTyp \r\n$IconFile = 'C:\\Users\\BENUTZERNAME\\Dokumente\\ICONS\\NameNeuerIcon.ico'\r\n$IconWert = 'IconFile=' + $IconFile\r\n$regex = 'IconFile.*'\r\n\r\n#\u00dcberpr\u00fcfung, ob im Ausgangsverzeichnis mindestens eine *.URL Datei existiert\r\nif ( !(Test-Path $DateiPfad) ) {\r\n    Write-Host \" Error: \" `n \"Es existiert keine *.URL-Datei im Ausgangsverzeichnis !! ==&gt; Skript wird beendet.\" `n\r\n    exit 1\r\n}\r\n\r\n#Sicherung aller Dateien des aktuellen Verzeichnisses'\r\n$Sicherungsverzeichnis = '.\\__SICHERUNG_ALLE_Dateien_VOR_LAUF_PowShl_Skript'\r\nif (Test-Path $Sicherungsverzeichnis) {\r\n    Write-Host \"Verzeichnis existiert bereits !!\"\r\n    Write-Host \"Eine Sicherung hat bereits zuvor stattgefunden. Eine neue Sicherung wird nicht angelegt!\"\r\n} else {\r\n    Write-Host \"Sicherungsverzeichnis existiert NICHT! \"\r\n    Write-Host \"Neues Verzeichnis wird angelegt inkl. Sicherungsdateien.\"\r\n    mkdir $Sicherungsverzeichnis\r\n    copy .\\*.* $Sicherungsverzeichnis\r\n}\r\n\r\nEcho `n\r\nEcho \"--- Phase Sicherung ist abgeschlossen ---\"\r\n\r\n# Ausgabe aktuelles Arbeitsverzeichnis\r\nEcho `n \"Ausgabe aktuelles Arbeitsverzeichnis:\"\r\nGet-Location\r\nEcho \"\"\r\nPAUSE\r\n\r\n# Ab hier \u00c4nderung des Contents aller .URL-Dateien im aktuellen Verzeichnis\r\n# Im Content soll der Wert f\u00fcr \"IconFile=\" ge\u00e4ndert werden. Dieser soll auf \r\n# den Pfad des (neuen) Icons ge\u00e4ndert werden.\r\nEcho \"\"\r\nEcho \"\"\r\nEcho \"*** Ausgabe ALLE .URL-Dateien die bearbeitet werden: ****\"\r\n$(dir $DateiPfad -file ).Name\r\nEcho \"\"\r\nPAUSE\r\nEcho \"\"\r\nEcho \"===================================================================\"\r\nEcho \"DURCHLAUF der FOR-Schleife - AUSGABE des Contents der URL-Dateien:\"\r\n$FileList = (dir $DateiPfad -file ).Name\r\nforeach($a in $FileList) {\r\n\"Pfad:  \" + $DateiPfad\r\n\"Datei: \" + $a\r\nEcho \"---------------------------------------------------------------------\"\r\nEcho \"==== ORIGINAL Inhalt der Datei $a \"\r\nEcho \"\"\r\nGet-Content $a\r\nEcho \"\"\r\nEcho \"-------------------------------------------------------------\"\r\nEcho \"==== Durchf\u00fchrung der \u00c4nderung des IconFile in der Datei \"\r\nEcho \"\"\r\n(Get-Content $a) -replace $regex, $IconWert | Set-Content $a\r\nGet-Content $a\r\nEcho \"\"\r\nEcho \"===================  Bearbeitung dieser .URL-Datei hier abgeschlossen  ===========================================\"\r\nEcho \"\"\r\n}\r\nEcho `n\r\nEcho \" ---- Skript Ende ---- \"\r\nEcho \"\"\r\nEcho \" ---- Melden Sie sich in Windows ab und wieder neu an !! ---- \"\r\nEcho `n\r\nPAUSE<\/pre>\n<p>Blog-Leser Antonius schrieb mir: \"Das PowerShell-Skript funktioniert einwandfrei. Und es muss nur einmal ausgef\u00fchrt werden (nicht mehrmals).\" An dieser Stelle mein Dank an den Leser, dass er seine L\u00f6sung der Leserschaft bereitstellt &#8211; vielleicht kann jemand das brauchen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gelegentlich steht am als Nutzer oder Administrator vor der Aufgabe die Icons von Verkn\u00fcpfungsdateien zu \u00e4ndern. Bei ein oder zwei Dateien l\u00e4sst sich dies manuell \u00fcber deren Eigenschaften erledigen. Bei vielen Dateien kann die PowerShell zum Einsatz gelangen. Ein Blog-Leser &hellip; <a href=\"https:\/\/borncity.com\/blog\/2024\/03\/09\/windows-10-11-icon-von-verknuepfungsdateien-per-powershell-aendern\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7459,301,3694],"tags":[3836,3288],"class_list":["post-293068","post","type-post","status-publish","format-standard","hentry","category-software","category-windows","category-windows-10","tag-software","tag-windows-en"],"_links":{"self":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/293068","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/comments?post=293068"}],"version-history":[{"count":0,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/293068\/revisions"}],"wp:attachment":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/media?parent=293068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/categories?post=293068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/tags?post=293068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}