Powershell, Ordnernamen auslesen und weiterverwenden

Robmantuto

Ensign
Registriert
Apr. 2008
Beiträge
141
Ich suche nach einer Möglichkeit per Skript den Namen eines Ordners auszulesen, der sich an einem bestimmten Ort befindet, auszulesen und weiter zu verwenden. Dieser Ordner ist der einzige Ordner, der sich dort befindet. Ist der Name des Ordners ausgelesen, soll der Name für einen Kopiervorgang weiter verwendet werden. D.h.
Name auslesen
Ergebnis: Name des Ordners
Dann im gleichen Skript der weitere Befehl:
Kopiere die Datei aus dem Pfad Stick\Daten\Beispieldatei.txt nach Pfad System\Ordner\Ordner"Name des Ordners, der ausgelesen wurde".
Das Ganze brauche ich, da der Ordnername, der ausgelesen wird, immer einen anderen Namen hat (hier die SID vom angemeldeten User) und deshalb kann ich leider im Skript keinen festen Pfad mit dem Ziel-Ordner hinterlassen. Hoffe, das ist verständlich.
 
(Get-ChildItem -Directory "$path").FullName

Bzw. wenn es dir um die SID geht kannst du die auch vorher bestimmen:
([Security.Principal.NTAccount]($user)).Translate([Security.Principal.SecurityIdentifier]).Value
Wobei $user der Username oder Domain und Username ist, z.B. $user = ([Environment]::UserDomainName + "\" + [Environment]::UserName)

Ist vielleicht etwas ausfallsicherer als per Ordner
 
Zuletzt bearbeitet: (SID ergänzt)
Pack ich das Ganze in einer Funktion oder wie verwende ich dann das Ausgelesene für den Kopiervorgang?
 
Zuletzt bearbeitet:
$pfad = (Get-ChildItem -Directory "$pfad_wo_der_ordner_drin_liegt").FullName
Copy-Item 'Stick\Daten\Beispieldatei.txt' $pfad
 
Ok, der Befehl
[Security.Principal.NTAccount]($user)).Translate([Security.Principal.SecurityIdentifier]).Value
Wobei $user der Username oder Domain und Username ist, z.B. $user = ([Environment]::UserDomainName + "" + [Environment]::UserName)
spuckt mir auch meinen Orndernamen aus, kann aber dieses Ergebnis irgendwie nicht einsetzen.
Ich erkläre es nochmal am konkreten Beispiel, wie es funktionieren soll.
Ich habe den Zielort: C:\Windows\System32\GroupPolicyUsers\SID(hier mir nicht bekannt bzw. müsste per Skript ausgelesen werden)\User\
Dorthin soll die Registry.pol vom Stick kopiert werden.

Habe an folgendes gedacht:
$ID = $env:username
([Security.Principal.NTAccount]($user)).Translate([Security.Principal.SecurityIdentifier]).Value
Copy-Item "STICK:\Daten\Registry.pol" "C:\Windows\System32\GroupPolicyUsers\$ID\User"

So funktionierts es aber nicht, mache bestimmt was falsch.
Ergänzung ()

So funktioniert es:
$user = $Env:UserName
$SID = ([Security.Principal.NTAccount]($user)).Translate([Security.Principal.SecurityIdentifier]).Value
$ZielPfad = "C:\Windows\System32\GroupPolicyUsers\$SID\User"
Copy-Item "STICK:\Daten\Registry.pol" $ZielPfad
 
Zuletzt bearbeitet:
Dann freue ich mich, dass es geklappt hat. Ich dachte du suchst nur die Befehle, deswegen habe ich das etwas kurz aufgeschrieben.

Aber du hast ja herausgefunden, wie du das in variablen speicherst und nutzt :)
 
Zurück
Oben