Cały czas czytam, że PowerShell jest drogą przyszłości. Kiedy został wydany po raz pierwszy, zrobiłem całą masę wirtualnych laboratoriów, ale od tego czasu nadal nie korzystałem z niego w środowisku produkcyjnym. Wiem, że nadejdzie dzień, kiedy zajmę się systemami operacyjnymi, w których jest już zainstalowany, więc chcę być gotowy.
Chcę wiedzieć:
- Czy używasz tego?
- Jak przebiegał proces ładowania systemu za pomocą programu PowerShell?
- Jakie rodzaje zadań związanych z administrowaniem systemem zostały przez Ciebie skrypty?
- Jestem administratorem bazy danych SQL Server. Jakie są z tym fajne rzeczy?
Wygląda na to, że wszyscy zgadzają się, że Microsoft naciska tak mocno, ale nikt tak naprawdę tego nie używa. Chcę usłyszeć od administratorów systemu, którzy używają go do codziennych zadań i dzielą się niektórymi przykładami kodu.
windows
windows-server-2008
windows-server-2003
sql-server
powershell
Nick Kavadias
źródło
źródło
Odpowiedzi:
Microsoft robi wszystko, co w jego mocy, aby PowerShell stał się wyborem dla zaawansowanych użytkowników i autorów automatyzacji na całym świecie. Dawno minęły czasy kompilowania kodu w .NET, aby zrobić to samo, teraz potrzebujesz tylko notepad.exe i google. Jesteśmy wielkimi fanami tego w biurze, zwłaszcza że konsola zarządzania programu Exchange 2007 NIE zawiera wszystkiego, co można zrobić w programie PowerShell. Microsoft celowo nie wdrożył rzeczy, które są wykonywane tylko raz na jakiś czas, łatwiejszych do opracowania w ten sposób, co wręcz wymusza jego użycie, jeśli masz coś przypominającego złożone środowisko.
Zarządzanie nowszą generacją produktów Microsoft (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) ma bardzo bogate zaczepy PowerShell. Po wdrożeniu Remote Powershell (PowerShell 2.0 IIRC) z Server 2008 R2 stanie się WIĘCEJ przydatny dla autorów automatyzacji.
Co z tym zrobiliśmy:
Tak więc, PowerShell będzie z nami już od dłuższego czasu.
EDYCJA : Dodanie próbki kodu, ponieważ był wymagany
Pobiera to plik CSV utworzony za pomocą skryptu perl i aktualizuje zestaw grup. Jeśli grupa już istnieje, zastępuje członkostwo członkostwem określonym w pliku. Jeśli grupa nie istnieje, tworzy ją. To jest synchronizacja w jedną stronę. Ponadto, nie całkiem w produkcji jeszcze, ale blisko.
źródło
Biorąc pod uwagę, że produkty serwerowe Microsoftu od samego początku będą miały włączoną obsługę PowerShell (uważam, że następna wersja Exchange ma całą konfigurację dostępną za pośrednictwem PowerShell) i że książki takie jak PowerShell w praktyce opisują kilka świetnych sposobów automatyzacji monotonnych zadań, chyba uzasadnione jest sugerowanie, że PowerShell będzie jeszcze przez pewien czas dominującą technologią na serwerze Windows.
źródło
Polecam Scott Hanselman za Podcast # 162 . Wygląda na to, że wszystkie zespoły serwerów Microsoft są „zmuszone” do dostarczenia poleceń cmdlet programu PowerShell, a także do przestrzegania jednej, spójnej składni.
Również osoby trzecie, takie jak VMWare, przyjmują to
Krótko mówiąc, uważam, że PowerShell od wersji 2.0 poważnie zajmuje się zastępowaniem plików wsadowych dla wszystkich zadań oprócz najbardziej trywialnych.
źródło
Dziesięć skryptów PowerShell, których używam jako administrator bazy danych SQL Server (wszystkie są opisane / opublikowane na moim blogu ):
źródło
Jakie zadania administracyjne zostały przez Ciebie skrypty?
monitorowanie aplikacji / usług: uzyskaj kluczowe numery wydajności z (zdalnego) dziennika zdarzeń i procedur przechowywanych i wyświetl je z jednego pliku wsadowego
Jestem SQL Server DBA, pokaż mi jakieś fajne rzeczy z tym związane?
automssqlbackup : codzienna kopia zapasowa dla MSSQL z rotacją (codziennie = przyrostowa, tygodniowa + miesięczna = pełna; zachowaj 5 dziennych, 5 tygodniowych kopii zapasowych), zip, powiadomienie e-mailem
źródło
Korzystając ze skryptów powłoki uniksowej w poprzedniej karierze, a następnie przechodząc do administracji serwerami Windows, mogę powiedzieć, że naprawdę bardzo doceniam PowerShell - nie mam czasu ani umiejętności uczenia się zbyt dużej ilości tajemnej składni i byłem mile zaskoczony, że wiele skryptów PowerShell można pisać w bardzo prostym języku ... weź to, co warto, bo byłem przyzwyczajony do ksh !!
Przewiduję, że będzie jeszcze długo.
źródło
Pomyślałem, że to było fajne: dzięki SQL Server 2008 otrzymujesz nowe rozszerzenia PowerShell, które pozwalają poruszać się po bazach danych SQL, podobnie jak lokalny system plików lub rejestr.
Po zainstalowaniu narzędzi SQL Server Client możesz otworzyć dowolną bazę danych w PowerShell (poprzez menu kontekstowe po kliknięciu prawym przyciskiem myszy) i bawić się nią w sposób obiektowy:
Zauważ, że pierwszy wiersz po prostu zmienia monit, aby nie był tak długi.
Mam nadzieję, że oprócz tego oczywiste jest, co się tutaj dzieje :)
źródło
SQL Server 2008 ma teraz opcje kontekstowe PowerShell w Management Studio, więc obejmuje to więcej niż Exchange. Pomyśl też o tym jako o zamienniku DOS, ponieważ tak właśnie myślało MS, ponieważ po prostu nie mogą poprawić bezpieczeństwa DOS w przypadku problemów z kompatybilnością wsteczną, więc właśnie stworzyli coś nowego i wammo, problem rozwiązany!
źródło
Ja też jestem DBA i długoletnim scriperem, wracając do plików wsadowych DOS, V3.3! Przeszedłem do skryptu VB, ale PS jest bardzo potężny. Spójrz na - Niestety nie mogę opublikować linku, ponieważ jestem nowym użytkownikiem. Dostałem to z bloga Otto Helweg. Jest to tanie i wesołe narzędzie do inwentaryzacji oprogramowania.
Przykładowy skrypt PowerShell:
Dave J.
źródło
Poniższe zadania są wykonywane przez mój zespół bardzo regularnie za pomocą PowerShell
Z dnia na dzień mam monit PS przez cały czas i używam go do wszystkich zadań jednorazowych, dla których używałem CMD.
Oto kilka przykładów kodu do czytania list Sharepoint. Korzystam z usług internetowych firmy Sharepoint i nowego polecenia cmdlet „New-WebServiceProxy” w programie PowerShell V2.0
Oisin Grehan ma świetny post na blogu o korzystaniu z usług Sharepoint Web Services , których użyłem jako podstawy do stworzenia wszystkich moich funkcji. Evens ma niesamowity skrypt new-webservice.ps1, którego można użyć, jeśli nadal używasz programu PowerShell V1.
Również tutaj jest podstawowa funkcja, której użyłem, aby uzyskać dostępną pamięć na węzłach w moim klastrze
źródło
Wypróbowałem PowerShell do małego projektu w pracy - codziennej migracji podzbioru ~ 600 użytkowników i ~ 200 grup z korporacyjnej AD do starego systemu UNIX przy użyciu plików podobnych do CSV . Zaproponowano mi 500-wierszowy skrypt VBScript (!), Który wyciągnął jedną grupę i jej użytkowników jako punkt wyjścia.
Okazało się, że ~ 20-liniowy skrypt PowerShell może zrobić wszystko ...
Jako użytkownik * NIX (po stronie serwera i klienta) byłem bardzo mile zaskoczony programem PowerShell. Nawet jeśli znasz tylko niewielki zestaw poleceń, możesz z nim wykonać naprawdę potężną pracę. Potrzebuję tylko zdalnego dostępu SSH ...
źródło
Jak mogę tego nie używać? Wszystkimi aplikacjami serwera Microsoft wychodzącymi / aktualizowanymi są teraz zarządzane za pomocą Powershell. Niektóre mniej lub bardziej irytujące interfejsy użytkownika i konsole zarządzania są następnie wbudowane w ten rdzeń, który często jest powolny i jak ktoś zauważył, brakuje dostępnych funkcji ... więc nie mogę powiedzieć, że naprawdę mamy duży wybór ^ ^
źródło
PowerShell nie jest idealny, ale jeśli go użyłeś, wiesz, że jest całkiem fajny. Mając dostęp do całej biblioteki .net oraz wbudowanych poleceń cmdlet (i twórz własne polecenia cmdlet za pomocą PS w wersji 2.0), to całkiem fajne.
Jedyne, o czym myślę, że brakuje mi dobrego IDE do tego, co, na pewno, przyjdzie kiedyś ze stwardnienia rozsianego. Obecnie używam PowerShell Idera Plus i adminscripteditor, które umożliwiają debugowanie i są całkiem fajne.
Byłem w stanie całkiem dobrze odłączyć się od VB.
Moim największym dotychczasowym projektem z posh jest użycie „powershellASP” do stworzenia podstawowej strony internetowej, która uruchamia polecenia PowerShell i pobiera informacje o hoście vmware i VM z moich kilkunastu hostów VMWare ESXi (darmowych) i wyświetla je w tabelach HTML. Zrobiłem to, ponieważ dzięki bezpłatnemu VMWare ESXi i bez wirtualnego centrum nie ma innego sposobu, aby uzyskać w czasie rzeczywistym przegląd wszystkich moich maszyn wirtualnych w firmie. PowershellASP to darmowy zewnętrzny parser napisany dla IIS i nie obsługiwany przez MS. Więc może teraz robić pewne ograniczone rzeczy, a dokumentacja jest dość rzadka.
źródło
Mam całą masę skryptów do zarządzania / inwentaryzacji, które przeszukują AD w poszukiwaniu różnych rzeczy i przeszukują je za pomocą WMI w celu uzyskania istotnych statystyk, takich jak udziały na serwerze, miejsce na dysku, używane miejsce na dysku itp.
Skrypty ogólne:
Skrypty użytkownika:
Mam taki, który wylicza wszystkie maszyny gościnne VMWare na moich serwerach ESX
Mam skrypt, który pobiera pliki po x dniach i bezpiecznie je usuwa.
Zasadniczo mogę zrobić, co zajęło około 200 wierszy VBScript i zrobić to w 10 PowerShell. Możesz także robić rzeczy, których po prostu nie potrafisz lub robisz dobrze w VBScript - na przykład wysyłać e-maile z załącznikami - które regularnie robię, aby przesyłać mi wyniki moich skryptów. Możesz także zapisywać znaczące i unikalne wpisy w dzienniku zdarzeń z niestandardowymi nazwami usług i identyfikatorami zdarzeń.
Właśnie o tym myślę. Moje wybrane narzędzie to teraz PowerShell, to po prostu ułatwia życie.
Zasadniczo jest tak samo przydatny dla administratora systemu, jak skrypty Bash dla administratora systemu Unix.
źródło
Patrzyłem na Poweshell, aby zastąpić nasze skrypty wsadowe klienta - uruchamianie programów, skrypty logowania itp.
Okazało się jednak, że wydłużyło to co najmniej 10 sekund czasu logowania - to wszystko z wprowadzonymi „poprawkami”. Więc skończyło się na tym, że używaliśmy.
źródło
Nie będąc programistą .NET, mam ograniczone wykorzystanie do wszystkich korzyści związanych z .NET, z których PS może korzystać. Jednak będąc administratorem Exchange (między innymi) integracja PowerShell dla Exchange 2007 jest NIESAMOWITE. W końcu mam niezawodny silnik skryptowy dla mojego systemu pocztowego; do tej pory wysyłam mi miesięczne statystyki na skrzynkach pocztowych wszystkich osób, dostosowując, do których różnych adresów e-mail są przypisane, w zależności od pory dnia, automatycznie tworząc i przypisując uprawnienia do folderów publicznych i równoważąc obciążenia użytkowników między naszymi dwoma bazami danych skrzynki pocztowej . Inną fajną rzeczą z punktu widzenia Ex07 jest to, że po zrobieniu czegokolwiek w GUI, wyświetla ci odpowiednie polecenia PowerShell do tego, co właśnie zrobiłeś. Skopiuj je, a ostatecznie będziesz mieć zestaw skryptów PS, które mogą od nowa zbudować środowisko Exchange.
źródło
Automatyzacja niektórych rzeczy dzięki kontrolom serwera, w których pracuję (zbieranie podstawowych informacji z WMI oraz zbieranie błędów i ostrzeżeń z dzienników zdarzeń).
Obsługa dzienników zdarzeń jest niesamowita.
Niedawno napisałem skrypt, aby wyłączyć wyskakujące okienko automatycznej aktualizacji, które Foxit Reader włącza domyślnie w domenie, w której skrypt jest uruchamiany. Pobiera z komputerów listę komputerów, a następnie sprawdza, czy jest podniesiona, a następnie zmienia 1 na 0.
Jedno zapomniałem!
Masz prawie pełny dostęp do bibliotek .NET. Robienie z nim naprawdę skomplikowanych czynności jest trochę uciążliwe, ale jeśli masz taką potrzebę, jest ona dla ciebie.
źródło
Używamy go do kilku zadań administracyjnych, będąc głównie sklepem Microsoft. Niektóre skrypty są proste, takie jak czyszczenie starych plików lub defragmentowanie maszyn i rejestrowanie wyników. Jeden skrypt kontroluje komputery używające głównie WMI i zapisuje wyniki w bazie danych. Uzyskuje takie informacje, jak sprzęt (procesor, pamięć RAM, napędy itp.), Informacje o sieci, lokalni użytkownicy, zainstalowane oprogramowanie i informacje o profilu. Jest taki, który dzwoni do serwisu internetowego w celu wysłania wiadomości e-mail. Myślę, że w przyszłości zastąpi pozostałe skrypty VBScript, które są nadal używane. Nie używamy go jeszcze do zadań Exchange lub SQL Server.
Nie mogę się doczekać kolejnej wersji, która będzie obsługiwać zadania w tle, transakcje, lepszą obsługę wyjątków, nowe ISE (zintegrowane środowisko skryptowe), lepsze debugowanie itp.
źródło
Moi administratorzy Windows jeszcze nie używają PowerShell. Wszyscy o tym słyszeli, ale nie poświęcili czasu na zapoznanie się z tym.
Zdecydowałem się na to rzucić okiem. Opierając się na tle powłoki Unix, pomyślałem, że Windows musi wreszcie mieć prawdziwe środowisko programowania powłoki. Myślę, że Microsoft dobrze sobie radził z PowerShellem, a coś nie tak dobrze.
Dobrą stroną jest ich użycie obiektów jako pośrednika między poleceniami cmdlet w PowerShell. Daje to PowerShellowi poziom mocy, z którego muszą się włamać skrypty tekstowe, aby zabrać się do pracy.
Z drugiej strony, tak naprawdę nie wykorzystują zbyt wiele poleceń powłoki uniksowej. Tak więc krzywa uczenia się jest niepotrzebnie stroma i nie pomaga ludziom łatwo przejść z Unixa do PowerShell i odwrotnie. Najbardziej robią to zdefiniować aliasy dla niektórych apletów poleceń PowerShell takich jak ls aliasing Get-ChildItem ze wszystkich przełączników jest wiersza polecenia inaczej.
Tylko moje dwa centy...
źródło
To jest raczej odpowiedź dewelopera, ale to jest prawdziwy świat i zaczniemy to testować w którymś momencie w ciągu najbliższych kilku miesięcy. Zaczynam uczyć się programu PowerShell, aby pisać skrypty wprowadzające zadania programu SQL Server do naszego środowiska ciągłej integracji . Skrypty ciągłej integracji będą uruchamiane głównie przez NAnt i MSBuild za pośrednictwem JetBrains TeamCity .
Oprócz tego zamierzam przejść na PowerShell jako moją podstawową powłokę poleceń systemu Windows do celów ogólnych, a zwłaszcza zadań administracyjnych związanych z bazą danych SQL Server.
Przepraszam, nie mam jeszcze żadnych próbek kodu do udostępnienia, ponieważ wciąż się uczę! Z przyjemnością opublikuję trochę, gdy to zrobię :)
Oto przykładowy kod wiersza, na który właśnie odpowiedziałem na twoje pytanie :) Ale hej, na wiki ...
Spowoduje to wyświetlenie zainstalowanych poprawek:
źródło
Chociaż nie jest to najłatwiejszy do opanowania język skryptowy (dobre doświadczenie z rurami) i ma swoją własną osobliwość (daj mi prosty rzecz podobny do sed !!), uważam, że PowerShell jest dość potężny. Nie do poziomu Bash lub innych powłok uniksowych, ale nadal.
Używam go do nadzorowania niektórych eksportów i importów baz danych z ostrzeżeniami e-mail na wypadek, gdyby coś poszło nie tak, i rutynowych operacji wsadowych.
Z pewnością jest to już moja podstawowa powłoka systemu Windows, chociaż tak naprawdę nie jest to coś w rodzaju „pisz mniej, rób więcej”. PowerShell ma swoją gadatliwość (i dziedziczenie .NET) przeciwko niemu.
źródło
Wersja 1.0 programu PowerShell była bardzo ograniczona pod wieloma względami, ale wersja 2.0 jest ładna. W porównaniu ze skryptami wsadowymi jest znacznie potężniejszy. Tak naprawdę nie używam go jako powłoki, tylko do skryptów, więc moje doświadczenie jest odpowiednio zabarwione. Naprawdę nie lubię składni (
-eq
vs==
,-gt
vs>
itp.), Ale doceniam możliwość wpadnięcia do .NET, jeśli muszę zrobić coś dziwnego. Myślę, że w wersji 3.0 będzie świetnie. W tej chwili zdecydowanie umieściłbym to w kategorii „wykonuje pracę”.Używam go głównie do automatyzacji wdrażania kodu. Jest to obszar, w którym świeci, tworząc coś w języku C #. Operacje związane z powłoką, takie jak rekurencyjne kopiowanie katalogów i inne rzeczy, które skrypty Bash przyjmują od lat za pewnik, znacznie ułatwiają pracę.
źródło