Legen Sie den Speicherort für spezielle Ordner mit PowerShell fest

8

Als Administrator möchte ich den Standardspeicherort spezieller Ordner (Dokumente, Musik, Downloads ...) in einen anderen Pfad ändern. Ich kann das manuell tun, aber ich würde gerne ein PowerShell-Skript dafür haben.

Gibt es ein PS-Objekt, das Funktionen dafür bereitstellt? Wie kann ich es tun? Danke.

    
SuperJMN 07.09.2014, 10:47
quelle

2 Antworten

17

PowerShell verfügt nicht über ein Cmdlet, mit dem Sie es sofort ausführen können (soweit ich weiß), aber Sie können P / Invoke verwenden, um die Shell-Funktion SHSetKnownFolderPath aufzurufen. Ich habe eine Wrapper-Funktion namens Set-KnownFolderPath erstellt, die es tut:

%Vor%

Benutze es so:

%Vor%     
Eric Eskildsen 07.09.2014, 11:30
quelle
1
___ tag123powershell ___ PowerShell ist ein Befehlszeilen- und Skriptprogramm für Windows. Verwenden Sie dieses Tag nur für Fragen zum Schreiben und Ausführen von PowerShell-Skripts. Programmierfragen speziell für die plattformübergreifende Version PowerShell Core (Windows, macOS, Linux) sollte mit [powershell-core] gekennzeichnet werden. Fragen zur Systemverwaltung sollten auf SuperUser gestellt werden. ___ tag123path ___ Ein Pfad, die allgemeine Form eines Dateinamens oder eines Verzeichnisnamens, gibt einen eindeutigen Speicherort in einem Dateisystem an. In vielen Linux- und Unix-ähnlichen Betriebssystemen gibt die Variable PATH (alle Großbuchstaben) die Verzeichnisse an, in denen ausführbare Programme gesucht werden. ___ qstnhdr ___ Legen Sie den Speicherort für spezielle Ordner mit PowerShell fest ___ answer25709702 ___

PowerShell verfügt nicht über ein Cmdlet, mit dem Sie es sofort ausführen können (soweit ich weiß), aber Sie können P / Invoke verwenden, um die Shell-Funktion SHSetKnownFolderPath aufzurufen. Ich habe eine Wrapper-Funktion namens %code% erstellt, die es tut:

%Vor%

Benutze es so:

%Vor%     
___ tag123specialfolders ___ "Spezielle Ordner" bezieht sich auf Verzeichnisse im Windows-Betriebssystem, die erweiterte Funktionen in der Benutzeroberfläche bieten. Prominente Beispiele sind die Ordner "Desktop", "Startmenü", "Eigene Dateien" und "Schriften". ___ qstntxt ___

Als Administrator möchte ich den Standardspeicherort spezieller Ordner (Dokumente, Musik, Downloads ...) in einen anderen Pfad ändern. Ich kann das manuell tun, aber ich würde gerne ein PowerShell-Skript dafür haben.

Gibt es ein PS-Objekt, das Funktionen dafür bereitstellt? Wie kann ich es tun? Danke.

    
___ answer26533346 ___

Das ist in der Tat eine großartige Funktion! Allerdings änderte ich es ein wenig für mich selbst, vielleicht finden Sie das auch nützlich.

%Vor%

Wie Sie hier sehen können, prüfe ich zunächst die Existenz des Pfades und erstelle den Pfad, falls er nicht existiert.

Ich habe den "return" -Befehl weggelassen, so dass ich immer noch die $ Path-Variable verwenden kann. Mit dem Attribut-Befehl können Sie dem speziellen Ordner sein Original-Icon zurückgeben. Schließlich verschiebe ich alle vorhandenen Dateien vom alten auf den neuen Speicherort. Sie können den alten Ordner auch optional entfernen, was ich empfehlen würde, wenn keine doppelten speziellen Ordner in den Benutzerdateien vorhanden sind.

Das einzige Problem dabei ist, dass Move-Item davon ausgeht, dass sich der alte Ort an der $ HOME-Variablen befindet. Auch wenn Sie die Funktion zum Ändern verwenden würden, sagen wir den Ordner Dokumente zu C: \ Benutzer \ John \ Dokumente, würde es auch den Inhalt dieses Ordners entfernen, da die letzte Zeile des Codes die Variable $ HOME-special-Ordner löscht.

Aber vielleicht kann jemand eine elegantere Lösung für dieses Hindernis finden. Nochmals vielen Dank für dieses Juwel einer Funktion!

    
___
Troy Oosterwijk 25.10.2014 14:15
quelle