Zum Inhalt wechseln


Foto

Variablen Namen eines Ordners auslesen und diesen dann als Ziel benutzen


  • Bitte melde dich an um zu Antworten
15 Antworten in diesem Thema

#1 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 12. Dezember 2016 - 09:40

Folgendes Szenario: Ich habe einen Ordner, in dem wird ein neuer Ordner erstellt, der immer einen anderen Namen hat. Ist der Ordner erstellt, soll der Name des Ordners ausgelesen werden und für einen Kopiervorgang einer Datei benutzt werden. Um es genauer zu erklären, ich habe eine Datei, die per Skript in diesen Ordner kopiert werden soll, da aber der Ordner immer einen anderen Namen bekommt, kann ich den Namen im Skript nicht hinterlassen. Deshalb müsste der Name des Ordners erst ausgelesen werden und dann für den Kopiervorgang als Ziel benutzt werden. Ist das möglich?


Bearbeitet von Robmantuto, 12. Dezember 2016 - 09:41.


#2 NilsK

NilsK

    Expert Member

  • 11.790 Beiträge

 

Geschrieben 12. Dezember 2016 - 09:53

Moin,

 

grundsätzlich sollte das möglich sein, aber aus deiner Beschreibung ist nicht zu entnehmen, was da überhaupt passiert.

 

Wer oder was legt den Ordner an? Und wer oder was führt den Kopiervorgang aus? Und von was für einer Skriptsprache/-umgebung reden wir hier?

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#3 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 12. Dezember 2016 - 11:14

Der Ordner wird von Windows erstellt und hat die SID des angemeldeten Users, ist aber irrelevant, da es eigentlich darum geht, den Namen auszulesen, egal wie dieser zustande kam. Den Kopiervorgang würde ich dann per Skript ausführen wollen und würde das Ganze in PowerShell umsetzen wollen.



#4 NilsK

NilsK

    Expert Member

  • 11.790 Beiträge

 

Geschrieben 12. Dezember 2016 - 12:19

Moin,

 

du solltest dir angewöhnen, Nachfragen nicht einfach so abzutun. Sonst gibt man es schnell auf, dich zu unterstützen.

 

Windows legt ja nicht einfach so Ordner an. Wer veranlasst es auf welchem Weg dazu? Wenn es beispielsweise ein Skript ist, das das tut, dann könnte sich deine Ergänzung ja einfach dort einklinken.

 

Grundsätzlich könnte man so vorgehen:

  • Die vorhandenen Ordner auslesen und den neuen Ordner identifizieren
  • Den neuen Ordner in eine Variable speichern und das Attribut Name verwenden
  • In den so identifizierten Ordner die Datei kopieren

Hilft dir nicht weiter? Siehste. Genauer kann ich das aber leider deinen Angaben nicht entnehmen.

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#5 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 12. Dezember 2016 - 12:51

Ich tue gar nichts ab, für mich ist es in dem Fall irrelevant, ich hätte auch sagen können, ich habe einen Ordner, der ist bereits da und ich möchte in Powershell ein Skript schreiben, das mir den Namen dieses Ordners ausliest und im Skript verwendet, um eine Datei per Befehl, im Skript, in diesen ausgelesenen Ordner kopiert. Natürlich könnte man an diesem Punkt fragen, warum man nicht gleich den Pfad mit dem Namen des Ordners im Skript einträgt, jedoch war das nicht meine Frage. Meine Frage war, gibt es in Powershell diese Möglichkeit und mit welchen Befehlen kann man das umsetzen?

 

Gruß, Rob



#6 NilsK

NilsK

    Expert Member

  • 11.790 Beiträge

 

Geschrieben 12. Dezember 2016 - 13:10

Moin,

 

http://lmgtfy.com/?q...get folder name

 

Sorry, aber anders kann ich das nicht beantworten. Wenn du konkrete Fragen hast, dann stell sie bitte auch konkret.

 

Sonst ist hier Schluss für mich,

 

Nils


  • MKdrei gefällt das

Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#7 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 12. Dezember 2016 - 16:03

Was soll denn nicht daran konkret sein? Ich denke, ich habe es gut erklärt. Nochmal für dich: Mit welchem Befehl kann ich den Namen der Ordners B, der sich im Ordner A unter "MeinPfad" befindet, auslesen und diesen Namen für einen weiteren Befehl, nämlich Kopieren einer Datei von einem Stick nach "Meinpfad\Name des Ordners, der ausgelesen wurde", verwenden. Und bitte ein Beispiel. Danke.


Bearbeitet von Robmantuto, 12. Dezember 2016 - 16:06.


#8 magheinz

magheinz

    Newbie

  • 1.210 Beiträge

 

Geschrieben 12. Dezember 2016 - 17:25

Name DES Ordners oder Name DER Ordner?

 

get-childitem könnte auch helfen.



#9 BOfH_666

BOfH_666

    Junior Member

  • 93 Beiträge

 

Geschrieben 12. Dezember 2016 - 17:28

Wow .... mit der Attitude kommst Du bestimmt gut durchs Leben. Na dann versuchs doch mal mit Get-ChildItem. Die komplette Hilfe zu diesem cmdlet bekommst Du mit:

Get-Help Get-ChildItem -Full

Viel Spaß!


live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#10 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 14. Dezember 2016 - 09:44

$user = [Environment]::UserName)
([Security.Principal.NTAccount]($user)).Translate([Security.Principal.SecurityIdentifier]).Value

Damit bekomme ich auf jeden Fall die SID raus. Wie setze ich dieses Information für den Kopiervorgang ein?

Erläutere es nochmal am konkreten Beispiel:

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.


Bearbeitet von Robmantuto, 14. Dezember 2016 - 09:45.


#11 BOfH_666

BOfH_666

    Junior Member

  • 93 Beiträge

 

Geschrieben 14. Dezember 2016 - 09:58

... ich zwar auch immer noch nicht verstanden, wo Du dann hinwillst, aber vielleicht hilft Dir das hier weiter:

$user = $Env:UserName
$SID = ([Security.Principal.NTAccount]($user)).Translate([Security.Principal.SecurityIdentifier]).Value
$SID
$ZielPfad = "C:\Windows\System32\GroupPolicyUsers\SID$SID\User\"
$ZielPfad

live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#12 PowerShellAdmin

PowerShellAdmin

    Board Veteran

  • 1.127 Beiträge

 

Geschrieben 14. Dezember 2016 - 10:12

Die Anforderungen klingen im Ansatz sehr einfach, wer eine fertig Lösung will, soll halt einen Dienstleister kontaktieren.

Aber selbst diese sind noch nichtmal richtig und verständlich formuliert.

 

:nene:

 

Der Bereich hier ist zur Unterstützung und nicht fürn gedeckten Tisch!


Bearbeitet von PowerShellAdmin, 14. Dezember 2016 - 10:13.

Möge die Macht der PS mit Dir sein.


#13 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 14. Dezember 2016 - 10:23

Ne Frage, warum das zweite $SID hinter $SID = ([Security.Principal.NTAccount]($user)).Translate([Security.Principal.SecurityIdentifier]).Value
$SID? Ich sehe schon, dient nur dazu da, um die SID nochmal auszugeben, genauso wie beim Zielpfad. Hat funktioniert, danke.

 

Hier ist doch ein SID zu viel, kann es sein?

...Users\SID$SID\User\"


Bearbeitet von Robmantuto, 14. Dezember 2016 - 10:32.


#14 BOfH_666

BOfH_666

    Junior Member

  • 93 Beiträge

 

Geschrieben 14. Dezember 2016 - 13:19

C:\Windows\System32\GroupPolicyUsers\SID(hier mir nicht bekannt bzw. müsste per Skript ausgelesen werden)\User\

 

 

Hier ist doch ein SID zu viel, kann es sein?

 

Ich kann auch nur mit dem arbeiten, was Du mir anbietest .... statt der Erklärung in Klammern, hab ich eben die ausgelesene SID eingefügt. Wenn Du's nicht brauchst, lass'es weg.

 

Es schmerzt übrigens nicht, wenn man das ein oder andere in der Konsole oder in der ISE einfach ausprobiert   ;)  :rolleyes:


live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#15 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 14. Dezember 2016 - 14:56

Nee, ist klar, habe ich auch getestet. Die Klammern sollten es näher erklären, ist ja auch egal.


Bearbeitet von Robmantuto, 14. Dezember 2016 - 16:27.