PowerShell? Czy używasz tego? Czy możesz mi pokazać kilka fajnych rzeczy do administrowania systemem, które mogę z tym zrobić? [Zamknięte]

45

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ć:

  1. Czy używasz tego?
  2. Jak przebiegał proces ładowania systemu za pomocą programu PowerShell?
  3. Jakie rodzaje zadań związanych z administrowaniem systemem zostały przez Ciebie skrypty?
  4. 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.

Nick Kavadias
źródło
JScript nie żyje?
Sophie Alpert
7
Staraj się nie być trollem ze swoimi mylącymi nagłówkami następnym razem.
Jaykul
Może dlatego, że czasami chciałbym , aby odszedł jak jscript. Czy to tylko ja, czy jest to bardzo brzydkie i pełne słów?
Nick Kavadias

Odpowiedzi:

34

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:

  • Utwórz stronę internetową, aby przekazać określone zadania administracyjne użytkownikom helpdesku. Strona internetowa odpala polecenia wykonywane w PowerShell. Rzeczy, które robi:
    • Utwórz i usuń konta użytkowników, w tym obsługę skrzynek pocztowych i katalogów domowych Exchange 2007
    • Odblokowuje zablokowane konta
    • Utwórz / usuń grupy
    • Dodaj / usuń użytkowników z grup
    • Przenieś użytkowników między sklepami pocztowymi
    • Ustaw hasła
  • Pobieraj wyciągi z systemu ERP i co noc pchaj dane globalnej książki adresowej do Active Directory.
  • Rozwiąż problem LegacyExchangeDN, który pojawił się podczas migracji z Exchange 2003 do Exchange 2007. Musiałem dodać adres X500 do wszystkich, którzy byli na Exchange 2003. Naprawiono go dość krótkim skryptem PowerShell.
  • Tworzenie skryptów „grupowych skrzynek pocztowych” (współdzielonych skrzynek pocztowych w Exchange, w których wielu użytkowników ma dostęp do skrzynki pocztowej), inaczej ręczny proces ze względu na charakter danych, których potrzebujemy przed rozpoczęciem. To znacznie znormalizowało konfigurację tych skrzynek pocztowych.
  • Utworzono skrypt, który przechodził przez wszystkie domeny będące domenami, resetując określony klucz rejestru i ponownie uruchamiając usługę. Wykonanie go zajęło 18 godzin, ale wykonało zadanie.

Tak więc, PowerShell będzie z nami już od dłuższego czasu.

EDYCJA : Dodanie próbki kodu, ponieważ był wymagany

$ list = import-csv („groupusers.csv”)
$ lastseengroup = $ list [0] .group
$ ADGroupPrefix = "grp.netware."
$ ADGroupSuffix = "{zredagowane - w formacie, ou = grupy, dc = domena, dc = domena, dc = domena}"
Lista członków z wyraźnymi zmiennymi
Wyczyść zmienne nieznanych użytkowników
foreach ($ entry in $ list) {
    if ($ ($ entry.group) -ne $ lastseengroup) {
        echo „natknął się na nową grupę $ ($ entry.group), zatwierdzając zmiany w $ lastseengroup”
        $ newgroup = $ ADgroupPrefix + $ lastseengroup
        $ newgroupdn = „” „+” cn = $ newgroup $ ADGroupSuffix „+” „
        echo „uzyskiwanie nazwy wyróżniającej dla $ newgroup”
        $ istniejąca grupa = grupa dsquery nazwa-katalogu-domeny $ newgroup
        if (($ istniejąca grupa -ne $ null)) {
            grupa dsmod $ newgroupdn -chmbr $ lista członków
        } else {
            dsadd group $ newgroupdn -scope u -secgrp yes -members $ memberlist -desc "Grupa importowana z NDS"
        }
        Lista członków z wyraźnymi zmiennymi
    }
    $ User = get-user $ ($ entry.member) -ErrorAction SilentlyContinue
    if ($ User.isvalid) {
        $ UserDN = $ User.distinguishedname
        $ memberlist = $ lista członków + „” + „$ UserDN” + „”
    } else {
        $ unknownusers = $ unknownusers + $ ($ entry.member)
    }
    $ lastseengroup = $ ($ entry.group)

}
grupa dsadd "cn = $ ADGroupPrefix $ lastseengroup $ ADGroupSuffix" -scope u -secgrp tak -members $ lista członków

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.

sysadmin1138
źródło
6
zdalny PowerShell !! masz na myśli jak ssh!?! o czasie!
Nick Kavadias
2
Jak uruchamiać skrypty PowerShell ze strony internetowej, czy używasz skryptów PowerShell jako webowy język programowania? korzystasz z PowerShellASP? czy uruchamiasz swoje skrypty jako użytkownik IIS?
quentin
17

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.

moobaa
źródło
ta książka jest wciąż w fazie beta / w trakcie pisania
Nick Kavadias
Tak, ale nadal możesz go kupić i uzyskać wcześniejszy dostęp do zawartości. I jest tam mnóstwo rzeczy związanych z konserwacją serwerów :)
moobaa
4
Exchange jest w całości PowerShell od Exchange 2007. OCS będzie w pełni obsługiwać PowerShell w następnej wersji; większość produktów System Center albo w pełni je obsługuje, albo będzie w kolejnych wydaniach. PowerShell nigdzie się nie wybiera.
paulr
12

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.

Michael Stum
źródło
10

Dziesięć skryptów PowerShell, których używam jako administrator bazy danych SQL Server (wszystkie są opisane / opublikowane na moim blogu ):

  1. Sprawdź miejsce na dysku na wszystkich serwerach SQL i załaduj dane do tabeli SQL
  2. Uruchom raporty uprawnień dla wszystkich produkcyjnych serwerów SQL i załaduj dane do bazy danych SQL
  3. Odkryj wszystkie klastry, węzły i wirtuały systemu Windows Server 2003 w sieci i załaduj do tabel SQL
  4. Odkryj wszystkie bazy danych na wszystkich serwerach SQL zdefiniowanych w SCCM i załaduj do tabeli SQL
  5. Utwórz kopię zapasową karty wyników programu SQL Server, ładując informacje o kopii zapasowej z wszystkich serwerów SQL do tabeli SQL
  6. Sprawdź, czy mechanizm odciążania protokołu TCP jest wyłączony w systemie Windows Server 2003 z dodatkiem SP2 (jest to zabójca wydajności dla wielu serwerów SQL)
  7. Zweryfikuj wyrównanie partycji dysku (także killer wydajności, jeśli dyski są nieprawidłowo wyrównane)
  8. Skopiuj tabele SQL z jednego serwera na drugi
  9. Recursivley kopiuje wszystkie pakiety SSIS przy użyciu MSDB Storage z jednego serwera na inny, w tym strukturę folderów
  10. Utwórz własną przeglądarkę zależności obiektów graficznych
Chad Miller
źródło
8

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

devio
źródło
+1 za automatyzację całego procesu tworzenia kopii zapasowej MSSQL.
Andrei Rînea,
Tak ... Powershell to czyste złoto do automatyzacji złożonych kopii zapasowych w SQL Server. Używamy go do kompresowania i szyfrowania cogodzinnych kopii zapasowych, a następnie wysyłania plików do Amazon S3 w celu przechowywania poza siedzibą
Greg Bray
7

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.

WiredNut
źródło
7

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:

PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\ExampleDB\>function prompt {"PS >"}
PS >cd tables
PS >dir

SCHEMA          NAME         CREATED
------          ----         -------
dbo             MyTable      25/06/2009 17:02

PS > dir | format-table name, columns, rowcount, parent

NAME            COLUMNS      ROWCOUNT      PARENT
----            -------      --------      ------
MyTable         {Id, Name}   0             {ExampleDB}

PS >$myTable = dir | where {$_.Name -eq "MyTable"}
PS >$myTable.Script()

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[MyTable](
[Id] [int] IDENTITY(1,1) NOT NULL
[Name] [nText] NOT NULL
) ON [PRIMARY]

PS >set-location \SQL\AnotherServer\Default
PS >cd databases\Northwind\tables
PS >$myTables = dir | where {$_.Rowcount -gt 100 -and $_.HasIndex -eq 1}
PS >$myTables.Count

8

PS >foreach ($table in $tables) {$table.RebuildIndexes(90)}

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 :)

Lex
źródło
+1 Wow, to całkiem przydatne. Dzięki!
jftuga
5

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!

SQLGuyChuck
źródło
4

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.

  • 1- Pobiera listę komputerów do zapytania z tabeli bazy danych
  • 2- Dodaje bieżące dane i czas do wyniku
  • 3- Zapisuje wyniki kontroli w bazie danych

Przykładowy skrypt PowerShell:

# Open the database connection
$dbConn = new-object System.Data.SqlClient.SqlConnection "server=kcdb;database=Inventory;Integrated Security=sspi"
$dbConn.Open()
$sqlQuery = $dbConn.CreateCommand()

# Get all known computers
$sqlQuery.CommandText = "select * from Inventory..Computers"
$reader = $sqlQuery.ExecuteReader()
$computersToQuery = @()
while ($reader.Read()) {
   $computersToQuery += $reader["Computer"]
}

# Close the database connection
$dbConn.Close()

$softwareInventory = @{}
foreach ($computer in $computersToQuery) {
   $psinfoOutput = ./psinfo.exe -s Applications \\$computer

   $foundSoftwareInventory = 0
   $computerName = ""
   foreach ($item in $psinfoOutput) {
      if ($foundSoftwareInventory -eq 1) {
         # Force the results to a string
         # Remove any single quotes which interfere with T-SQL statements
         # Load the result into a hash whereby removing any duplicates
         [string]$softwareInventory[$computerName][$item.Replace("'","")] = ""
      }

      if ($item -like "System information for *") {
         $computerName = $item.Split("\")[2].TrimEnd(":")
      } elseif ($item -eq "Applications:") {
         $foundSoftwareInventory = 1
         $softwareInventory[$computerName] = @{}
      }
   }
}

$dbConn = new-object System.Data.SqlClient.SqlConnection "server=kcdb;database=Inventory;Integrated Security=sspi"
$dbConn.Open()
$sqlQuery = $dbConn.CreateCommand()

foreach ($computer in $softwareInventory.Keys) {
   foreach ($softwareItem in $softwareInventory[$computer].Keys) {
      "Loading-" + $computer + ":" + $softwareItem

      # Try an Update then an Insert 
      trap {
         $sqlQuery.CommandText = "update Inventory..SoftwareInventory set AuditDate = getdate() where  Computer = '" + $computer + "' and Software = '" + $softwareItem + "'"
         $result = $sqlQuery.ExecuteNonQuery()
         continue
      }

      $sqlQuery.CommandText = "insert into Inventory..SoftwareInventory (Computer,Software,AuditDate) values ('" + $computer + "','" + $softwareItem + "',getdate())"
      $result = $sqlQuery.ExecuteNonQuery()
   }
}

$dbConn.Close()

Dave J.

Dave Jackson
źródło
3

Poniższe zadania są wykonywane przez mój zespół bardzo regularnie za pomocą PowerShell

  • wyświetl listę dostępnej pamięci we wszystkich węzłach naszych klastrów Hyper-V.
  • Zarządzaj filerrem Netapp
  • Zapewnij nowe maszyny wirtualne Hyper-V
  • Programowo pisz i czytaj z list SharePoint

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

$url = "http://server/sites/site/_vti_bin/lists.asmx"
$listWebService = new-webServiceProxy -uri $url -UseDefaultCredential
$listName = "MyList"
$viewGuid = $null
$query= $null
$viewFields = $null
$numRowsReturned = 20000
$queryOptions = $null
$result = $listWebService.GetListItems($listName,$ViewGuid,$query,$viewFields,$numRowsReturned,$queryOptions,$null)

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

Function Get-AvailableMemory {
param
(
[string[]]
$servers
)
BEGIN {
$query = "select AvailableBytes,__SERVER from Win32_PerfRawData_PerfOS_Memory"

$availableMemory = @{
                    Name="AvailableMemory";
                    Expression = {[math]::round($_.AvailableBytes/1gb,2)}
                    }
$serverName = @{  
                Name ="Server";
                Expression = {$_."__SERVER"}                                      
               }
}
PROCESS {
foreach ($server in $servers){
    get-wmiobject -query $query -computer $server |
    select-object $availableMemory, $serverName
    }
}

END {}    

}
Andy Schneider
źródło
Masz jakiś przykładowy kod, który chcesz udostępnić? Szczególnie interesuje mnie czytanie i pisanie list SharePoint.
Brian
2

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 ...

Peter Mortensen
źródło
odnośnik psremoting
Sam
1

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 ^ ^

Oskar Duveborn
źródło
Sprawdź ten mały skrypt PowerShell, aby ngenować swoje zespoły i przyspieszyć wszystkie konsole oparte na PowerShell: msexchangeteam.com/archive/2008/08/01/449426.aspx
Jesse Weigert
1

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
Jest PowerGUI, a w powergui używam ScriptEditor.exe, nie wyobrażam sobie, jak mogę bez tego żyć ...
Nicolas Dorier
Powershell 2 zawiera świetny program Powershell ISE (zintegrowany edytor skryptów). CTP 3 jest dostępny, RTM już się zbliża, ostateczne wydanie w październiku 2009 r.
Precipitous
1

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:

  1. Uzyskaj wolne / używane miejsce na dysku, pamięć RAM itp.
  2. Zapytaj WMI o informacje o systemie BIOS, model marki serwera itp.
  3. Sprawdź wersję AV i upewnij się, że są tam pewne wpisy rejestru
  4. Audytuje udziały na serwerach Windows

Skrypty użytkownika:

  1. Wylicz AD, chwytając wszystkich użytkowników, i do których grup należą, a następnie pisz do Excela lub CSV
  2. Znajdź aktualnie zalogowanych użytkowników za pośrednictwem TS i konsoli

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.

Zypher
źródło
0

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.

Wanny
źródło
Nie jest to najszybsza rzecz na świecie, ale może zrobić wszystko. Jeśli wszystko, co musisz zrobić, to zmapować kilka dysków, skrypty wsadowe są znacznie szybsze.
sysadmin1138
0

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.

RainyRat
źródło
0

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.

nonady
źródło
0

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.

Bratch
źródło
0

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...

7286
źródło
0

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:

Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix
squillman
źródło
Brawo dla PowerShell, szkoda, że ​​nie jest domyślnie instalowany na serwerze 2003. Lokalizacja rejestru pomogła!
Nick Kavadias
0

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.

Berzemus
źródło
0

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 ( -eqvs ==, -gtvs >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ę.

Peter Mortensen
źródło