Saya ingin menulis skrip PowerShell yang mendapatkan parameter berikut sebagai input:
Folder untuk menyalin dari, ekstensi memungkinkan, folder untuk menyalin dan boolean menunjukkan jika perubahan harus me-restart IIS, nama pengguna dan kata sandi.
Cmdlet apa yang harus saya perhatikan mengingat saya menyalin ke server jauh?
Bagaimana cara membaca parameter menjadi variabel?
Bagaimana cara memulai kembali IIS?
Karena saya ingin menyalin beberapa folder, bagaimana cara saya menulis skrip PowerShell yang memanggil skrip PowerShell?
powershell
the_drow
sumber
sumber
Jawaban:
Get-ChildItem
memungkinkan Anda untuk membuat daftar file dan direktori, termasuk secara rekursif dengan filter nama file.Copy-Item
memungkinkan Anda untuk menyalin file.Ada banyak tumpang tindih dalam hal memilih file, seringkali
Copy-Item
dengan sendirinya sudah cukup tergantung pada detail dari apa yang Anda butuhkan (mis. Anda ingin mempertahankan struktur folder?)Untuk menyalin semua
*.foo
dan*.bar
dari StartFolder ke DestFolder:Jika Anda perlu mempertahankan struktur folder, hal-hal menjadi lebih sulit karena Anda perlu membangun nama folder tujuan, seperti:
Tetapi
robocopy
kemungkinan akan lebih mudah:Pada akhirnya cara memilih akan tergantung pada perincian dari apa yang dibutuhkan.
(Dalam contoh di atas saya telah menghindari alias (misal
Copy-Item
daripadacopy
) dan secara eksplisit menggunakan nama parameter bahkan jika mereka posisional.)sumber
Copy-Item -path "C:\Users\username\Pictures\" -include "*.JPG", "*.PNG" -Destination "D:\"
dengan dan tanpa -kembali - tidak ada yang terjadiSaya tidak bisa membahas bagian IIS, tetapi salinan file sambil mempertahankan struktur direktori bisa jauh lebih sederhana daripada yang ditunjukkan dalam jawaban lain:
The
-Container
argumen adalah bagian ajaib yang akan meniru struktur di tujuan seperti di sumber.sumber
-Include
... meskipun saya bisa menyalin semuanya tanpa-Include
Satu-satunya solusi yang berhasil bagi saya adalah
Solusi lain yang menggunakan
-Include
parameter tidak berfungsi.sumber
Seperti beberapa orang yang disebutkan di sini -Include tidak berfungsi.
Untuk membuatnya berfungsi dengan folder bersarang saya menggunakan pendekatan dua langkah: 'filter' + hapus folder kosong
sumber
Jika Anda menggunakan IIS7, Anda dapat menggunakan komponen asli untuk mereplikasi konten antara server IIS: http://blog.theplanet.com/2010/05/18/mirroring-server-content-and-configuration-in-iis7/
sumber