Chciałbym napisać skrypt PowerShell, który pobiera następujące dane wejściowe:
Folder do kopiowania, rozszerzenia umożliwiają, folder do kopiowania i wartość logiczna wskazująca, czy zmiana powinna zrestartować IIS, nazwę użytkownika i hasło.
Na jakie polecenia cmdlet powinienem patrzeć, biorąc pod uwagę, że kopiuję na zdalny serwer?
Jak odczytać parametry do zmiennych?
Jak zrestartować IIS?
Biorąc pod uwagę, że mogę chcieć skopiować wiele folderów, jak napisać skrypt PowerShell, który wywołuje skrypt PowerShell?
powershell
the_drow
źródło
źródło
Odpowiedzi:
Get-ChildItem
pozwala wyświetlić listę plików i katalogów, w tym rekurencyjnie z filtrami nazw plików.Copy-Item
pozwala skopiować plik.Istnieje wiele nakładek w zakresie wybierania plików, często
Copy-Item
samo w sobie jest wystarczające w zależności od szczegółów tego, czego potrzebujesz (np. Czy chcesz zachować strukturę folderów?)Aby skopiować wszystko
*.foo
i*.bar
z StartFolder do DestFolder:Jeśli chcesz zachować strukturę folderów, sprawy stają się trudniejsze, ponieważ musisz zbudować nazwę folderu docelowego, na przykład:
Ale
robocopy
prawdopodobnie będzie łatwiej:Ostatecznie sposób wyboru zależy od szczegółów tego, co jest potrzebne.
(W powyższym unikałem aliasów (np.
Copy-Item
Zamiastcopy
) i jawnie używam nazw parametrów, nawet jeśli są one pozycyjne.)źródło
Copy-Item -path "C:\Users\username\Pictures\" -include "*.JPG", "*.PNG" -Destination "D:\"
z powtórzeniem i bez - nic się nie dziejeNie mogę zająć się częścią IIS, ale kopiowanie pliku przy zachowaniu struktury katalogów może być o wiele prostsze niż pokazano w innych odpowiedziach:
-Container
Argumentem jest magia część, która będzie replikować struktury w celu turystycznym, jak to jest w źródle.źródło
-Include
... chociaż mogę go zmusić do skopiowania wszystkiego bez-Include
Jedynym rozwiązaniem, które dla mnie zadziałało, jest
Inne rozwiązania wykorzystujące
-Include
parametr nie działały.źródło
Jak niektórzy wspominali tutaj -Include nie działa.
Aby działać z zagnieżdżonymi folderami, zastosowałem dwa kroki: „filtruj” + usuń puste foldery
źródło
Jeśli używasz IIS7, możesz użyć rodzimego komponentu do replikacji treści między serwerami IIS: http://blog.theplanet.com/2010/05/18/mirroring-server-content-and-configuration-in-iis7/
źródło