Ich möchte ein Powershell-Skript schreiben, das die folgenden Parameter als Eingabe erhält:
Ordner zum Kopieren, Erweiterungen zulassen , Ordner zum Kopieren und ein Boolescher Wert, der angibt, ob die Änderung IIS, Benutzername und Kennwort neu starten soll.
Welche Cmdlets sollte ich beachten, wenn ich bedenke, dass ich auf einen Remote-Server kopiere?
Wie lese ich die Parameter in Variablen ein?
Wie starte ich IIS neu?
Wie schreibe ich ein Powershell-Skript, das ein Powershell-Skript aufruft, da ich möglicherweise mehrere Ordner kopieren möchte?
powershell
the_drow
quelle
quelle
Antworten:
Get-ChildItem
Ermöglicht das Auflisten von Dateien und Verzeichnissen, auch rekursiv mit Dateinamenfiltern.Copy-Item
ermöglicht es Ihnen, eine Datei zu kopieren.Es gibt viele Überschneidungen bei der Auswahl der Dateien, oft reicht dies
Copy-Item
allein aus, abhängig von den Details dessen, was Sie benötigen (z. B. möchten Sie die Ordnerstruktur beibehalten?).So kopieren Sie alle
*.foo
und*.bar
von StartFolder nach DestFolder:Wenn Sie die Ordnerstruktur beibehalten müssen, wird es schwieriger, weil Sie den Namen des Zielordners erstellen müssen.
Ist
robocopy
aber wahrscheinlich einfacher:Am Ende hängt die Art der Auswahl von den Details ab, die benötigt werden.
(Oben habe ich Aliase vermieden (z. B.
Copy-Item
anstattcopy
) und explizit Parameternamen verwendet, auch wenn sie positionell sind.)quelle
Copy-Item -path "C:\Users\username\Pictures\" -include "*.JPG", "*.PNG" -Destination "D:\"
mit und ohne - Rückschritt - nichts passiertIch kann den IIS-Teil nicht adressieren, aber die Dateikopie unter Beibehaltung der Verzeichnisstruktur kann viel einfacher sein als in den anderen Antworten gezeigt:
Das
-Container
Argument ist der magische Teil, der die Struktur im Ziel so repliziert, wie sie sich in der Quelle befindet.quelle
-Include
-Include
Die einzige Lösung, die für mich funktioniert hat, ist
Andere Lösungen, die
-Include
Parameter verwenden, haben nicht funktioniert.quelle
Wenn Sie IIS7 verwenden, können Sie native Komponenten verwenden, um Inhalte zwischen IIS-Servern zu replizieren: http://blog.theplanet.com/2010/05/18/mirroring-server-content-and-configuration-in-iis7/
quelle
Wie einige Leute hier erwähnt haben - Include funktioniert nicht.
Damit es mit verschachtelten Ordnern funktioniert, habe ich zwei Schritte ausgeführt: 'filtern' + leere Ordner löschen
quelle