Frage

Ich möchte ein PowerShell-Skript verwenden, um Aufgaben zu automatisieren, die mit dem Benutzer zusammenhängt, wenn sich der Benutzer anmeldet.

Manchmal hat ein Benutzer seinen Dokumentenordner vom Standardspeicherort verschoben. Wie kann ich den Speicherort des Dokumentenordner des Benutzers in PowerShell mit einer Methode ermitteln, die für alle speziellen Ordnern funktioniert?

Ich habe versucht, ShgetKNOWNFOLDERPATH-Anrufe von Powershell auf der Basis von Lee Holmes zu verwenden Arbeit

AS PINVOKE-Website C # -Muster Verwenden Sie keinen StringBuilder, ich habe angenommen, dass es nicht erforderlich war, und der BUILDER + "-Uing" -Referenzen

generasacodicetagpre.

Ich habe auch versucht, neue Pinvoke von hier zu verwenden mit "shell32.dll" als lib-Wert und

generasacodicetagpre.

als Signaturwert, dann mit von PowerShell

generasacodicetagpre.

Ich endet mit diesem Fehler

generasacodicetagpre.

Ich verstehe nicht, wo ich bei beiden Versuchen schief gelangt.

Lösung:
Windows7Library Binary gefunden von Kayasax auf CodePlex arbeitet für faule Menschen wie mich, oder David Heffernans-Skriptlet, das mehr Anpassungen ermöglicht, kann jedoch einige Handarbeit benötigen, wenn Sie benutzerdefinierte Spezialordner verwenden, aber anpassender, beide Antworten sind gültig!

War es hilfreich?

Lösung

Es ist einfacher, den Niedrigstufen-P / Rufen in C # -Code aufzuwickeln, als es zu versuchen soll, es direkt von PowerShell anzurufen.Hier habe ich die PINVOKE.NET-Erklärungen genommen und in eine einfache Methode eingewickelt, die einen bekannten Ordner-GUID akzeptiert und den Pfad zurückgibt.

generasacodicetagpre.

Beispielnutzung

generasacodicetagpre.

Ich kenne ziemlich viel nichts über Powershell, also bin ich zuversichtlich, dass ein erfahrener Benutzer dies auf eine idomatische Powershell-Art und Weise einschließen kann.Ich bin jedoch sicher, dass das grundlegende Konzept des Handlings des etwas gnarlierlichen P / in den C # -Codes aufgerufen wird, und eine höhere Schnittstelle zum Powershell-Verbraucher darstellt, ist der richtige Weg, um dieses Problem anzugehen.

Andere Tipps

Sie können alle speziellen Ordner mit diesem Befehl auflisten:

generasacodicetagpre.

Wenn Sie einen physischen Pfad erhalten möchten, verwenden Sie dies:

generasacodicetagpre.

Ich habe hier ein Modul gefunden, das zu tun scheint, was Sie möchten

Wenn der Benutzer seinen Dokumentordnerpfad verschoben hat, können Sie den Ort nicht erhalten, da er nach dem Bewegen an ein anderes Standort als normaler Ordner nicht Systemordner behandelt wird.Wenn Sie jedoch die gesamte Liste der Systemordner wünschen, können Sie versuchen, als @kayasax vorgeschlagen zu werden.

generasacodicetagpre.

Sie können auch den Namen des anderen Systemordners anstelle von "MyDocuments" verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top