Ordner per skript kopieren

aemonblackfyre

Captain
Registriert
Dez. 2006
Beiträge
3.321
hallo
wir haben neuerdings kyocera Multigunftionsdrucker, welche bei der Installation die Einrichtung unter AppData/Roaming des Admins ablegen. Wir würden jetzt gerne den Ordner aus dem Adminprofil in die bestehenden Profile und den Default Ordner kopieren und das als ein-Klick skript einsetzen.
Vermutlich ist Powershell am besten geeignet, batch wäre aber genauso gut.

Es müsste also ein skript sein, welches den Ordner
C:/Users/<ausführender User>/AppData/Roaming/Kyocera
nach
C:/Users/<alle User>/AppData/Roaming/Kyocera kopiert.

leider ist die Frage etwas zu komplex zum googlen bzw ich hab bisher noch nichts passendes gefunden.

Zur recherche wäre das Buch Powershell in depth vorhanden es würden also schon ein paar tips reichen, nach welchen Stichworten ich suchen muss.

danke schonmal
 
danke schonmal!

davei müsste nur noch <ausführender user> in eine variable geändert werden damit es eben auch aus dem korrekten profil bezogen wird.

wie würde man das noch abändern?
 
aemonblackfyre schrieb:
danke schonmal!

davei müsste nur noch <ausführender user> in eine variable geändert werden damit es eben auch aus dem korrekten profil bezogen wird.

wie würde man das noch abändern?

siehe script, ansonsten siehe Link zu WINFAQ
 
Wäre es nicht einfacher, die Kyos das Ganze zentral auf eine Freigabe schreiben zu lassen? Oder sonst in einen zentralen Ordner.

Aus einem Profil ausbrechen ist in den meisten Fällen eine eher schlechte Idee.

PS. Powershell kennt % als Delimiter nicht. Das geht nur schief. Dort muß man $Env:<Variable> sagen, also zB $Env:UserProfile für das aktuelle Benutzerprofil.
 
  • Gefällt mir
Reaktionen: Micha45 und areiland
das ist mir beim ausführen auch aufgefallen er versucht dann einfach
Code:
Quelle: C:\Users\<mein acc>\Desktop\%userprofile%\AppData\Roaming\Kyocera\
Ziel : C:\Users\<mein acc>\Desktop\%allusersprofile%\AppData\Roaming\Kyocera\
so auszuführen.


Code:
$quelle="$env:userprofile/AppData/Roaming/Kyocera"
$ziel="$env:allusersprofile/AppData/Roaming/Kyocera"

Robocopy $quelle $ziel
hiermit kopiert er den korrekten Ordner nach C:\ProgramData\AppData\Roaming\Kyocera

wie würde denn die passende variable aussehen für alle profile oder alle appdata ordner?

@RalphS:
Der Treiber greift wohl auf dateien in diesem Ordner zu um zu wissen, von welchem Scanner er Scannen soll, ob das ein lokaler per USB verbundener ist, einer per LAN und wie genau gescannt werden soll. Darum wäre es gut, wenn die Einstellungen immer pro Computer übernommen werden würden.
Die Idee sieht so aus, das man erst den Treiber installiert und dann das Skript ausführt um den Scanner direkt für alle User nutzbar zu machen
 
Das verstehe ich nicht ganz.

Gescannt wird offenbar einen bestimmten Ordner - den im Profil des installierenden Users. Und dies mutmaßlich eben pro Computer. So ein Skript ist und bleibt aber eine lokale Angelegenheit.

Das Skript kopiert [Kopiert? Warum nicht verschieben?] dann immer wieder auf dem einen lokalen Computer von User nach AllUser. Und es muss nach jedem Scannen gemacht werden. Ineffizient.

Warum also muss es lokal überall dieser AllUsers-Ordner sein; cui bono? Oder mehr: »Ein Unterschied der keinen Unterschied bewirkt ist kein Unterschied.«
Bestände (um nicht ein den Scaneinstellungen selbst Hand anzulegen - wo man auch gleich auf AllUsers wird einrichten können…) mit einem HardLink (Junction) im AllUsers-Ordner eine einfachere Lösung dort auf die gescannten Files zuzugreifen?

Mir ist die Idee hinter der Maßnahme immer noch schleierhaft.

CN8
 
nein die Einstellungen zum Scannen liegen unter AppData und beim einrichten werden diese Einstellungen nur bei dem Admin Acc abgelegt. Wenn jetzt aber mehrere Nutzer an dem PC sind muss man entweder händisch den Inhalt von AppData/Roaming/Kyocera in den AppData Pfad der User verschieben oder pro User die Software ausführen und dem Treiber sagen, welchen Scanner er benutzen soll.

Darum möchte ich nachdem es bei einem User (einem Adminacc) eingerichtet wurde diese config bei allen anderen Nutzern und im Default Ordner hinterlegen damit auch zukünftige Nutzer diese config übernehmen.

PowerShell:
Get-Childitem C:/Users -Directory -exclude $env:userprofile | Foreach-Object { Copy-Item -Path $env:userprofile\AppData\Roaming\Kyocera -destination "$($_.Fullname)\AppData\Roaming\Kyocera"}
Momentan bin ich jetzt hier angekommen. Das skript listet mir die Userprofile auf, exkludiert das Quellprofil und kopiert in jedes profil den Ordner Kyocera nach Roaming\Kyocera ich müsste aber wohl den destination pfad auf AppData\Roaming beschränken. selbst dann wird aber der inhalt des ordners nicht mitgenommen. hat hier jemand tipps?
PowerShell:
Get-Childitem C:/Users -Directory -exclude $env:userprofile | Foreach-Object { Copy-Item -Recurse -Path $env:userprofile\AppData\Roaming\Kyocera -destination "$($_.Fullname)\AppData\Roaming\"}
hiermit klappt es. -recurse hat gefehlt und wie gesagt der pfad
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Micha45
Zurück
Oben