yan2021

Nach Austausch von Verzeichnis-Icons sind die Verzeichnisse nicht mehr sichtbar

Hallo Ihr Lieben...

in einem anderen Thread hier hatte ich gefragt, wie ich die Icons von Verzeichnissen gegen farbige Icons austauschen kann.
Am Ende war die Lösung, dass auf jedem Rechner auf Laufwerk "C:\" das Verzeichnis "Icons" abgelegt werden muss, welches die farbigen Icons enthält.

Dazu hat mir "MS Copilot" ein schönes PS-Script gebastelt, mit dem ich dann entsprechende farbige Icons den ersten beiden Ebenen unserer neuen Verzeichnisstruktur hinzugefügt hat.

Hier der Inhalt dieses PS-Scriptes:

# Zuordnung: Ordnungszahl (1–7) → Icon-Datei
$iconMapping = @{
    "1" = "C:\Icons\icon_010_17_Blue.ico"  
    "2" = "C:\Icons\icon_010_10_GreenLight.ico"  
    "3" = "C:\Icons\icon_010_8_Yellow.ico"  
    "4" = "C:\Icons\icon_010_25_Lilac.ico"  
    "5" = "C:\Icons\icon_010_6_Peach.ico"  
    "6" = "C:\Icons\icon_010_36_Platinum.ico"  
    "7" = "C:\Icons\icon_010_31_Gold.ico"  
}

$rootPath = "S:\"  

# Nur die obersten Ordner (S:\1 … S:\7)
Get-ChildItem -Path $rootPath -Directory | ForEach-Object {
    $topFolder = $_
    
    # Prüfen, ob der Name mit einer Ziffer von 1–7 beginnt
    if ($topFolder.Name -match '^([1-7])\b') {  
        $prefix = $matches[1]
        $iconPath = $iconMapping[$prefix]

        if ($iconPath) {
            # Liste: Hauptordner + alle Unterordner (2. Ebene)
            $ordnerListe = @($topFolder.FullName)
            $ordnerListe += Get-ChildItem -Path $topFolder.FullName -Directory | Select-Object -ExpandProperty FullName

            foreach ($folderPath in $ordnerListe) {
                $desktopIniPath = Join-Path $folderPath "desktop.ini"  

                $iniContent = @"  
[.ShellClassInfo]
IconFile=$iconPath
IconIndex=0
"@  
                $iniContent | Set-Content -Path $desktopIniPath -Encoding ASCII -Force

                attrib +s +h "$folderPath"  
                attrib +h "$desktopIniPath"  
            }

            Write-Host "✔ Icon gesetzt für: $($topFolder.Name) + Unterordner" -ForegroundColor Cyan  
        } else {
            Write-Host "⚠ Kein Icon zugewiesen für: $($topFolder.Name)" -ForegroundColor Yellow  
        }
    }
}

Wie gesagt, hat das super funktioniert und die obersten 7 Verzeichnisse erhielten nun alle unterschiedlich farbige Icons.
Testweise hatte ich die neue Struktur mal über meinen Explorer (Win 10) angeschaut und konnte alle Verzeichnisse nun farbig sehen.

ABER...:

Kurz darauf kam schon die erste Kollegin, die meinte, dass sie nun die neuen Verzeichnisse nicht mehr sehen könne.
Dann habe ich es auf einem Test-Rechner probiert und auch dort konnte ich die farbigen Verzeichnisse sehen.

Danach kam ein Test auf unserem Terminalserver, wo ich sie auch sehen konnte.
Aber beim dritten Test auf einem weiteren Server, konnte ich die neuen Verzeichnisse NICHT sehen, obwohl ich auf dem Server als Admin angemeldet bin. Es scheint also kein Berechtigungsproblem zu sein...

Am Ende stellte sich heraus, dass fast alle Kolleg*innen die neuen Verzeichnisse nun nicht mehr sehen können, obwohl sie diese vorher - also vor Änderung der Icons - sehen konnten.

Spontan würde ich jetzt die Änderungen zurücknehmen wollen. Aber ich weiß nicht wie face-sad
Es wurden ja in den ersten beiden Verzeichnis-Ebenen jeweils "desktop.ini"-Dateien von dem PS-Script angelegt. Diese könnte ich natürlich einfach löschen. Aber ich traue mich gerade nicht, diesen Schritt zu machen...

Hat jemand von Euch eine Idee?
Wäre klasse, denn im Moment ist es natürlich ganz schlecht, da fast Niemand die neuen Verzeichnisse sehen kann.

Danke & Grüße von
Yan face-wink
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 673660

Url: https://administrator.de/forum/verzeichnis-icon-powershell-windows-673660.html

Ausgedruckt am: 23.07.2025 um 17:07 Uhr

BiberMan
BiberMan 02.07.2025 aktualisiert um 14:00:28 Uhr
Naja einfach nur Augen auf beim Skripte-Klauf ....
attrib +s +h "$folderPath"
Wenn du den Ordner als Hidden markierst, kein Wunder das den keiner mehr sieht, weil der Explorer halt versteckte Elemente per Default ausblendet ...
Skripte sollte man auch verstehen und nicht nur blind kopieren und ausführen, dann wird man auch nicht überrascht 😁....
shebang
shebang 02.07.2025 aktualisiert um 13:56:05 Uhr
Zitat von @BiberMan:

Naja einfach nur Augen auf beim Skripte-Klauf ....
attrib +s +h "$folderPath"

Die KI hat nur gemacht, was Er gesagt hat ... vielleicht :D
Yan2021
Yan2021 02.07.2025 aktualisiert um 14:04:02 Uhr
OK und danke für den Tipp.
Ich habe halt eine KI genutzt, weil ich eben keine Ahnung habe, wie man sowas umsetzt face-wink

Aber habt Ihr auch einen Tipp für mich, wie ich es jetzt hinbekomme, dass alle MA die Verzeichnisse sehen können?

Und... merkwürdig ist es aber doch, dass ich es auf manchen Rechnern sehen kann und auf manchen nicht und sogar auf einem mit Admin-Anmeldung sehe ich es auch nicht.

Wäre toll, wenn Ihr nochmal helfen könnt. Vielleicht mit einem kleinen Script, dass "Hidden" wieder zurücksetzt???

Grüße von
Yan face-wink
BiberMan
BiberMan 02.07.2025 aktualisiert um 15:00:54 Uhr
Get-Childitem -Path "s:" -Recurse -Directory -force | %{attrib -h $_.Fullname}  
oder native ohne attrib
Get-Childitem -Path "s:" -Recurse -Directory -force | %{$_.Attributes = $_.Attributes -bxor [system.io.fileattributes]::hidden}  
Und... merkwürdig ist es aber doch, dass ich es auf manchen Rechnern sehen kann und auf manchen nicht und sogar auf einem mit Admin-Anmeldung sehe ich es auch nicht
Explorer Optionen > "Versteckte Dateien anzeigen" aktivieren...

Edit: -force Parameter ergänzt
aXasflow
aXasflow 02.07.2025 um 14:07:06 Uhr
Überall wo du versteckte Dateien dir anzeigen lässt, solltest du die Ordner sehen.

Gruß

aXas
TK1987
TK1987 02.07.2025 um 14:46:22 Uhr
Moin,

Zitat von @BiberMan:
Get-Childitem -Path "s:" -Recurse -Directory | ...  
da Get-ChildItem standardmäßig keine versteckten Elemente auflistet, muss da noch entweder der Force-Parameter oder der Attributes-Parameter ergänzt werden.

Gruß Thomas
Yan2021
Yan2021 02.07.2025 um 14:46:26 Uhr
...danke für das Skript, welches ich gleich mal testen werde.

Ihr meint doch sicher diese Einstellung hier:

versteckte dateien anzeigen

Die habe ich auf dem einen Server nun so eingestellt, aber ich sehe die Verzeichnisse noch immer nicht.

Grüße von
Yan face-wink
Yan2021
Yan2021 02.07.2025 um 14:48:07 Uhr
Zitat von @BiberMan:

Get-Childitem -Path "s:" -Recurse -Directory | %{attrib -h $_.Fullname}  
oder native ohne attrib
Get-Childitem -Path "s:" -Recurse -Directory | %{$_.Attributes = $_.Attributes -bxor [system.io.fileattributes]::hidden}  
Und... merkwürdig ist es aber doch, dass ich es auf manchen Rechnern sehen kann und auf manchen nicht und sogar auf einem mit Admin-Anmeldung sehe ich es auch nicht
Explorer Optionen > "Versteckte Dateien anzeigen" aktivieren...

...nochmal eine Frage zu diesem Skript:

gilt das dann für alle Verzeichnisse im LW "S:\"? Denn es soll nur für die ersten beiden Ebenen der Verzeichnisse gelten, die mit einer Zahl beginnen (1 - 7).

Grüße von
Yan face-wink
BiberMan
BiberMan 02.07.2025 aktualisiert um 14:50:33 Uhr
Zitat von @Yan2021:
Die habe ich auf dem einen Server nun so eingestellt, aber ich sehe die Verzeichnisse noch immer nicht.

Grüße von
Yan face-wink

Weil die Ordner gleichzeitig als "System" markiert sind werden sie nur dann gezeigt wenn auch die Option "Geschützte Ordner anzeigen ...." aktiviert ist.
BiberMan
BiberMan 02.07.2025 um 14:57:33 Uhr
Zitat von @Yan2021:
...nochmal eine Frage zu diesem Skript:

gilt das dann für alle Verzeichnisse im LW "S:\"?
Ja.
Denn es soll nur für die ersten beiden Ebenen der Verzeichnisse gelten, die mit einer Zahl beginnen (1 - 7).

Grüße von
Yan face-wink
Na dann
Get-Childitem -Path "s:\" -Directory -force | ? Name -match '^[1-7]' | %{$_.Attributes = $_.Attributes -bxor [system.io.fileattributes]::hidden}    
shebang
shebang 02.07.2025 aktualisiert um 15:00:49 Uhr
Moin,

weil ich eben keine Ahnung habe, wie man sowas umsetzt face-wink
Das ist nicht tragisch oder schlimm - niemand ist allwissend (eine KI schon gar nicht), aber baller bitte bitte nicht irgendein Code von ner KI in dein Unternehmensnetzwerk - das kann ganz böse ausgehen, wenn Du überhaupt nicht validieren kannst, was das Script eig. macht. Dann passiert exakt das face-smile

Mein Vorschlag: Frag hier - entweder ob Dir wer das Script validieren kann oder ob hier ein Mensch Dir eine Lösung anbieten kann. Und selbst dann, erst im "Labor" bzw. einem abgeschirmten Netz testen - falls dir die KI(Ich hoffe ja nicht, dass es hier so Menschen gibt, die das machen würden) ein
rm -rf / 
reinkritzelt, Du das blind auf ner Linuxbüchse ausführst, ist das OS danach kaputt, da helfen dann auch keine Scripte mehr von adminde. Blödes Beispiel, versinnbildlicht aber meine Bedenken.

Aufpassen! face-smile

Grüße

Edita:
attrib +s +h "$folderPath"
Ich wette, dass hast Du der KI nicht befohlen und sie meinte das hinzu halluzinieren zu müssen.
Yan2021
Yan2021 02.07.2025 um 15:00:26 Uhr
ok, nun sehe ich alle Verzeichnisse auch auf dem einen Server, nachdem ich diese Einstellungen gemacht habe.
Nun frage ich mich aber, ob ich doch besser das mit den farbigen Icons rückgängig mache, da hier zu viele Unsicherheiten sind.

1. muss das Verzeichnis "C:\Icons" auf jedem Rechner existieren
2. müssen diese beiden Explorer-Einstellungen an jedem Rechner und für jeden Nutzer gemacht werden.

Was denkt Ihr?

Grüße von
Yan face-wink
BiberMan
BiberMan 02.07.2025 aktualisiert um 15:04:30 Uhr
Zitat von @Yan2021:

1. muss das Verzeichnis "C:\Icons" auf jedem Rechner existieren
Wenn da deine Symbole liegen, und du die in den INIs mit dem Pfad dort angibst klar.
2. müssen diese beiden Explorer-Einstellungen an jedem Rechner und für jeden Nutzer gemacht werden.
Nein.
Was denkt Ihr?
Skript korrigieren dann geht's natürlich auch ohne Explorer Anpassungen.
Yan2021
Yan2021 02.07.2025 um 15:08:39 Uhr
Zitat von @BiberMan:

Zitat von @Yan2021:
...nochmal eine Frage zu diesem Skript:

gilt das dann für alle Verzeichnisse im LW "S:\"?
Ja.
Denn es soll nur für die ersten beiden Ebenen der Verzeichnisse gelten, die mit einer Zahl beginnen (1 - 7).

Grüße von
Yan face-wink
Na dann
Get-Childitem -Path "s:\" -Directory -force | ? Name -match '^[1-7]' | %{$_.Attributes = $_.Attributes -bxor [system.io.fileattributes]::hidden}    

Zitat von @BiberMan:

Zitat von @Yan2021:
...nochmal eine Frage zu diesem Skript:

gilt das dann für alle Verzeichnisse im LW "S:\"?
Ja.
Denn es soll nur für die ersten beiden Ebenen der Verzeichnisse gelten, die mit einer Zahl beginnen (1 - 7).

Grüße von
Yan face-wink
Na dann
Get-Childitem -Path "s:\" -Directory -force | ? Name -match '^[1-7]' | %{$_.Attributes = $_.Attributes -bxor [system.io.fileattributes]::hidden}    

Wenn ich jetzt in der Eingabeaufforderung eingebe "attrib S:\1 Basisdaten", dann sehe ich jetzt nur "S", statt vorher "SH". Das dürfte ja korrekt sein.
Aber in der 2. Ebene (S:\1 Basisdaten\1 Dokumente) sehe ich noch immer "SH".

Grüße von
Yan face-wink
Yan2021
Yan2021 02.07.2025 um 15:12:23 Uhr
@BiberMan:

Mit Skript korrigieren meinst Du, dass ich in allen Verzeichnissen der 1. und 2. Ebene jetzt nur das "h" für Hidden entfernen muss?

Da es offenbar mit einem PS-Skript nicht klappt, könnte ich das notfalls auch manuell machen. Sind zwar etwas um die 50 Verzeichnisse, aber vielleicht am Ende doch besser.

Oder hast Du noch eine Idee?

Grüße von
Yan face-wink
BiberMan
BiberMan 02.07.2025 aktualisiert um 15:24:32 Uhr
Wenn ich jetzt in der Eingabeaufforderung eingebe "attrib S:\1 Basisdaten", dann sehe ich jetzt nur "S", statt vorher "SH". Das dürfte ja korrekt sein.
Aber in der 2. Ebene (S:\1 Basisdaten\1 Dokumente) sehe ich noch immer "SH".

Das mit 2 Ebenen habe ich überlesen sorry, in dem Fall dann
Get-Childitem -Path "s:\" -Depth 1 -Directory -force | ? Name -match '^[1-7]' | %{$_.Attributes = $_.Attributes -bxor [system.io.fileattributes]::hidden}      
Einfach mal selbst mit beschäftigen lautet die Devise dann lernst du auch was davon und machst nicht nur c&p...
BiberMan
BiberMan 02.07.2025 aktualisiert um 15:28:21 Uhr
Zitat von @Yan2021:

@BiberMan:

Mit Skript korrigieren meinst Du, dass ich in allen Verzeichnissen der 1. und 2. Ebene jetzt nur das "h" für Hidden entfernen muss?

Da es offenbar mit einem PS-Skript nicht klappt, könnte ich das notfalls auch manuell machen. Sind zwar etwas um die 50 Verzeichnisse, aber vielleicht am Ende doch besser.

Oder hast Du noch eine Idee?

Die Lösung steht eigentlich schon im ersten Post ... Aus deinem generierten Skript das +h für den Ordner entfernen und fertig.
Btw. RTFM
learn.microsoft.com/de-de/windows-server/administration/windows- ...

Der Rest zum Thema wurde dir ja im letzten Thread schon mitgegeben .

Me out ...
Yan2021
Yan2021 02.07.2025 aktualisiert um 15:32:14 Uhr
nachdem ich jetzt Deinen letzten Code ausgeführt habe, stehen die Verzeichnisse der ersten Ebene wieder auf "SH"

Get-Childitem -Path "s:\" -Depth 1 -Directory -force | ? Name -match '^[1-7]' | %{$_.Attributes = $_.Attributes -bxor [system.io.fileattributes]::hidden}        

Grüße von
Yan face-wink
BiberMan
Lösung BiberMan 02.07.2025 aktualisiert um 15:45:58 Uhr
Wenn du da einmal von Hand rumwerkelst und mal mit Skript setze die Attribute so einmalig zurück ...
Get-Childitem -Path "s:\" -Depth 1 -Directory -force | ? Name -match '^[1-7]' | %{$_.Attributes = 'Directory,System'}      
Yan2021
Yan2021 02.07.2025 um 15:41:07 Uhr
sorry, aber was genau meinst Du mit "setze sie so einmalig zurück"?

Am Ende sollen beide Ebenen ja nur "S" haben und nicht mehr "H".

Grüße,
Yan
BiberMan
BiberMan 02.07.2025 aktualisiert um 15:45:08 Uhr
Am Ende sollen beide Ebenen ja nur "S" haben und nicht mehr "H".
Ich mönsch, macht doch genau das, OMG ...schwerer Fall mal wieder, ist bei dir die Klima ausgefallen?
Code lesen, nachschlagen und verstehen, ist bei dir keine Option....?!
Yan2021
Yan2021 02.07.2025 um 15:56:31 Uhr
Danke Euch... hat alles jetzt funktioniert.

Liebe Grüße von
Yan face-wink
Penny.Cilin
Penny.Cilin 02.07.2025 um 16:05:08 Uhr
Zitat von @Yan2021:

in einem anderen Thread hier hatte ich gefragt, wie ich die Icons von Verzeichnissen gegen farbige Icons austauschen kann.
Welchen anderen Thread meinst Du?

Gruss Penny.
Yan2021
Yan2021 02.07.2025 um 16:13:52 Uhr
den HIER

Grüße von
Yan face-wink
BiberMan
BiberMan 02.07.2025 aktualisiert um 16:45:21 Uhr
Zitat von @Yan2021:

den HIER

Ähm also bist du @Yan2021 auch @BN2023

Identitätskrise? Versteckspiel? Oder wieso zwei Accounts? 🤔
emeriks
emeriks 02.07.2025 aktualisiert um 17:27:03 Uhr
Am Rande:
Ich hatte im anderen Thread erwähnt, dass Ordner, für welche deren Symbol geändert werden soll, das System-Attribut gesetzt haben müssen. Nicht jene Ordner, in welchen die Symbole gespeichert sind.
Yan2021
Yan2021 03.07.2025 aktualisiert um 08:35:12 Uhr
@BiberMan:

Du hattest weiter oben ja geschrieben...

"Die Lösung steht eigentlich schon im ersten Post ... Aus deinem generierten Skript das +h für den Ordner entfernen und fertig."

In meiner ursprünglichen PS-Datei sehe ich unten die beiden Einträge:

attrib +s +h "$folderPath"    
attrib +h "$desktopIniPath"  

Beim ersten wird das +h entfernt. Das haben wir ja gestern bereits umgesetzt.
Mich interessiert jedoch noch, was die zweite Codezeile bewirkt.
Wird damit ggf. bewirkt, dass alle "desktop.ini"-Dateien versteckt werden über "h" (hidden)?

Wenn das so wäre, würde ich das nämlich gerne machen.
Wie müsste ich den gestrigen Code von Dir abändern, um zu erreichen, dass alle "desktop.ini"-Dateien, die in den ersten beiden Ebenen der Verzeichnisse liegen, die mit den Nummern 1 - 7 beginnen?

Hier nochmal Deine beiden Codes von gestern:

Get-Childitem -Path "s:\" -Depth 1 -Directory -force | ? Name -match '^[1-7]' | %{$_.Attributes = $_.Attributes -bxor [system.io.fileattributes]::hidden}        

Get-Childitem -Path "s:\" -Depth 1 -Directory -force | ? Name -match '^[1-7]' | %{$_.Attributes = 'Directory,System'}        

Würde das auch mit der folgenden Batchdatei gehen?

@echo off
setlocal enabledelayedexpansion

for /d %%D in (S:\*) do (
    if exist "%%D\desktop.ini" (  
        attrib +h "%%D\desktop.ini"  
    )
    for /d %%S in (%%D\*) do (
        if exist "%%S\desktop.ini" (  
            attrib +h "%%S\desktop.ini"  
        )
    )
)

endlocal

Ich möchte diesmal lieber vorher fragen, bevor ich einfach etwas an den Verzeichnissen anpassen... Das Theater von gestern war mir eine Lehre face-smile

Danke und Grüße von
Yan face-wink
Yan2021
Yan2021 03.07.2025 um 11:01:11 Uhr
OK... habe das Problem mit den "desktop.ini"-Dateien schon gelöst.
Sie sind jetzt auch alle versteckt...

Habe es einfach über eine Dateiliste gelöst, die ich dann direkt in der Eingabeaufforderung einkopiert habe mit dem Code:

attrib +h "S:\1 Basisdaten\1 Dokumente\desktop.ini"  

Das lief schnell durch und jetzt sind alle "desktop.ini" Dateien versteckt.

Grüße von
Yan face-wink
emeriks
emeriks 03.07.2025 um 16:56:26 Uhr
Hexenwerk!