Skocz do zawartości

KolegaDudysa

Użytkownicy
  • Postów

    418
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez KolegaDudysa

  1. PoshBing Wraz z pojawieniem się wyszukiwarki BING, parę dni później udostępniono PoshBing, który umożliwia wykonywać różne zapytania do witryny Bing, takie jak - użyć funkcji translate, pozwalając tłumaczyć tekst w różnych językach, wyszukiwać strony o konkretnej tematyce, wyszukiwać słów czy fraz poprawnych gramatycznie, wyszukiwać filmów video, wystosować zapytanie do konkretnego portalu, jakie dostarcza informacje. Wersja stabilna. Licencja: GNU General Public License version 2 (GPLv2) # wycinek kodu function Get-BingTranslation() { param( [string]$query = $null, [string]$from = "en", [string]$to = "es", [switch]$raw ); $common = Get-CommonFieldHash; $common["Version"] = "2.2"; if ( ! $script:CODETOLANG[$from] ) { Write-Host "ERROR: from language is not valid. It must be one of:" foreach ($key in $script:CODETOLANG.keys) { Write-KeyValue $key $script:CODETOLANG[$key]; } return; } if ( ! $script:CODETOLANG[$to] ) { Write-Host "ERROR: to language is not valid. It must be one of:" foreach ($key in $script:CODETOLANG.keys) { Write-KeyValue $key $script:CODETOLANG[$key]; } return; } $options = @{ "Translation.SourceLanguage" = $from; "Translation.TargetLanguage" = $to; }; $xml = Get-Bing -query $query -sources "Translation" ` -options $options -common $common; if ( $raw ) { $xml } else { Process-BingResponse $xml; } } Temat źródłowy PoshBing Introducing PoshBing - The PowerShell library for Microsoft's Bing Search Engine, autora skryptów Unix to PowerShell. [color= #fff; background-color: #012456][PS:34][/color] [color= #ff0; background-color: #012456]Get-BingSpell[/color] [color= #ff0; background-color: #012456]-query[/color] [color= #0ff; background-color: #012456]Pplish[/color] [color= #088; background-color: #012456]|[/color] [color= #ff0; background-color: #012456]ft[/color] [color= #ff0; background-color: #012456]-AutoSize[/color] Query SourceType Value ----- ---------- ----- Pplish Spell ?Polish? [color= #fff; background-color: #012456][PS:35][/color] [color= #ff0; background-color: #012456]Get-BingTranslation[/color] [color= #ff0; background-color: #012456]-from[/color] [color= #0ff; background-color: #012456]PL[/color] [color= #0ff; background-color: #012456]"Byłem dziś na forum"[/color] [color= #ff0; background-color: #012456]-to[/color] [color= #0ff; background-color: #012456]EN[/color] [color= #088; background-color: #012456]|[/color] [color= #ff0; background-color: #012456]ft[/color] [color= #ff0; background-color: #012456]-AutoSize [/color] Query SourceType TranslatedTerm ----- ---------- -------------- Byłem dziś na forum Translation I was today at the Forum [color= #fff; background-color: #012456][PS:36][/color] [color= #ff0; background-color: #012456]Get-BingTranslation[/color] [color= #0ff; background-color: #012456]"I was toady at the forum"[/color] [color= #0ff; background-color: #012456]EN[/color] [color= #0ff; background-color: #012456]DE[/color] [color= #088; background-color: #012456]|[/color] [color= #ff0; background-color: #012456]ft[/color] [color= #ff0; background-color: #012456]-AutoSize[/color] Query SourceType TranslatedTerm ----- ---------- -------------- I was toady at the forum Translation Ich war heute im forum [color= #fff; background-color: #012456][PS:37][/color] [color= #ff0; background-color: #012456]Get-BingTranslation[/color] [color= #0ff; background-color: #012456]"ich war heute im forum"[/color] [color= #0ff; background-color: #012456]DE[/color] [color= #0ff; background-color: #012456]PL[/color] [color= #088; background-color: #012456]|[/color] [color= #ff0; background-color: #012456]ft[/color] [color= #ff0; background-color: #012456]-AutoSize [/color] Query SourceType TranslatedTerm ----- ---------- -------------- ich war heute im forum Translation Był w forum dzisiaj [color= #fff; background-color: #012456][PS:38][/color] [color= #ff0; background-color: #012456]Get-Command[/color] [color= #ff0; background-color: #012456]-Module[/color] [color= #0ff; background-color: #012456]PoshBing [/color] [color= #0ff; background-color: #012456] [/color] [color= #0ff; background-color: #012456] [/color] [color= #088; background-color: #012456] [/color] [color= #ff0; background-color: #012456] [/color] [color= #ff0; background-color: #012456] [/color] CommandType Name Definition ----------- ---- ---------- Function Execute-HTTPGetCommand ... Function Get-Bing ... Function Get-BingAppId ... Function Get-BingAppName ... Function Get-BingImage ... Function Get-BingInstantAnswer ... Function Get-BingMobileWeb ... Function Get-BingMultiple ... Function Get-BingNews ... Function Get-BingPhonebook ... Function Get-BingRelatedSearch ... Function Get-BingSpell ... Function Get-BingTranslation ... Function Get-BingUrl ... Function Get-BingVideo ... Function Get-BingWeb ... Function Get-CommonFieldHash ... Function Process-BingResponse ... Function Set-BingAppId ... Aktualizacja 11.08.2009 Aby skorzystać z PoshBing należy zarejestrować własne Bing AppID w Bing Developer Center ,które należy umieścić w skrypcie.
  2. MENU II Programy, skrypty, publikacje: PowerShell Script Generator Add In for Microsoft Office Visio 2007 watch-folder (Monitorowanie zmian w folderze, PS 2.0 CTP3) Skróty klaiwaturowe w PowerShell Open PowerShell in the current Explorer window (Vista) Searching PoshCode repository from your Desktop in Windows 7 Książki: Windows PowerShell. Podstawy (Holger Schwichtenberg, 2009-03-01, PL) Windows PowerShell 2.0 Administrator's Pocket Consultant (William R. Stanek, 2009-05-27, ENG) Effective Windows PowerShell.pdf (Keith Hill, 3/8/2009, ENG, FREE) ****************************************************************** PowerShell - listing komunikatów błędów z dziennika zdarzeń w formacie html. $a = "<style>" $a = $a + "BODY{ background-color:#EEEEEE; }" $a = $a + "TABLE,td,th{ font-family:Tahoma; color:Black; Font-Size:10pt }" $a = $a + "TH{ font-weight:bold; background-color:#CCCCCC; }" $a = $a + "TD{ background-color:white; }" $a = $a + "</style>" Gwmi Win32_NtLogEvent | Where-Object -FilterScript { $_.EventType -like '1'} | Sort-Object LogFile | Select-object Logfile, Message, SourceName,Type, TimeGenerated | ConvertTo-HTML -head $a -body "<H2>Wpisy błędów z dziennika zdarzeń</H2>" | Out-File C:\ErrorLog.htm Nie mam zbyt wielu wpisów error, zakładki w dzienniku posegregowane, więc logi biedne. Skrypt wykonałem na podbudowie wcześniejszego. Można sobie dowolnie ustawiać kolory komórek czy tabeli lub tła. Jeśli ktoś chce więcej wpisów własności by się znalazły w logu niech zajrzy do konsoli, poleceniem Gwmi Win32_NtLogEvent | Get-Member i dokłada własności w tym miejscu: | Select-object Logfile, Message, SourceName,Type, TimeGenerated, NastępnaWłasność Tworzenie szybkiego loga przekonwertowanego do pliku html, wpisów z dziennika zdarzeń, posiadające ostrzeżenia, zebrane z całego dziennika, zakładki posegregowane: gwmi Win32_NtLogEvent | Where-Object -FilterScript { $_.EventType -like '2'} |Sort-object LogFile | Select-object LogFile, Type, SourceName, Message, TimeGenerated | ConvertTo-HTML -title "OSTRZEŻENIA" | Out-File C:\Warning.htm To samo tylko zastosowana inna metoda: gwmi -query "select * from win32_NtLogEvent where EventType='2'" |Sort-object LogFile | Select-Object LogFile, Type, SourceName, Message, TimeGenerated | ConvertTo-HTML -title "OSTRZEŻENIA" | Out-File C:\Warning.htm ****************************************************************** PowerShell Trainer PsTrainer czyli PowerShell Trener jest to wersja testowa do nauki PowerShella za pomocą interaktywnego interfejsu. Narzędzie ma posiadać podpowiedzi, będzie sprawdzać czy użytkownik użył właściwego polecenia, aby zrealizować zamierzony efekt. Na razie jest to dość wczesna wersja testowa. Puki co projekt jest zawieszony przez twórcę na jakiś czas i nie będzie w tym okresie rozwijany. Aplikacja nie wymaga instalacji. Strona projektu: PSTrainer ****************************************************************** PowerShell będzie domyślnie instalowany w Windows 7 oraz Windows Serwer 08 RC2 - opublikowane dnia 31.10.2008 - więcej na blogu PowerShell Team Blog ****************************************************************** out-form Out-Form jest to skrypt tworzący GUI dla jakiegoś wyniku. Skrypt jest do pobrania na stronie podanej wyżej, jak i również na tej samej stronie znajduję się przykład użycia by otrzymać wynik okienkowy z przyciskami wykonywującymi określone funkcje. Dla przykładu, jak powyżej widać na obrazku, stworzyłem przycisk fuknkcyjny, który ma za zadanie zakończyć wybrany proces. ****************************************************************** PowerShell 2 CTP3 - praca w tle Na blogu huddledmasses jest artykuł poświęcony nowej wersji PShella - First Impressions. W dużej części przedstawia on opisanie nowych przełączników, które umożliwiają ukrycie okna konsoli i pracę w tle jakiegoś skryptu. Na stronie w przykładach pokazano skrypt wyświetlający tekst powitalny w GUI, jak i również uruchamianie spod samego wiersza poleceń. Osoby, które na razie nie przesiadają się na CTP3 mogą użyć Hstart. W przykładzie, ukryć okno konsoli z uruchomieniem widocznego skrypt GUI, wykonywującego jakieś zadanie: hstart /NOCONSOLE "PowerShell.exe "C:\Windows\TwójSkrypt.ps1"" Po zamknięciu skryptu, zostanie również zamknięta pracująca w tle konsola. ****************************************************************** PowerShell Help (PowerPack) dla PowerGUI PowerShell Help jest zaktualizowaną wtyczką dla PowerGui (UpDate 07.12.08), dostepną już od jakiegoś czasu. Aktualizacja poszerza wtyczkę o nowe funkcje. PowerShell Help jest to system pomocy, wyświetlający szczegółowe dane na temat cmdletów, aliasów, funkcji, dostawców, dodanych wtyczek. Jest to bardzo wygodny PowerPack, gdy się chce uzyskać informację bez wpisywania poleceń w konsoli. ****************************************************************** ZESTAW SKRYPTÓW DLA CTP3 Na blogu lista skryptów jest cały czas dokładana, więc spis może ulec zmianie. Umieszczam listę teraźniejszą, opublikowaną - 02.01.2009. Get-DateTime Get-Domain Get-TypeAccelerator Get-StockQuote Validate-EmailAddress Get-AutoHelp Get-Win32Share Get-Formatstring2 Get-Format1 Get-EvenNumber ****************************************************************** PowerShell WMI Wizard PowerShell WMI Wizard jest skryptem GUI, zbudowany w PrimalForms. Pozwala zbierać klasy WMI na lokalnym lub zdalnym komputerze, wyniki zostaną wyświetlone w konsoli, aby pobrać narzędzie należy uzupełnić krótki formularz, podając adres własnej skrzynki pocztowej na który przyjdzie link do pobrania. WMI Wizard ****************************************************************** PowerBoots Na wstępie zaznaczę że PowerBoots działa tylko w wersji konsoli CTP3. PowerBoots jest zbiorem poleceń, które umozliwiają tworzenie okien, przycisków, wykazów, umożliwia generowanie grafiki w której można stworzyć galerię, wprowadzanie własnych styli oraz odsyłaczy. PowerBoots jest modułem i tak też jest uruchamiany z poziomu konsoli. Folder z plikami PowerBoots umieszczamy w katalogu "Modules", konsole uruchamiamy z przełącznikiem -STA i następnie pobieramy moduł. Aby wyświetlić spis dostępnych funkcji, należy użyć polecenia: Get-Command -Module PowerBoots Tutorial - An introduction to PowerBoots. Znajduje się tam wiele przykładów użycia. Projekt jest bardzo świeży. ****************************************************************** Invoke-ISE function Invoke-ISE{ param ( [string[]]$file, [string]$path="$pshome\powershell_ise.exe" ) if($file){ foreach($f in $file){ & $path (resolve-path $f) } } else { & $path } } Set-Alias ISE Invoke-ISE Źródło: scriptfanatic Invoke-ISE jest to fajny skrypcik dla wersji konsoli CTP3. Pozwala on na uruchomienie z poziomu konsoli edytora skryptów Windows PowerShell (ISE), ale to nie jest jedyna zaleta skryptu. Funkcja Invoke-ISE pozwala na edytowanie wybranego skryptu otwierając go w edytorze z poziomu konsoli, który można poddać dalszej obróbce lub wykonać w samym ISE. Ilość edytowania skryptów jest nieograniczona. ****************************************************************** Nowy PoshConsole Program już od dawna znajduje się w linkowi. Nowa wersja PoshConsole nadal jest wersją alfa. Co nowego? Prawie całkowicie zmieniony wygląd, została dodana wyszukiwarka oraz auto-uzupełnianie, pomysł znany z PowerTab. Wersja nie ma wbudowanej opcji ukrycia Win+~, jednakże autor udostępnił kod, którym można to wykonać. ****************************************************************** PowerGUI Tips & Tricks Videos23.01.2009 Seria filmów prezentujących PowerGUI w akcji, podzielonych na pięć części, od momentu pobrania i instalowania po ustawianie filtrów i generowanie raportów oraz korzystania z edytora. ****************************************************************** Problem z pomocą w edytorze PowerShell ISE Może się tak zdarzyć po instalacji wersji testowej CTP3, pomoc edtyora ISE będzie kompletnie niedostępna, a jest bardzo przydatna. Użycie w edytorze klawisza F1 wywoła pomoc cmdletów. Fajną funkcją jest wywołanie pomocy dla konkretnego polecenia, coś w stylu Get-GuiHelp, wystarczy w edytorze wpisać polecenie, trzymać nad nim kursor i użyć pomocy(F1). Przyczyną braku dostępu do pomocy może okazać się nieprawidłowy numer identyfikacyjny ustawień regionalnych (LCID), który znajduję się w katalogu C:\WINDOWS\Help\Mui. Instalator w moim przypadku utworzył angielskie ustawienia C:\WINDOWS\Help\Mui\0409\.chm. Wystarczy utworzyć nowy folder z identyfikatorem \Mui\0415 i umieścić plik pomocy. Następnie ponownie spróbować użyć pomocy. W moim przypadku działa. Tabela numerów identyfikacyjnych List of Locale ID (LCID) Values as Assigned by Microsoft (dla Xp,2003). Problem jest również opisany na japońskiej stronie PowerShell ISE. Zaznaczam że problem wystąpił w XP Pro SP3. ****************************************************************** Korzystanie OnLine z pomocy edytora PowerShell ISE Using Help in PowerShell ISE jest dostępny artykuł ze skryptem, który pozwala na korzystanie z pomocy edytora ISE bezpośrednio z TechNET. Wyniki zostaną wyświetlone w formacie pliku .chm. Przed skorzystaniem z pomocy OnLine należy wcześniej wyłączyć pomoc lokalną: $psISE.Options.LocalHelp = $false Z tego formatu pomocy można tylko korzystać w ISE. Według potrzeb można utworzyć własny profil dla ISE (Microsoft.PowerShellISE_Profile.ps1) i umieścić w nim ten skrypt, również według potrzeb można w nim od razu wyłączyć pomoc lokalną i korzystać OnLine lub uruchamiać ręcznie z przykładu powyżej. Aby włączyć pomoc lokalną, należy użyć polecenia: $psISE.Options.LocalHelp = $true Wywołanie pomocy OnLine jest takie same jak lokalnej, klawiszem funkcyjnym F1. Również można wywołać pomoc dla konkretnego polecenia, wpisując w edytorze wybrane polecenie, umieścić na nim kursor i wywołać pomoc OnLine. ****************************************************************** PowerBoots Oficjalne wydany w CodePlex (07.02.2009). Wersja Beta, posiada teraz Out-Wpf, który jest wbudowany w PoshConsole ****************************************************************** Zmiana wyglądu edytora PowerShell ISE Przypadkiem znalazłem taki temacik o zmianie wyglądu interfejsu edytora ISE - Using a Color Dialog to choose colors for ISE. Na dzień dzisiejszy w edytorze jest brak opcji zmian interfejsu programu. Na stronie, którą podałem dostępne są trzy skrypciki, które zmieniają kolor okna cmd, wykonywalnego, itp. - Set-CommandBackPaneColor - Set-OutputPaneColor - Set-ScriptPaneColor Te funkcje można dodać do profilu ISE, tworząc w nim niestandardowe menu. Funkcję można wywoływac z menu lub wpisać polecenie w oknie edytora, nastepnie pojawi się monit o wprowadzeniu zmiennych. Ustawienia interfejsu przechowywane są w zmiennej $PsIse IseShell> $psISE.Options | gm TypeName: System.Management.Automation.Host.Options Name ---- PropertyChanged Equals GetHashCode GetType RestoreDefaults RestoreDefaultTokenColors ToString CommandPaneBackground CommandPaneUp DefaultOptions FontName FontSize LocalHelp OutputPaneBackground OutputPaneForeground OutputPaneTextBackground ScriptPaneBackground ScriptPaneRight ShowWarningBeforeSavingOnRun ShowWarningForDuplicateFiles TokenColors Z ciekawości na podstawie kodu ze strony dodałem funkcję Zmień-RozmiarCzcionki i utworzyłem dla niej skrót klawiaturowy: function Zmień-RozmiarCzcionki { param ( [parameter(Mandatory=$true,ValueFromPipeline=$true)] $FontSize ) $psise.Options.FontSize = $FontSize } $null = $psIse.customMenu.subMenus.add("Zmień-RozmiarCzcionki",{Zmień-RozmiarCzcionki},"CTRL+9") I działa. To tyle... Inny skrypt zmieniający wygląd okien ISE, w tym zmiana koloru podswietlenia składni ze względu na wprowadzoną czerń - blackboard.ps1 . ****************************************************************** Złożone sortowanie Kiedyś pisałem o poleceniu Out-GridView, który wysyła wynik do nowego okna i pozwala na grupowanie czy sortowanie elementów po ich nazwie lub własności. Dawno się nie bawiłem tym poleconkiem, a jak się zaczołem nim bawić to zauważyłem nowe funkcje, pozatym RealiseNotes nie do końca przeczytałem;). W przykładzie listowałem katalog w którym trzymam sobie skrypty, przesłałem wyniki do nowego okna poprzez Out-GridView. I teraz poza grupowaniem elementów po ich atrybucie, poza wyszukiwaniem po nazwie, w prawej górnej części okna znajduje się pozycja ADD, znajdują się w niej własności, należące do polecenia Get-Childitem, takie jakie zostały użyte w poleceniu. Zechciałem wyszukać skryptów, które były ostatnio modyfikowane w danym okresie czyli od-do. W tabeli należy dodać pozycję LastWriteTime. Pojawi się mała wyszukiwarka, a po lewej jej stronie atrybuty do wyszukiwania, z pozycji należy wybrać is between, wpisać daty i kliknąć na ikonę wyszukiwarki i czekać na wynik, dodatkowo w górnej wyszukiwarce listować z grupy pliki po nazwie, jeśli potrzebny jest jeszcze bardziej konkretny wynik. Musze przyznać że jest to całkiem wygodny sposób wyszukiwania i przyjemny. ****************************************************************** Function prompt w ISE W edytorze ISE również można zmienić tekst zgłoszenia, czy dodać do niego jakieś funkcje, jak i w belce tytułowej. Tak samo jak w konsoli PShella. Również identycznie umieszczamy tą funkcję w profilu ISE (Microsoft.PowerShellISE_Profile.ps1), jeśli chcemy, aby ta funkcja ładowała się za każdym uruchomieniem edytora. Zmiany zachodzą w tych samych zmiennych, jak np. $Host.UI.RawUI.WindowTitle Więc możliwości jest wiele, w prostym przykładzie zmiana nazwy belki tytułowej z pobieraniem lokalizacji, w tekście zgłoszenia dodanie własnego tekstu oraz zliczanie użytych poleceń. function prompt { $Host.UI.RawUI.WindowTitle = "ISE " + $(get-location) $licz = (Get-History -count 1).Id + 1 Write-Host "[${licz}]" -NoNewLine -fore darkred write-host "ISE" -fore blue }
  3. Przydatne skróty klawiaturowe Na strone CentrumXp jest ciekawy artykuł właśnie jak wyżej w tytule.Klik Można je stosować w PS, ale jedna uwaga łączniki poleceń & nie działają w Shellu, zamiast nich używa się ;. Przykładowy skrót wyświetlający w postaci tabeli historie wpisanych poleceń( klawisz funkcyjny F7). BgShell - BackgroundShell To jest jakby edytor Shella spełniający funkcje PowerShella. Działa bez instalacji. Działa bez potrzeby uruchomienia PowerShella. Możemy na nim wykonywać podstawowe czynności, uruchamiać skrypty. Jednakże nie działa w nim PowerTab. Możliwość ukrycia okna. Dostępny pod adresem: http://www.leeholmes.com/blog/BgShellNdash...roundShell.aspx Dir-LIVE Jest to ciekawa propozycja - skrypt, który ma za zadanie listować miejsce w którym się aktualnie znajdujemy. Dodaje własne komentarze. Zapisać jako Dir-LIVE.ps1 do katalogu Windows. Można go uruchamiać po samej nazwie. Do pobrania pod adresem: http://www.leeholmes.com/blog/MonadBreakin...omStrategy.aspx PoshConsole To kolejna implementacja konsoli napisana w kodzie otwartym.Można ją uruchamiać bez potrzeby uruchomienia Shella. Działa bez instalacji. Jednakże podczas testowania program kilka razy się zawiesił, a w 50% używa pełnej mocy procesora przy wykonywaniu głębszych zadań. Wersja jest uaktualniana. Strona główna:PoshConsole Home, do pobrania na samym dole strony ->Klik ShinyPower ShinyPower jest to niewielkich rozmiarów narzędzie, działające bez instalacji. Działające bez potrzeby uruchomienia Shella. Aplikacja ta wyświetla obiektowo wszystkie polecenia PowerShella z opisem i właściwością konkretnego cmdletu oraz pomoc polecenia. Wystarczy zaznaczyć interesujący nas cmdlet i sekunde poczekać na wyświetlenie się wyników. Wygodne jeśli chcemy szybko uzyskać informacje o danym poleceniu bez potrzeby wpisywania poleceń w konsoli. Obsługuje wersje 1.0 i 2.0. Należy zauważyć że narzędzie te nie wyświetli innych poleceń, które zostały dodane do konsoli jako dodatkowe paczki cmdletów. Być może w przyszłości będzie posiadała taką możliwość. Strona główna: ShinyPower Saipen - Windows PowerShell Help Tool Jest to propozycja firmy Saipen. Help Tool narzędzie pomocy cmdletów PowerShella. Prawie identyczne w działaniu co do aplikacji wymienionej wyżej. Wyświetlające polecenia Shella z opisem właściwości konkretnego cmdletu oraz pomocy. Wymaga instalacji. Aby narzędzie działało poprawnie należy mieć zainstalowany PowerShell oraz Net.framework 2.0. Dodatkowo wyświetla w pomocy własne paczki cmdletów - PshX-SAPIEN. Lecz nie wyświetla paczek cmdletów dołożonych do konsoli innych wydawców. Posiada mozliwość zmieniaia skórki programu. Narzędziownia Saipen skąd można pobrać aplikacje: Windows PowerShell Help Tool. Instrukcja narzędzia: PowerShell Help Tool - Pdf. Dos + Batch File = ChangeSizeWindowShell Siedziałem sobie u mojego kolegi Gejzera, który jest adminiem sieci. Pokazał mi polecenie dosowe, którym można zmienić rozmiar okna CMD według własnego uznania i stworzyć gotowy plik wsadowy lub kilka, umieścić je w katalogu C:\Windows i po nazwie pliku uruchamiać w oknach konsoli. Okazuje się że równie bardzo dobrze spełnia swoją role w PowerShellu. Poleceniem Mode con możemy sprawidzić w ilu wierszach jest podana wysokość okna, a w kolumnach jego szerokość w aktualnie otwartym oknie wiersza polecenia. A więc - Otworzyć notatnik, a w nim zapisać: mode con COLS=100 LINES=560 - zapisać zmiany pod dowolną nazwą pliku z rozszerzeniem batch. Uruchamiać po nazwie pliku w oknie Shella, tak jakby wpisywało się zwykłe polecenie. COLS=100 - szerokość okna (wartość dowlona) LINES=560 - wysokość okna (wartość dowolna) - dokładniej zawartość okna Wizualnie widać zmiane, ale możemy powrócić do polecenia Mode con by sprawdzić czy wprowadzone dane z pliku wsadowego sa aktualne ze stanem rzeczywistym rozmiaru okna. Plik ten nie zmienia ustawień systemowych okna PowerShella jak i wiersza poleceń. Używa się go w tej postaci podczas pojedyńczej sesji. To tyle...... PowerShell Tip of the Week W dziale PowerShell na stronie M$ jest prezentacja tworzenia kalendarza. Skrypt jest dostępny dla wszystkich, wystarczy go skopiować. Creating a Graphical Date Picker Making Progress Tak sobie jeszcze zwiedzałem Tip of the Week i natrafiłem na mały ciekawy skrypcik. To skrypcik, który listuje zawartość katalogu Windows i wszystkich jego podkatalogów w poszukiwaniu bibliotek dll (oczywiście rozszerzenie można zmienić). Polecenie Write-Progress tworzy pasek w którym wykonuje zadanie, tzn prosto pisząc, gaficznie pokazuje stan wykonania skryptu. W tym przykładzie jest to procentowe wykonanie listingu bibliotek dll. Skrypt na końcu podaje zliczony rozmiar wszystkich bibliotek. Więcej na stronie Tip of the Week - Making Progress Set your Powershell console window icon Przypakiem znalazłem taki skrypcik, który zmienia ikone w PowerShellu podczas pojedyńczej sesji. Ikone zapożyczyłem z Community Extensions. Użycie skryptu bardzo proste: Set-ConsoleIcon "C:\Icons\special_powershell_icon.ico" Skrypt dostępny pod adresem Set-ConsoleIcon Get-GuiHelp Ciekawa prezentacja MS, potrzebny jest skrypt Get-GuiHelp oraz PowerShell Graphical Help File (Version 2.0), który można pobrać stąd. Plik pomocy PowerShell Graphical Help File.chm umiejscowamy do wybranej lokalizacji, następnie w skrypcie podajemy lokalizację pliku, wpisując dokładną nazwę pliku. Skrypt proponują umiejscowić w profilu tak, aby funkcja była gotowa do użycia od momentu uruchomienia konsoli. Użycie jest proste np. Get-GuiHelp Get-Process. Po wykonaniu polecenia otworzy się Graphical Help File z opisem i przykładami użycia wybranego polecenia. Przykład dla wersji PowerShell 2 CTP. To tyle... How Can I Tell When I Last Logged On? czyli data ostatniej sesji w konsoli W Centrum Skryptów pojawił się skrypt, który ma za zadanie wykazać date ostatniej sesji w konsoli PowerShell. Zaprezentowali i zasugerowali by umieścić skrypt w autostarcie w profilu Administratora. C:\Documents and Settings\Administrator\Menu Start\Programy\Autostart Następnie w skrócie podać ścieżke do skryptu: C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -noexit -noprofile C:\WINDOWS\SKRYPTY\LastLogon.ps1 Konsola automatycznie uruchomi się przy starcie systemu bez uruchamiania profilu, uruchomi skrypt i pokaże wynik. Jednak już od dłuższego czasu coś zauważyłem i nie ma na ten temat żadnych informacji, chyba że coś przeoczyłem. Wystarczy skopiować obojętnie jakiś skrypt do lokalizacji: C:\WINDOWS\system32\WindowsPowerShell\v1.0 I każdy skrypt zostanie automatycznie załadowany podczas startu konsoli. Wystarczy wpisać nazwe pliku bez rozszerzenia by otrzymać wynik. Jeśli konsola jest już uruchomiona i umieścimy w tej lokalizacji skrypt - nie wykona się. Trzeba zrestartować konsole, ale jest to jednorazowa sprawa. Postanowiłem tak zrobić i do tego zrestartowałem system - działa. Artykuł dostępny pod adresem: The Scripting Guys Answer Your Questions
  4. ELASTYCZNOŚĆ KONSOLI PowerShell Shell jest na tyle elastyczny że możemy w nim wykonywać prace nie związane tylko z konsolą. Po wejściu w konsole możemy uruchamiać jak w sposób normalny polecenia ze zwkłego wiersza poleceń. Wiązać w skryptach Shella polecenia z lini wiersza poleceń. Możemy beposrednio przejśc w CommandPrompt wpisując CMD, aby wyjść i na nowo wrócić do konsoli wystarczy wpisać EXIT. Możemy wykonywać pojedyńcze wiązania poleceń z konsoli WMIC. Możemy przejść całkowicie z Shella do konsoli WMIC, nastepnie wpisując Exit powrócić do Shella. Wiązać w skrypcie Shella polecenia konsoli WMIC. Wiązać i uruchamiać inne polecenia cmd z narzędzi jak SupportTools czy ResourseKit, Sysinternals itp. Uruchamiać skrypty VBS. W konsoli WMIC możemy tylko posłgiwac się poleceniami zawartami w samej konsoli. Jak uprościć sobie życie i uruchamiać skrypty PowerShell bez wpisywania pełnej ścieżki. Przechodzimy do katalogu tam gdzie znajdują się nasze skrypty. Możemy uzyć dwóch poleceń w tym celu by zmienić lokalizację: Set-Location lub dobrze znane: CD Gdy fizycznie znajdujemy się w lokalizacji gdzie umieszczone są nasze skrypty, wybrany skrypt wystarczy uruchomić poleceniem: ./NaszSkrypt.ps1 czyli ./ Na załączonym obrazku jest pokazany przykład oraz coś co poniżej opisze. AdminInfo........ Mały wpis, w którym możemy zamieścić swoje dane,imie, nazwisko, adres. Coś w rodzaju karty informacyjnej do kogo ta maszyna należy. @{Imię = "Janek"; Nazwisko = "Kowal"; Miasto = "Warszawa"; TelefonDomowy = "888-777-543"; TelefonKomórkowy ="502403202"; Adres = "Ul.Ciemna 4"; Data = "20/03/2008"; } Jesli chcemy, aby wyświetały się tylko nasze dane na koncu lini należy dodać | format-table value Jak uruchamiać skrypty VBS? Musimy przejść do katalogu w którym trzymamy te skrypty. Uruchamiamy je za pomocą hosta skryptów, przykład: CScript JakiśSkrypt.vbs Zamiana wyglądu naszej konsoli - function prompt (zamiana tekstu zgłoszenia) Na początek może przedstawie jak możemy zmieniać w cmd. W wierszu polecenia mamy do dyspozycji trzy polecenia by zmienić kolor konsoli, napis w belce tytułowej, zmienić tekst zgłoszenia. 1) Polecenie Title - zmienia napis w belce tytułowe. Przykład: Title Wiersz polecenia 2) Polecenie Prompt zmienia tekst zgłoszenia, aby wyświetlić funkcje polecenia należy wpisać prompt/?. Przełączniki w prompt możemy dokładać kolejno po sobie (nie tylko zmieniać jedną właściwość). Przykład: Prompt $T $N $G $T - dodaje datę $N - dodaje bieżący dysk $G - dodaje znak większy niż Każda właściwość musi być poprzedzona spacją. Polecenie Color zmienia kolor tła oraz kolor pierwszego planu, aby wyświetlić funkcje polecenia należy wpisać Color/? Przykład: Color 8A 8 - zmieni kolor tła na szary A - zmieni kolor pierwszego planu na zielony Prompt w PowerShellu....... Jak zamienić w belce tytułowej zawartość wyświetlania tekstu według własnych potrzeb lub wybranych właściwości oraz zamienić treść znaku zachęty i jego kolor: 1......... Zmieni w belce tytułowej - pierwszy będzie przez nas wybrany tekst "Shell" (kazdy może wpisać co mu sie podoba) nastepnie Procesów dlasza właściwość (get-process).count wylistuje w postaci liczbowej ilość procesów działających w danej chwili, nazwa komputera - pobierana z właściwości hostname. Nastepnie zmiana napisu w znaku zachety przez nas wybrana tutaj akurat jest PS Console + > zmieniona na kolor żółty function prompt { $host.ui.rawui.WindowTitle = "Shell: " + " Procesów: " + (get-process).count + " Nazwa komputera: " + (hostname) Write-Host ("PS Console" +">") -nonewline -foregroundcolor yellow return " " } Wygląda to tak: Następny: Function Prompt { Set-Location C:\ $host.UI.RawUI.WindowTitle = "Lokalizacja: " + $(get-location) Write-Host ($(Get-date -format t) + " MSH " + $(Get-Location) + "") -NoNewLine -ForeGroundColor Gray Return " " } Zmienia lokalizację na C:\, nastepnie w belce tytułowej zawidnieje napis LOKALIZACJA oraz zostanie pobrana ścieżka tej lokalizacji. Następnie zostaje zmieniony znak zachety, pobiera on aktualną godzine( Godzina i minuta) - Get-date -format t Dodaje własny napis MSH skrót od MonadShell (Monad nazwa kodowa PowerSHell) oraz zmienia kolor znaku zachety na szary. Wygląda to tak: Następny: function prompt { $host.UI.RawUI.ForegroundColor = "red" $host.UI.RawUI.WindowTitle = $Host.Name + " " + $Host.Version + " Sesja" Write-Host (" $(Get-Date) Shell>") -nonewline -fore green return " " } Ma za zadanie zmienić kolor wyświetlania całego tekstu w konsoli, tu akurat na kolor czerwony wpisem: $host.UI.RawUI.ForegroundColor = "red" , nastepnie pobiera do belki tytułowej informacje o konsoli: ConsoleHost oraz wersje Konsoli + dodaje przez nas wybrany słasny tekst. Znak zachęty zostaje zmieniony na kolor zielony w którym zostaje wyświetlana pełna data wraz z pełną godziną - godzina, minuta, sekunda, która jest wciąż odświeżana oraz dodanie własnego napisu w tym przykładzie Shell. Następny: function prompt { write-host " $(hostname) $(Get-Location):`n`Składnia polecenia:" -nonewline -foregroundcolor yellow return " " } Zamienia znak zachęty na żółto, w pierwszej koleności pobiera do znaku zachęty nazwe komputera, aktualną lokalizacje w której się znajdujemy. Pod linią znaku zachęty zostaje dodany własny komentarz: Składnia polecenia. Wygląda to tak: Kolejny: function prompt { $host.UI.RawUI.WindowTitle = "$(Get-Date) moja sesja" Write-Host (" $(Get-Date) MONAD>") -nonewline -foregroundcolor red return " " } W tytule belki okna dodaje aktualną datę z godziną uruchomienia konsoli i dodaje napis moja sesja. W znaku zachęty dodaje również aktualną odświeżaną godzinę z wybranym przez nas napisem tutaj jest MONAD po czym zmienia znak zachęty na kolor czerwony. Wygląda to tak: Jeśli chcemy dodac te same właściwości, ale tylko w belce: function prompt { $host.UI.RawUI.WindowTitle = $CurrentUser.Name + "$(Get-Date) moja sesja" } Jeśli chcemy dodac te same właściowiści, ale tylko w znaku zachęty: function prompt { Write-Host (" $(Get-Date) MONAD>") -nonewline -foregroundcolor red return " " } Kolejny: Pobobny, który pobiera do znaku zachęty date z godziną - odśweżaną, ale sama data z godziną jest w kolorze czerwonym, a dodany przez nas wybrany tekst w kolorze białym: function prompt { " SHELL>" Write-Host (get-date) -nonewline -foregroundcolor red return " " } Te polecenie zmieni: $a = (Get-Host).UI.RawUI $a.WindowTitle = "Sesja Shell" $a.BackgroundColor = "black" cls Pobierze własciwości do paska tutułowego przez nas wybrany tekst oraz zmieni tło konsoli na czarne, bez dodanie polecenia CLS, które ma za zadanie wyczyścić okno nie zmieni się tło konsoli, a jedynie tlo napisów. Jak na szybko zmienić tekst w znaku zachęty: function prompt{ "`Monad>"} Jak zmienić przez nas wybraną właściwość w znaku zachety, w tym przykładzie zostanie wyświetlona nazwa komputera: function prompt { "$env:computername > "} Jak na szybko zmienić kolor znaku zachęty oraz liter: $host.UI.RawUI.ForegroundColor = "blue" Jeśli wcześniej został użyty jakiś wpis prompt zmieniający kolor znaku zachęty po wpisie powyżej zostanie tylko zmieniony kolor wyświetlania zawartości poleceń. Function prompt zostanie zmieniona jednorazowo przy jednorazowej sesji, po zamknięciu konsoli i ponownemu uruchomieniu ustawienia konsoli jak wygląd, kolor powróci do poprzednich ustawień czy wyglądu. By zmienić prompt za każdym uruchomieniem, trzeba zmienić Myprofile, ale o tym może innym razem EDIT! Napisałem jeszcze trzy funkcje związane z prompt. Sami oceńcie. 1. function prompt { $host.UI.RawUI.WindowTitle = "Konsola PowerShell> " + " Lokalizacja: " + $(get-location) + " > Dziś " + $([DateTime]::Now.ToString("D")) Write-Host (get-date -format t) " " -nonewline -foregroundcolor red Write-Host (hostname) " > " $(Get-Location) -nonewline -foregroundcolor yellow write-host " Linia:"$host.UI.RawUI.CursorPosition.Y -nonewline -foregroundcolor green write-host " Monad> " -nonewline -foregroundcolor gray Return " " } Wygląda to tak: 2. function prompt { Write-Host " MSH " -nonewline -foregroundcolor yellow write-host " SearchEngines:" -nonewline -foregroundcolor gray write-host " [Linia]"$host.UI.RawUI.CursorPosition.Y -nonewline -foregroundcolor green Return " " } Wygląda to tak: 3. function prompt { write-host "[sesja]" [(get-location)] [($host.UI.RawUI.CursorPosition.Y)] " `n` >" -nonewline -foregroundcolor yellow Write-Host " [Monad]: " -nonewline -foregroundcolor red return " " } Wygląda to tak: Ustawianie własnego profilu - MyProfile Jak ustawić własny profil w konsoli podczas każdego uruchamiania kosnoli. Mianowicie jeśli ktoś ma własne funkcje prompt, a chce by uruchamiały się za każdym uruchomieniem konsoli musi zrobić: - stworzyć plik ps1 o nazwie- Microsoft.PowerShell_profile - w pliku Microsoft.PowerShell_profile zamieścić własny prompt lub inne ustawienia - wejść do katalogu C:\WINDOWS\system32\windowspowershell\v1.0 - w katalogu v1.0 wkleić stworzony plik - uruchomić konsole by sprawdzić czy MyProfile działa Ten plik to zwyczajny skrypt ps1, uruchamia się dość szybko, aby nie było widać powitalnego napisu M$ w pierwszej części pliku dopisać CLS, można też własny komentarz i oczywiście funkcje prompt: cls # wiadomość powitalna "Witaj w konsoli : " + $env:Username Własne MyProfile można bezproblemowo usunąć w tedy konsola powróci do systemowych ustawień. Przykładowy cmdlet Shella Cmdlet, Alias, Opis Add-Content, ac, dodaje zawartość Add-PSSnapin, asnp, dodaje wtyczkę Get-Alias, gal, pobiera alias Get-PsDrive, gdr, pobiera informacje o napędach Stop-Process, spps, zatrzymuje proces Stop-Service, spsv, zatrzymuje usługę Sort-Object, sort, sortuje obiekty Start-Sleep, sleep, uruchamia uśpienie Set-Location, cd, zmienia lokalizację Set-Item, si, Ustawia element Format-Table, ft, formatuje dane w postaci tabeli Where-Object, ?, gdzie obiekt Export-Alias, epal, eksportuje alias Get-WmiObject, gwmi, pobiera obiekt Copy-Item, cpi, kopiuje element Group-Object, group, grupuje obiekty Get-History, ghy, pobiera historię Sesja logowania Jest kilka sposobów, by sprawdzić kto się zalogował na naszej maszynie lub kto był zalogowany. Mamy do dyspozycji dwa narzędzia Sysinternals LogonSessions oraz PsLoggedOn Narzędzie LogonSessions listuje kto był ostatnio zalogowany do naszego systemu, a narzędzie PsLoggedOn listuje uzytkowników, którzy zalogowali się bezposrednio do naszego systemu. Obie aplikacje działają bez instalacji, wklejamy je do C:\Windows\System32. Działają z lini wiersza polecenia. Możemy również skorzystać z klasy WMI. Get-WMiObject Win32_LogonSessions - opisuje sesje lub sesje logowania, użytkowników który zalogował się do systemu. Get-WMiObject Win32_LoggedOnUser - opisuje relację między sesją, a kontem użytkownika korzystającym z tej sesji.
  5. Troszkę w konsoli WMIC, a dokładniej zapisie danych do pliku html wraz z formatowaniem zawartości. Jak wyświetlić tryb uruchamiania sterowników systemowych posortowanych według trybu uruchamiania w formacie Tabeli z zapisem danych jednych pod drugimi z wykonaniem pojedyńczego polecenia bez bezposredniego wejścia do konsoli: wmic sysdriver get name,pathname,startmode/Format:htable:"sortby=StartMode" > C:\Ster.htm wmic - wejście do konsoli lub jak w tym przykładzie wykonanie pojedyńczej komendy sysdriver - okreslenie własciwości get - przefiltrowanie przez nas wybranych danych name - nazwa skrótowa sterownika pathname - ścieżka sterownika startmode - tryb uruchamiania sortby - sorotowanie wybranej własciwości format - okreslenie formatu wyświetlania danych htable - format wyświetlania danych ( własciwości zpaisywane sa obok siebie) > C:\nazwa.htm - ścieżka zapisu pliku w formacie html Wygląda to tak: Jak wylistować podstawowe informacje o naszym systemie wykonując pojedynczą komende WMIC z zapisaniem informacji w pliku html: wmic os list brief /format:htable > C:\OS.htm os - wyświetla informacje na temat systemu operacyjnego list - przełacznik okreslenia danych brief - przełacznik dla polecenia list(brief - jako podstawowe informacje o naszym os) Wygląda to tak: Jak wylistować pełne informacje o naszym systemie zapisując je do pliku html w formie zapisu właściwości jedne pod drugim: wmic os list full /format:hform > C:\Os.htm hform - rodzaj wyświetlnia zapisu danych pod sobą Wygląda to tak: Jak wyświetlić rodzaje formatowania wyświetlanych poleceń. Aby dowiedzieć się jakie są dane przełączniki formatowania danych należy użyć po /format -? (znamu zapytania) czyli w przykładzie w samej konsoli: wmic , nastepnie os list brief /format -? Wyświetlą się rodzaje formatowania zawartości wyświetlania: Konsola PowerShell. Jak wyświetlić ProductId naszego systemu ( nie mylić z product key) Get-WmiObject Win32_OperatingSystem | fw SrerialNumber lub w wmic wmic os get serialnumber Jak wylistować nr productid w rejestrze: Zmieńmy lokalizację przechodząc do rejestru do konkretnej gałęzi: sel-location - zmienia lokalizację set-location hklm:software\microsoft\windows nastepnie poleceniem get-itemproperty, które pobiera właściwośc elementu, wyświetlmy productId: get-itemproperty currentversion |select ProductId Nie napisałem ostatnio kilku rzeczy na temat dirowania, więc teraz to uzupełnie. Na podbudowie wyżej wymienionych skryptów przeinaczyłem ich zadanie. Skrypt, który ma za zadanie wylistować na całym dysku C kolorami, posortowany od najwyższej daty pliki które były otwierane lub nadpisane przez sam system lub przez nas: $list = get-childitem C:\, C:\WINDOWS, C:\WINDOWS\System32 | Select-object LastWriteTime, Name | sort-object LastWriteTime -descending foreach ($objItem in $list) { if ($objItem.LastWriteTime -contains "Directory") { $fgc="cyan" } elseif ($objItem.LastWriteTime -gt "01/01/2008") { $fgc="blue" } elseif ($objItem.LastWriteTime -gt "01/01/2007") { $fgc="green" } elseif ($objItem.LastWriteTime -gt "01/01/2006") { $fgc="red" } elseif ($objItem.LastWriteTime -gt "01/01/2005") { $fgc="gray" } else { $fgc="white" } write-host $objItem.LastWriteTime, $objitem.name -foregroundcolor $fgc } pliki które były owarte lub napisane od 01/01/2008 w góre - kolor blue 01/01/2007 - kolor green 01/01/2006 - red 01/01/2005 - gray Pozostałe pliki wszystkie poniżej 2005 beda zaznaczone na kolor biały. Wygląda to tak: Podobny skrypt, który ma za zadanie wylistować wszystkie dokumenty word znajdujące się na naszym komputerze pod względem ich daty utworzenia posortowany alfabetycznie kolorami: $list = get-childitem C:\ ,D:\ -recurse -include *.doc | Select-object CreationTime, Name | sort-object Name foreach ($objItem in $list) { if ($objItem.LastWriteTime -contains "Directory") { $fgc="cyan" } elseif ($objItem.CreationTime -gt "01/01/2008") { $fgc="blue" } elseif ($objItem.CreationTime -gt "01/01/2007") { $fgc="green" } elseif ($objItem.CreationTime -gt "01/01/2006") { $fgc="red" } elseif ($objItem.CreationTime -gt "01/01/2005") { $fgc="gray" } else { $fgc="white" } write-host $objItem.CreationTime, $objitem.name -foregroundcolor $fgc } Dokumenty word starsze niż: 01-01-2008 - kolor blue 01-01-2007 - kolor green 01-01-2006 - kolor red 01-01-2005 - kolor gray Pozostałe młodsze od daty 2005 kolor biały.
  6. DIROWANIE Znane jest zapewne polecenie DIR do wylistowania zawartości katalogu, podkatalogu folderu. Ograniczone polecenie typu: Przefiltrowanie po członowej nazwie pliku, w przykładzie: Dir w* Czy przefiltrowanie po nazwie z wyświetleniem własciciela pliku, w przykładzie: Dir/q w* Czy też przejście do innego katalogu z przefiltrowaniem po nazwie z wyświetleniem samej zawartości bez dodatkowych informacji, w przykładzie: cd C:\WINDOWS\System32 Dir/B x* Jeśli dla kogoś przechodzenie z katalogu do katalogu jest niewygodne to może dodac do menu kontekstowego WIERSZ POLECENIA. Prawoklikiem na dany folder - katalog, klikamy na wiersz polecenia, a tam bezposrednio otworzy się wiersz poleceń z ścieżką danego katalogu. O to skrypt Reg, który dodaje te wartość do rejestru: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shell\cmd] @="Wiersz polecenia" [HKEY_CLASSES_ROOT\Directory\shell\cmd\command] @="C:\\WINDOWS\\System32\\cmd.exe /k cd \"%1\"" Zapisujemy wartośći do notatnika, zapisz jako - zaznaczamy wszytskie pliki i dodajemy wartośc REG. Ale mamy konsolowe polecenie Get-ChildItem, którym możemy wyświetlać zawartości katalogów, podkatalogów, dysku. Wyszukiwać na całym dysku interesujących nas plików z konkretnym rozszerzeniem. Wylistować zawartość rejesteru. Otwierać dokumenty, kasowac dokumenty, Czytać dokumenty. Sortowac po nazwie, po dacie utworzenia, po ostatnim czytaniu, po ostatniej modyfikacji, przesortować według dat, wyliczyć. Żeby dowiedzieć się jakie te polecenie ma własciwości oraz metody należy użyć polecenia: Get-ChildItem | Get-Member Zostaną wyświetlone metody i własciwości jakie możemy przeprowadzać na obiekcie. Na początek kilka skryptów! Pierwszy skrypt, gdzieś te perełke znalazłem na necie i dodałem kilka rzeczy, który ma za zadanie wylistować partycje systemową. Pliki exe - zaznaczone na kolor żółty .cmd - zielone ps1 - czerwone vbs - czerwone dll - różowate txt - Cyan .url - ciemny zielony katalogi - niebieski Zawartość wyświetlana w 3 kolumnach. Reszta plików wyświetlana jest kolorem białym. Function AllColorListWide ($path=$pwd,$Columns=3,[switch]$PassTru,[switch]$recurse,[switch]$directory) { $origFg = $host.ui.rawui.foregroundColor $max = [int]($Host.UI.RawUI.WindowSize.Width/$Columns) $list = Get-ChildItem C:\ -recurse Foreach ($Item in $list) { $field =($item.name.padRight($max).Substring(0,($Max-1))+ ' ') If ($item.name.length -gt $max -1) {$field = $field.Substring(0,($Max -3)) + '...'} If ($item.PSISContainer) { $Host.UI.Write("Blue",$host.ui.rawui.BackgroundColor,$field) } ElseIf (!$directory) { Switch ($Item.Extension) { ".Exe" {$foregroundColor = "Yellow"} ".cmd" {$foregroundColor = "Green"} ".ps1" {$foregroundColor = "Red"} ".vbs" {$foregroundColor = "Red"} ".dll" {$foregroundColor = "Magenta"} ".txt" {$foregroundColor = "Cyan"} ".url" {$foregroundColor = "DarkGreen"} Default {$foregroundColor = $origFg} } $Host.UI.Write($foregroundColor,$host.ui.rawui.BackgroundColor,$field) } If ($PassTru) {$Item} } $Host.UI.WriteLine() } AllColorListWide A wygląda to tak: Drugim podobym skryptem, który ma za zadanie wylistować kolorem zawartość C:\, C:\WINDOWS, C:\WINDOWS\System32, sort: Folery, katalogi - Cyan Exe - czerwony Vbs - ciemny zielony dll - żółty Dodatkowo wyświetla atrybut pliku, Ostatnie czytanie, Lenght - długość. Wylistowanie w jednej kolumnie. gci C:\, C:\WINDOWS, C:\WINDOWS\System32 | format-table | out-string -stream | %{ if ($_[0] -match "d") {write-host $_ -fore cyan} elseif ($_ -match ".exe") {write-host $_ -fore red} elseif ($_ -match ".vbs") {write-host $_ -fore DarkCyan} elseif ($_ -match ".dll") {write-host $_ -fore yellow} else {write-host $_} } Wygląda to tak: Kolejny - wariacja. Skrypt, który ma za zadanie wylistować cały dysk C kolorami z datą i godziną uworzenia. $list = get-childitem C:\, C:\WINDOWS, C:\WINDOWS\System32 | sort-object foreach ($objItem in $list) { if ($objItem.Attributes -contains "Directory") { $fgc="cyan" } elseif ($objItem.Extension -eq ".ps1") { $fgc="blue" } elseif ($objItem.Extension -eq ".exe") { $fgc="green" } elseif ($objItem.Extension -eq ".zip") { $fgc="red" } elseif ($objItem.Extension -eq ".rar") { $fgc="red" } else { $fgc="gray" } write-host $objItem.Name, $objItem.Length, $objItem.LastWriteTime -foregroundcolor $fgc } A wygląda to tak: Nastepny skrypt!! Skrypt, który wskazuje konkretny folder w którym mamy własne dokumenty. W tym przykładzie tymi dokumentami są inne skrypty. Skrypt ma za zadanie posortować - przefiltrować skrypty kolorami po nazwie. Więc: Skrypt, który zawiera w nazwie słowo Time - kolor żółty List - czerwony Show - zielony Get - różowaty Wygląda to tak: gci C:\WINDOWS\SHELL | format-list -property name | out-string -stream | %{ if ($_ -match "Time") {write-host $_ -fore yellow } elseif ($_ -match ".List") {write-host $_ -fore red } elseif ($_ -match ".Show") {write-host $_ -fore green } elseif ($_ -match ".Get") {write-host $_ -fore magenta } else {write-host $_ } } Skrypt, który ma za zadanie wylistować wszystkie pliki exe znajdujące się w katalogu Windows: $gdzie = "C:\windows" $skladnia = get-Childitem $gdzie -recurse | where{$_.Extension -match "exe"} ` | ft -group{$_.Path} name, directory -autosize $skladnia Wygląda to tak: Jak wyświetlić wszystkie dokumenty Word znajdujące się na naszym komputerze: get-childitem C:\ ,D:\ -recurse -include *.doc w innej postaci: get-childitem C:\ ,D:\ -recurse -include *.doc | Format-List FullName Wyświetlenie wszytstkich dokumentów Word po nazwie wraz z datą ostatniego otwarcia dokumentu, daty utworzenia, ostatniej akcji. get-childitem C:\ ,D:\ -recurse -include *.doc | Format-table name, LastWriteTime, CreationTime, LastAccessTime Filtrowanie pliku po jego nazwie członowej w konkretnym folderze w dwóch kolumnach: Get-Childitem C:\WINDOWS\SHELL | where-object -FilterScript {$_.Name -like "E*"} | fw Name -Column 2 Zliczanie elementów - sumowanie. Czyli wyliczenie statystiki w postaci liczbowej poszczególnych rozszerzeń plików: get-childitem | group-object extension To samo tylko bez zgrupowania obiektów: get-childitem | group-object extension -noelement Wylistowanie konkretnej gałęzi rejestru, w tym przypadku zostanie wyświetlona zawartość klucza UNISTALL: Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall W innej formie wyświetlania: Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall | sort-object name | format-list name Wygląda to tak: Wlistowanie w trzech kolumnach zawartości katalogu Windows: Get-ChildItem C: | Sort-Object Name | Format-Wide FullName -Column 3 Co najfajniejsze!!! Dla osób przywyczajonych do polecenia DIR, mogą one nadal w konsoli się nią posługiwac. Jak w sposób do tej pory stosowany w lini wiersza polecen jak i w konsoli. Dla przykładu podobny listing z poleceniem DIR: DIR C:\WINDOWS\Prefetch | Format-Wide -Column 3 Oczywiście wystarczy użyć samego polecenia Get-ChildItem by wylistować folder w danej lokalizacji. Listing plików znajdujących się na dysku C, posortowany rosnąco według daty, którą sami wybraliśmy. Polecenie poniżej wylistuje wszystkie pliki, które zostały nadpisane - czytane od 01-01-2008 az do daty końcowej posortowane według daty chierarchicznie: Get-ChildItem -Path C:\ -Recurse | Where-Object {$_.LastWriteTime -gt "01/01/2008"} | Sort-Object LastWriteTime | format-table name, LastWriteTime Tym poleceniem wyświetlimy liste malejącą plików, które zostały nadpisane - czytane poniżej 01-01-2008 aż do daty końcowej, lista może być dość spora. Sort chierarchiczny. Get-ChildItem -Path C:\ -Recurse | Where-Object {$_.LastWriteTime -lt "01/01/2008"} | Sort-Object LastWriteTime | format-table name, LastWriteTime Kolejnym poleceniem wylistujemy zawartośc katalogu Windows plików, które powstały czy zostały stworzone w tym katalogu: Get-ChildItem c:\WINDOWS | Sort-Object CreationTime | Ft name, CreationTime Wylistowanie całej zawartość dysku C plików Txt z pełną ścieżką dostepu: get-childitem C:\ -Recurse -Include *.txt | Format-List Fullname Wylistowanie plików Txt w katalogu, którym aktualnie się znajdujemy: get-childitem *.txt Jak wyświetlić wszystkie pliki z rozszerzeniem .OLD na dysku C w pełną ściezką dostępu: get-childitem C:\ -Recurse *.old | Format-List Fullname Jak wylistować ilość wszystkich katalogów znajdujących się na dysku C w postaci liczbowej : (gwmi Win32_Directory).Count lub get-wmiobject -Class Win32_Directory |group-object status Jak wylistować w postaci liczbowej wszytskie pliki TXT znajdujące się na naszym komputerze: (Get-Childitem C:\ ,D:\ -recurse *.txt).Count Jak wylistować w postaci liczbowej wszytskie pliki EXE znajdujące się na naszym komputerze: (Get-Childitem C:\ ,D:\ -recurse *.exe).Count Jak wylistować wszytskie pliki w postaci liczbowej, które znajdują się na dysku C: (Get-Childitem C:\ -recurse).Count Jak wylistować pliki na dysku C w dwóch kolumnach , które w nazwie członowej zaczynają się od liter "AD": Get-Childitem C:\ -recurse | where-object -FilterScript {$_.Name -like "ad*"} | fw Name -Column 2 Jak wylistować biblioteki dll w system32 po członowej nazwie pliku: Get-ChildItem -Path C:\WINDOWS\System32\w*.dll Jak wylistowac biblioteki dll w system32 po członowej nazwie oraz cyfrach w której nazwie się znajdują: Get-ChildItem -Path C:\WINDOWS\System32\w*32*.dll Get-ChildItem -Path C:\WINDOWS\System32\w*1*.dll Get-ChildItem -Path C:\WINDOWS\System32\*7*.dll Jak wyświetlić czy dany obiekt jest Katalogiem czy plikiem: Get-ChildItem C:\WINDOWS | Format-Table name,@{Label="DIR";Expression={if($_.Mode -like "d*"){"Katalog"}else{"Plik"}}} To samo tylko wyświetla informację "TAK lub NIE" jest katalogiem, nie jest katalogiem: Get-ChildItem C:\ | Format-Table name,@{Label="Katalog";Expression={if($_.Mode -like "d*"){"Tak"}else{"Nie"}}} Mały skrypt, który wyświetla przez nas wybraną datę jakie pliki są stare czy nowe po dacie utworzenia w naszym komputerze. Pliki poniżej 2004 uznawane są za stare: get-childitem C:\WINDOWS | select name, extension, { if ($_.CreationTime.year -lt 2004) { "STARE" } else { "NOWE" } } Podobny skrypt, który uznaje że pliki poniżej 2004 roku, które nie zmieściły się w dacie powyżej 2004, a dokładniej nie zostały otwarte czy nadpisane sortowane są: Old File oraz New File. Krótko pisząć aplikacje, które od dłuższego czasu sobie są w naszym systemie, ale nie były już dawno do niczego uzywane. get-childitem C:\WINDOWS | select name, extension, { if ($_.LastWriteTime.year -lt 2004) { "old file" } else { "new file" } } Znalazłem na necie taki skrypcik, który wylistuje ukryte pliki znajduące się na dysku C, wypisze czy to jest plik systemowy, czy tylko do odczytu, czy archiwalny: $i=0 $GciFiles = get-Childitem c:\ -force foreach ($file in $GciFiles) {$i++} $GciFiles |sort |ft name, attributes -auto Write-host "Ilość elementów: " $i
  7. TRYB STARTOWANIA STEROWNIKÓW Dzień dobry po przerwie. Wiosna przyszła, ptaszki mi ćwierkają i trawa urosła. Napisałem kilka rzeczy na podbudowie wyżej wymienionych zagadnień. Mowa będzie sterownikach systemowych i ich trybie startowania. 1. Skrypt, który sortuje kolorem tryb uruchamiania steroników systemowych, ale z takim sortem: - posortowane własciwości (auto, disabled, manual,boot, system) Sort sprowadza się tak: tryb auto - stan auto - zielony tryb disabled - stan disabled - czerowny tryb diasbled - stan running - taki taki wyblakły niebieski tryb manual - stan running - żółty tryb manual - stan stopped - magenta - taki różowaty tryb boot - stan running - niebieski tryb system - stan stopped - biały tryb system - stan running - zielonkawy Wygląda to tak: Kod skryptu: $sterowniki=Get-wmiobject -class "Win32_SystemDriver" | sort-Object StartMode foreach ($svc in $sterowniki) { if (($svc.startmode -like "Auto") -AND ($svc.state -like "running")) { write-host $svc.displayname "<"$svc.state">" "["$svc.startmode"]" "["$svc.name"]" -foregroundcolor "green" } else { if (($svc.startmode -like "Disabled") -AND ($svc.state -like "running")) { write-host $svc.displayname "<"$svc.state">" "["$svc.startmode"]" "["$svc.name"]"` -foregroundcolor "Cyan" } else { if (($svc.startmode -like "Disabled") -AND ($svc.state -like "stopped")) { write-host $svc.displayname "<"$svc.state">" "["$svc.startmode"]" "["$svc.name"]"` -foregroundcolor "Red" } else { if (($svc.startmode -like "Manual") -AND ($svc.state -like "running")) { write-host $svc.displayname "<"$svc.state">" "["$svc.startmode"]" "["$svc.name"]"` -foregroundcolor "Yellow" } else { if (($svc.startmode -like "Manual") -AND ($svc.state -like "stopped")) { write-host $svc.displayname "<"$svc.state">" "["$svc.startmode"]" "["$svc.name"]"` -foregroundcolor "magenta" } else { if (($svc.startmode -like "boot") -AND ($svc.state -like "running")) { write-host $svc.displayname "<"$svc.state">" "["$svc.startmode"]" "["$svc.name"]"` -foregroundcolor "blue" } else { if (($svc.startmode -like "System") -AND ($svc.state -like "stopped")) { write-host $svc.displayname "<"$svc.state">" "["$svc.startmode"]" "["$svc.name"]"` -foregroundcolor "white" } else { if (($svc.startmode -like "System") -AND ($svc.state -like "running")) { write-host $svc.displayname "<"$svc.state">" "["$svc.startmode"]" "["$svc.name"]"` -foregroundcolor "gray" } } }}}}}}} Jeśli ktoś woli inny sort niż Tryb uruchamiania, a woli uporządkowane alfabetycznie to zaraz w pierwszej lini kodu po prawej stronie zmienić własciwości StartMode na Name. $sterowniki=Get-wmiobject -class "Win32_SystemDriver" | sort-Object (name) Wygląda to tak: Skrypt jako pierwsze w lini wyświetla pełna nazwe sterownika, Aktualny stan, Tryb uruchamiania, nazwe skrótową. Nastepna wariacja skryptu. Wyświetla tylko posortowany stan uruchamiania sterowników systemowych. Tryb auto - zielony Tryb diabled - czerwony Tryb manual - niebieski Tryb boot - biały Tryb system - różowaty W pierwszej kolejności wyświetla się tryb uruchamiania, pózniej pełna nazwa sterownika, aktualny stan sterownika Formatowanie jest bardziej czytelne wizualnie i estetyczniejsze, wygląda to tak: Kod skryptu: $strComputer = "." $colItems = get-wmiobject -class "Win32_SystemDriver" -namespace "root\CIMV2" ` -computername $strComputer | select-object StartMode, Name, DisplayName, State | sort -descending "StartMode" foreach ($objItem in $colItems) { if ($objItem.StartMode -like "Auto" ) { write-host $objItem.StartMode, $objItem.Name, $objItem.DisplayName, $objItem.State -foregroundcolor "green" } if ($objItem.StartMode -like "Disabled") { write-host $objItem.StartMode, $objItem.Name, $objItem.DisplayName, $objItem.State -foregroundcolor "red" } if ($objItem.StartMode -like "Manual") { write-host $objItem.StartMode, $objItem.Name, $objItem.DisplayName, $objItem.State -foregroundcolor "blue" } if ($objItem.StartMode -like "Boot") { write-host $objItem.StartMode, $objItem.Name, $objItem.DisplayName, $objItem.State -foregroundcolor "white" } if ($objItem.StartMode -like "System") { write-host $objItem.StartMode, $objItem.Name, $objItem.DisplayName, $objItem.State -foregroundcolor "magenta"} write-host } Kolejna wariacja to jest ten sam skrypt wyżej opisany, ale z tą różnicą ze wyświetla dane oddzielone od siebie separatorem. Wygląda to tak: Kod skryptu: $strComputer = "." $colItems = get-wmiobject -class "Win32_SystemDriver" -namespace "root\CIMV2" ` -computername $strComputer | sort -descending "name" foreach ($objItem in $colItems) { if ($objItem.StartMode -like "Auto" ) { write-host $objItem.DisplayName, $objItem.StartMode, $objItem.Name, $objItem.State -foregroundcolor "green" -separator ">`n`t"} if ($objItem.StartMode -like "Disabled") { write-host $objItem.DisplayName, $objItem.StartMode, $objItem.Name, $objItem.State -foregroundcolor "red" -separator ">`n`t"} if ($objItem.StartMode -like "Manual") { write-host $objItem.DisplayName, $objItem.StartMode, $objItem.Name, $objItem.State -foregroundcolor "blue" -separator ">`n`t"} if ($objItem.StartMode -like "Boot") { write-host $objItem.DisplayName, $objItem.StartMode, $objItem.Name, $objItem.State -foregroundcolor "white" -separator ">`n`t"} if ($objItem.StartMode -like "System") { write-host $objItem.DisplayName, $objItem.StartMode, $objItem.Name, $objItem.State -foregroundcolor "magenta" -separator ">`n`t"} write-host } Dobrym narzedziem wyświetlającym stan sterowników jest LoadOrder z Sysinternals. Malutki, działa bez instalacji. ładny interfejs graficzny. Formatowanie wyświetlania daty. W każdym skrypcie można sobie dopisać date jeśli komuś jest to potrzebne do dokumentacji. Porobiłem gotowe wariacje: Kod: get-date [DateTime]::Now.ToString("d") [DateTime]::Now.ToString("D") [DateTime]::Now.ToString("MM/dd/yyyy") [DateTime]::Now.ToString("MMMM/dddd/yyyy") [DateTime]::Now.ToString("MMM/ddd/yyyy") get-date -uformat "%Y / %m / %d / %A / %Z" Wyświetlenie wersji konsoli PowerShell i jego podstawowych info: W samej konsoli wystarczy polecenie: host lub Get-host Natomiast poza konsolą w wierszu poleceń nalezy wpisać: PowerShell.exe -? Wyświetlą się przełączniki podstawowe dla ustawienia konsoli, takie jak wersja, startowanie konsoli bez bannera wydawcy, startowanie konsoli bez profilu użytkownika.
  8. Jak odszukać i odczytać klasy WMI? 1. Start/ustawienia/panel sterowania/wydajność i konseracja/narzędzia administracyjne/zarządzanie komputerem/usługi i aplikacje/podswietlić - sterowanie usługą WMI - prawoklik, a tam właściwości - odwiedzić karte ZABEZPIECZENIA. Znajdują się w niej PRZESTRZENNE NAZWY WMI - otworzyć warste root. Każda nazwa jest pod konkrentne własciwości. Jednak najwięcej klass wmi posiada Root/CIMV2 -ok 918. Jak pisałem wczesniej mozna podejrzeć każdą srubke systemu. Możemy wejść do konsoli WMIC i po kolei odkrywać klasy, a o to sposoby: alias class -? alias list brief alias list system alias get target /all alias list full alias list alias list system /format:table Czasami przy listach full powstaje jakiś błąd wewnetrzny i nie odkryje klass. Nie wiem czy to błąd u mnie tylko!!!! 2. Jeszcze inaczej! Tester oprzyrządowania instrumenracji zarządzania windows - WBEMTEST.exe - wpisać w uruchom. Kliknąć POŁĄCZ, w tabelce wpisać nazwe root/cimv2 znowu w tej samej tabelce połącz. W głównej tabeli kliknać na WYLICZ KLASY, pojawi się podtabelka a wniej CYKLICZNIE i dać OK. Pojawią się wszytskie klasy z konkretnej nazwy przestrzeni klas. W tym przypadku - root/cimv2. Zauważymy że nie istnieją tylko klasy Win32_ ale i również CIM oraz inne, ale na razie nie będe o tym mówił. Wiem - sposób zakręcony odkrywania klas. 3. Ale jeśli masz konsole PowerShell zajmie to 5 sekund. Aby wyświetlić Przestrzenie nazw WMI należy: gwmi -class __Namespace -namespace root | fl name odkrywamy dalej. Pisałem wyżej o nazwie przestrzennej root/cimv2 więc wystarczy w kodzie dopisać: gwmi -class __Namespace -namespace root/cimv2 | fl name - wysietli nazwy przestrzenne nalezące do cimv2 Aby wyświetlić listę dostawców WMI lista dostawców wmi należy: gwmi -class __Provider -namespace $wmiNS | Sort-Object -property Name | format-list name No to poznaliśmy już nazwy przestrzenne WMI Więc odkrywamy same klasy jak pisałem poprzednio, aby wyświetlić wszystkie klasy należy: Get-WmiObject -list , ale polecenie te wyświetli wszytskie klasy tylko należące do root/cimv2 no to odkrywamy: get-WmiObject -namespace "root\directory\ldap" -list get-WmiObject -namespace "root\cimv2" -list get-WmiObject -namespace "root\Policy" -list get-WmiObject -namespace "root\cimv2\ms_409" -list get-WmiObject -namespace "root\directory\LDAP" -list to nie wszystkie polecenia odkrywania klasy. Uzyjcie gwmi -class __Namespace -namespace root | fl name jak pisałem wyżej i pozmieniajcie nazwy: get-WmiObject -namespace "root\TUTAJ" -list 4. Cóż jeśli ktoś nie ma PowerShell, a konsola WMIC sie nie podoba, to jeszcze zostają skrypty WMI. Działają bez instalacji niczego - no chyba ze systemu:D O skrytpach WMI nie będe sie rozpisywał bo nie poruszam się w nich dobrze,ale..... SKRYPT WMI WYŚWIETLAJĄCY LISTĘ WSZYSTKICH KLAS W NAZWIE PRZESTRZENNEJ ROOT/CIMV2 strComputer = "." Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ strComputer & "\root\cimv2") For Each objclass in objWMIService.SubclassesOf() Wscript.Echo objClass.Path_.Class Next WKLEIĆ DO NOTATNIKA I ZAPISAĆ JAKO ROZSZERZENIE VBS np.. CImv2List.vbs Skrypt wkleić do katalogu Windows. uruchamiamy go z wiersza polecenia za pomocą hosta skrytów........ CScript CImv2List.vbs SKRYPT WYŚWIETLAJĄCY WSZYSTKIE NAZWY PRZESTRZENNE WMI strComputer = "." Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ strComputer & "\root") Set colNameSpaces = objWMIService.InstancesOf("__NAMESPACE") For Each objNameSpace In colNameSpaces WScript.Echo objNameSpace.Name Next SKRYPT WYŚWIETLAJĄCY WSZYSTKICH DOSTAWCÓW WMI strComputer = "." Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ strComputer & "\root\cimv2") Set colWin32Providers = objWMIService.InstancesOf("__Win32Provider") For Each objWin32Provider In colWin32Providers WScript.Echo objWin32Provider.Name Next PS. Nie jest to wszytsko opisane szczegółowo jeśli chodzi o schemat działania dostawców, klas, nazw przestrzennych. Musiałbym wkleić cały laborat, a kto to będzie czytał. Mam nadzieje ze w miare wszytsko zrozumiale opisałem. CD........... Aby przefiltrować klasy i wyświetlić tylko klasy CIM należy: Get-WmiObject -List | Where-object {$_.name -like "CIM*") Jeżeli chcemy przefiltrować klasy tak, aby wyświetlały w nazwie własnej wybraną przez nas własciwość: get-wmiobject -list | where {$_.name -match "System"} zostane wyświetlone klasy, które w nazwie posiadają rzeczownik system. Dalej...... get-wmiobject -list | where {$_.name -match "ip"} get-wmiobject -list | where {$_.name -match "Memory"} Cd... Klasa Win32_Directory - reprezentuje pozycje katalogu w systemie komputerowym win32, który w logiczny sposób grupuje pliki danych znajdujące się w nim i dostarcza informacje o ścieżce dla zgrupowanych plików. Inaczej mówiąc wyświetli wszytskie foldery wraz z pełną ścieżką dostępu, w przykładzie.... Get-WmiObject Win32_directory | Format-table name Skracanie lini poleceń: GWMI to samo znaczy co Get-WmiObject ft to samo znaczy co Format-table Efekt: GWMI Win32_directory | Ft name Rodzaje formatowania: Format-table -ft Format-wide -fw Format-custom -fc Format-list -fl CD.... Klasa Win32_PerfFormattedData_PerfNet_Redirector - reprezentuje obiekt wydajnośći readstator. Jest to wykaz liczników monitujących połączenia sieciowe mające początek w komputerze lokalnym. Przykład małego skryptu: Get-WmiObject Win32_PerfFormattedData_PerfNet_Redirector | Select-Object * -excludeproperty "_*" Klasa Win32_StartupCommand - reprezentuje automatyczne uruchamianie aplikacji podczas logowania się użydkownika w systemie. Mały przykład: Get-WmiObject Win32_StartupCommand |fl command, user, caption, location Klasa Win32_NetworkProtocol - reprezentuje protokół i jego charakterystyke sieciową. Przykłąd z wyświetleniem właściwości obiektu: Get-WmiObject Win32_NetworkProtocol | Get-Member Klasa Win32_IP4RouteTable - określa gdzie są rozsyłane pakiety danych - tablica routingu. Przykład: Get-WmiObject Win32_IP4RouteTable |fl Age, Caption, Description, Destination, Information, InstallDate, InterfaceIndex, Metric1, Metric2, Metric3, Metric4, Metric5, Name, NextHop, Protocol, Status, Type Get-WmiHelp Na tej stronie http://powershelllive.com/blogs/lunch/rss....p&AndTags=1 pewien pan Dr. Tobias Weltner udostępnił skrypt pomocy dla klass WMI. Odczytać nim można co dana klasa reprezentuje, opis klasy, właściwości klasy. Zastosowanie: Get-WmiHelp Win32_PageFile Get-WmiHelp Win32_OperatingSystem Skrypt Get-WmiHelp można pobrać na samym dole strony. Wyświetlanie serwisów z obiektu NET: Skrypt, który posortuje kolorem aktualny stan usług - uruchomione, wyłączone: Get-Service | ForEach-Object` {if ($_.Status -eq "stopped") {Write-Host $_.Displayname, $_.Status -foregroundcolor red } elseif ($_.Status -eq "running") {Write-Host $_.Displayname, $_.Status -foregroundcolor green }} Skrypt, który posortuje w oddzielnych tablicach właściwości stopped - running, poda nazwe skrótową usługi oraz pełną nazwe i stan: get-Service | sort-Object status | format-Table -groupby status Name, DisplayName, Status
  9. DEFRAGMENTACJA: Zastosowanie poleceń z wiersza polecenia w PowerShellu. Mamy idealny defragmentator zwany CONTIG, malutki, działa bez instalacji, doskonale defragmentuje, oczyszcza wolne miejsce, zresztą Picasso już o nim dawno pisała. Do pobrania z: http://technet.microsoft.com/en-us/sysinte...s/bb897428.aspx Wypakowac i wkleić na C do katalogu WINDOWS. Więc może zdefragmentujmy pliki startowe, zastosujmy contig, aby oczyścił wolne miejsce i posklejał rozszczepione pliki - wszytsko z podglądem, a na końcu uzyjmy systemowego defragmentatora zeby posklejał aplikacje. Tyczy się dysku C: defrag C: -b; contig -s -v c:\*.*; defrag C: Inaczej: Zapiszmy w notatniku nazwijmy MyDefrag.ps1 write-host "Defragmentacja plików startowych" -fore green defrag C: -b write-host "Defragmentacja Contig" -fore green contig -s -v c:\*.* write-host "Defragmentacja Systemowa" -fore green defrag C: write-host "Koniec działania" -fore green To by było na tyle.
  10. LISTOWANIE STEROWNIKÓW I PROCESÓW Napisałem prosty skrypt, który wypisze wykaz sterowników systemowych, uruchomionych w systemie (posortowany kolorem) wraz z trybem uruchamiania się w systemie (System, Boot,Auto, Diasbled, Manual) z kolorowym sortem. Z końcową statystyką trybu sterowników, stanem sterowników, sumą i statusem: write-host write-host "Wyświetla status z trybem uruchamianych sterowników systemowych" write-host "----------------------------------" write-host $strComputer = "." $colItems = get-wmiobject -class "Win32_SystemDriver" -namespace "root\CIMV2" ` -computername $strComputer | write-output | sort -descending "State" foreach ($objItem in $colItems) { if ($objItem.State -like "Running" ) { write-host $objItem.Name, $objItem.DisplayName, $objItem.State -foregroundcolor "green" } if ($objItem.State -like "Stopped") { write-host $objItem.Name, $objItem.DisplayName, $objItem.State -foregroundcolor "red" } if ($objItem.StartMode -like "Auto" ) { write-host $objItem.StartMode -foregroundcolor "green" } if ($objItem.StartMode -like "Disabled") { write-host $objItem.StartMode -foregroundcolor "red" } if ($objItem.StartMode -like "Manual") { write-host $objItem.StartMode -foregroundcolor "blue" } if ($objItem.StartMode -like "Boot") { write-host $objItem.StartMode -foregroundcolor "white" } if ($objItem.StartMode -like "System") { write-host $objItem.StartMode -foregroundcolor "magenta" } write-host write-host } write-host "Statystyka" write-host "--------------------" get-wmiobject -Class Win32_SystemDriver |group-object startmode write-host "Stan sterowników" write-host "--------------------" get-wmiobject -Class Win32_SystemDriver |group-object state write-host "Suma i status sterowników" write-host "--------------------" get-wmiobject -Class Win32_SystemDriver |group-object status write-host Jeśli kogoś interesuje PowerShell to zamieszczam skrypick ShowListService do testowania. Gdzieś znalazłem demo tego skryptu, chyba z książki Monad i go rozpisałem. Skrypt wyświetla usługi systemowe. Sortując pełną nazwą usługi oraz sort kolorem: Tryb Wyłączony - stan wyłączony - Czerwony Tryb Auto - stan uruchomiony -zielony Tryb Manualny - stan uruchomiony - Żółty Tryb Manualny -stan wyłaczony - magenta Mozna go dalej rozpisywać. $uslugi=Get-wmiobject -class "Win32_service" |sort-object Displayname foreach ($svc in $uslugi) { if (($svc.startmode -like "Auto") -AND ($svc.state -like "Running")) { write-host $svc.displayname "["$svc.state"]" "["$svc.startmode"]" "["$svc.name"]" -foregroundcolor "green" } else { if (($svc.startmode -like "Disabled") -AND ($svc.state -like "Stopped")) { write-host $svc.displayname "["$svc.state"]" "["$svc.startmode"]" "["$svc.name"]"` -foregroundcolor "Red" } else { if (($svc.startmode -like "Manual") -AND ($svc.state -like "Stopped")) { write-host $svc.displayname "["$svc.state"]" "["$svc.startmode"]" "["$svc.name"]"` -foregroundcolor "Yellow" } else { if (($svc.startmode -like "Manual") -AND ($svc.state -like "running")) { write-host $svc.displayname "["$svc.state"]" "["$svc.startmode"]" "["$svc.name"]"` -foregroundcolor "magenta"} } } } } Uzupełnienie!!! Jeśli ktoś woli inny sort niż jest taki tu zrobiony to w skypcie na samej górze w pierwszej lini : $uslugi=Get-wmiobject -class "Win32_service" |sort-object DisplayName ------ na końu prawej strony musi zmienić właściwość w tym momencie sort jest po pełnej nazwie alfabetycznej(DisplayName), aby zmienić sort na aktualny stan uruchomienia serwisów czyli sort running-stopped wystarczy ze w lini dopisze zmieniając własciwość DisplayName na STATE: $uslugi=Get-wmiobject -class "Win32_service" |sort-object STATE Aby posortować skrypt sortem według trybu uruchamiania usług AUTO, MANUAL, STOPPED w lini musi dopisać: $uslugi=Get-wmiobject -class "Win32_service" |sort-object STARTMODE, nie zmieni to dalej własciwości skryptu jedynie będzie inny sort. Jak już sie rozpisałem to jeszcze coś zamieszcze, kiedyś chodziłem po stronie M$, wszedłem na te strone: http://www.microsoft.com/technet/scriptcen...msh/output.mspx na samym dole strony jest skrypcik, który pokazuje liste procesów uruchomionych w systemie sortuje kolorem te procesy, które uzywają największą liczbę pamięci i tylko te. Lista procesów jest rożucona. Wygląda on tak: $strComputer = "." $colItems = get-wmiobject -class "Win32_Process" -namespace "root\CIMV2" ` -computername $strComputer | write-output foreach ($objItem in $colItems) { if ($objItem.WorkingSetSize -gt 3000000) { write-host $objItem.Name, $objItem.WorkingSetSize -foregroundcolor "magenta" } else {write-host $objItem.Name, $objItem.WorkingSetSize} Postanowiłem nieco zmienić, więc na podbudowie tego kodu napisałem coś podobnego, ale zupełnie innego. Skrypt ten sortuje na 3 sposoby: Kolor czerwony - procesy które uzywają najwięcej pamęci Kolor niebieski - procesy posrednie Kolor magenta - procesy które uzywają najmniej pamięci Do tego posotrowany od najwiekszej do najmniejszej wartości uzycia pamięci. KOD: $strComputer = "." $colItems = get-wmiobject -class "Win32_Process" -namespace "root\CIMV2" ` -computername $strComputer | write-output | sort -descending WorkingSetSize foreach ($objItem in $colItems) { if ($objItem.WorkingSetSize -gt 9000000) { write-host $objItem.Name, $objItem.WorkingSetSize -foregroundcolor "red" } elseif ($objItem.WorkingSetSize -gt 1000000) { write-host $objItem.Name, $objItem.WorkingSetSize -foregroundcolor "blue" } elseif ($objItem.WorkingSetSize -lt 1000000) { write-host $objItem.Name, $objItem.WorkingSetSize -foregroundcolor "magenta" }} Wygląda to tak:
  11. A jak w PowerShellu. Na przykładzie procesów. Jak mówiłem wcześniej klasa Win32_process korzysta z WMI - mangament instrumentation. W PowerShellu zamiast PATH wpisujemy: Get-WmiObject Win32_process - od razu będzie wykaz wszytskich procesów załadowanych w systemie - lista będzie dość spora. Ale żeby wyświetlić właściwości tej klasy. Jak można filtrowac dane, jakie są dostepne dane i jakie czynności możemy wykonać nalezy użyć: Get-WmiObject Win32_process | Get-Member. Sama konsola ma wbudowane polecenie Get-Process i właśnie te polecenie jest oparte na obiektach NET z taką różnicą że danych do uzyskania jest więcej z czym idzie więcej mozliwości. aby wyświetlić właściwości nalezy użyć Get-Process | Get-Member OPERACJE NA PROCESACH: Wracając do tematu procesów. Może zaczne od modulów czyli dll, których używa konkretny proces. Możemy użyć systemowej komendy Tasklist /m. Albo doskonałe ListDlls: LINK1 LINK2 Narzędzie list modules ma to do siebie że wypisze tylko moduły interesującego nas procesu, uzycie z lini wiersza polecenia: listmodules PID Mamy spis bibliotek uzywanych przez konkretny proces, aby zasiegnąć szczegółowej informacji na temat wybranej przez nas biblioteki warto użyć narzędzia FILEVER dostepne z zestawu Support Tools. Działa z lini wiersza poleceń: Aby uzyskać informacje na temat interesującej nas biblioteki nalezy wpisać ścieżke: Filever/v "C:\WINDOWS\System32\Nazwa.dll" Narzędzia bardzo dobre, swego czasu jedyne. Ale jeśli mamy konsole PS stają sie one zastępowe, pomocnicze. Na początek wylistujmy Get-process | Format-table name, Company, StartTime, MainWindowTitle czyli nazwa procesu, wydawca procesu - lub nazwa firmy, Czas startu procesu oraz tytuł okienek: Przefiltrujmy tak, aby wyświetlony został proces gadu-gadu: Get-process gg | Format-list name, Company, StartTime, MainWindowTitle Wylistowane procesów w postaci grupowej do którego wydawcy należą: get-process | group-object -property company -noelement Podobne wylistowanie, ale dane zostaną wyświetlone jedne pod drugim w grupach: get-process | sort company | format-Table ProcessName -groupby company Podobny przykład co do pierwszego. Wyświetlanie w grupach, ale z wyświetleniem nazwy procesu: get-process | group-object company | sort-object count -descending Wyświetlenie podstawowych informacji na temat procesu gg: Get-Process gg Wyświetlenie wybranych przez nas właściwości procesu gg: get-process alg | format-table name, Id, cpu, company, basepriority -autosize Wyświetlenie ile czasu mineło od uruchomienia aplikacji gg: $u=(get-date).Subtract((Get-Process GG).starttime);Write-Host $u.Days dni $u.hours godzin $u.minutes minut $u.seconds sekund Wyświetlenie ile czasu mineło od uruchomienia wszystkich procesów: function get-uptimeprocess { foreach ($proc in (Get-Process | where {$_.name -ne "Idle" -AND $_.name -ne "System"})) { $u=(get-date).Subtract($proc.starttime); Write-Host $proc.name `t $u.Days dni $u.hours godzin $u.minutes minut $u.seconds sekund }} get-uptimeprocess Wyświetlenie nazwy procesów oraz data uruchomienia w postaci nazwy dnia: get-process | select-object ProcessName, @{Name="Start Day"; Expression = {$_.StartTime.DayOfWeek}} Przefiltrowanie procesów tak, aby wyświetlał procesy według wpisania Firmy, Dostawcy!! W tym przypadku wyświetli wszytskie procesy Microsoft: get-process | where-object {$_.Company -match ".*Microsoft*"} | format-table Name, ID, Path -Autosize Wyświetlenie modułów - bibliotek, których używa konkrenty process. W tym przypadku gg: (Get-Process gg).Modules | Format-Table lub get-process gg | foreach {$_.modules} Wyświetlenie ilości modułów używanych przez process w postaci liczbowej: (Get-Process gg).Modules.Count Wyświetlenie danych szczegółowych bibliotek, które używa dany process: get-process alg| select-object processname -expandproperty modules |format-list Wyświetlenie odwrotne. Skrypt wyświetli przez wybraną przez nas biblioteke - ile procesów danej biblioteki używa. get-process | select processname -expand Modules -ea SilentlyContinue | where {$_.ModuleName -like "rasman.dll"} | group {$_.ModuleName} | format-table Skrypt gdzieś znalazłem na necie. Wyświetlający zależności pod jakimi procesami działają usługi systemowe: function plist([string]$name="*") { $Svc = get-wmiobject win32_service | sort ProcessId|group-object ProcessId $ps = @(get-process $name | sort Id) $i=0 $j=0 while($i -lt $ps.count -and $j -lt $svc.count) { if($ps[$i].Id -lt $Svc[$j].Name) { $i++; continue; } if($ps[$i].id -gt $svc[$j].Name) { $j++; continue; } if($ps[$i].id -eq $svc[$j].Name) { $ps[$i]| add-member NoteProperty service $Svc[$j].group; $i++; $j++; } } $ps; } Teraz wpisujemy: Aby zobaczyć Svchosty: plist svchost* | ft name,Id,service -autosize Aby wyświetlić wszystkie procesy: plist | ft name,Id,service -autosize Klass WMI w systemie jest prawie 1000szt. Można przejrzeć prawie każdą śrubke systemu, aby wylistować klasy WMI nalezy wpisać: Get-WmiObject -list Napisałem skrypt, który sotruje pod względem wielkości priorytetu przez dany process oraz najwyższy i posredni priorytet jest odznaczony kolorem czerwonym: priorytet niski - do 9 kolor biały priorytet średni i wysoki od 10 do 13 - czerowny $strComputer = "." $colItems = get-wmiobject -class "Win32_Process" -namespace "root\CIMV2"` -computername $strComputer | write-output | sort -descending "Priority" foreach ($objItem in $colItems) { if ($objItem.Priority -gt 9) { write-host $objItem.Name, $objItem.Priority -foregroundcolor "red" } else {write-host $objItem.Name, $objItem.Priority} }
  12. URUCHAMIANIE SKRYPTÓW: PowerShell po instalacji jest gotowy do pracy. Skrypty mozna wklejać bezposrednio do okna PS, ale można je zapisać w pliku. Otwieramy notatnik wklejamy interesujący nas skrypt i zapisujemy z rozszerzeniem ps1 czyli MójSkrypt.ps1. Jednak uruchamianie skrytów z pliku zaraz po instalacji PS jest ograniczona, mianowicie nie uruchomimy skryptu z innej lokalizacji gdyż konfiguracja jest obłozona sankcją RESTRICTED (ograniczony) - skrypty nie zostaną uruchomione. Aby zobaczyć jaką posiadamy sankcje należy użyć polecenia: Set-ExecutionPolicy - zmienia restrykcje uruchamiania skryptów. Get-ExecutionPolicy - zaraz wyświetli stan i najprawdopodobniej będzie to restricted. Właściwości: restricted -ograniczony AllSigned - wszytskie podpisane od zaufanego wydawcy RemonteSigned - Zdalnie podpisane. Taki skrypt będzie pytał o pozwolenie przed uruchomieniem unrestricted - nieograniczony. Wszytskie skrypty będą wykonane. Więc jeśli chcemy zmieć sankcje to wracamy do polecenia: Set-ExecutionPolicy unrestricted (dostęp nieograniczony) Wracamy do polecenia Get-ExecutionPolicy dajemy enter i sprawdzmy czy sankcja została zmieniona. Każdy trzyma gdzie chce własne skrypty, ja bym proponował stworzyć własny folder na C w katalogu WINDOWS. W konsoli skrypt odpalamy wpisując ścieżke : C:\WINDOWS\MyScript\Skrypt.ps1, żeby umilic sobie prace i za każdym razem nie wpisywac pełnej ścieżki wystarczy tak jak i wierszu polecenia użyć strzałek góra-dół. Program zapamiętuje ostatnio wpisane polecenia. Jest polecenie get-history, gdzie można wyświetlić każdy ruch w konsoli podczas pojedynczej sesji oraz ustawić ilość zapamietanych poleceń także w przypadku pojedynczej sesji. Uruchamianie skryptów spoza konsoli, ale w konsoli. Aby uruchomić jeszcze inaczej skrypt z innej lokalizacji w uruchom należy wpisać: PowerShell.exe -noexit D:\Skrypty\MójSkrypt.ps -, wartośc noexit by konsola po wykonaniu skryptu nie została zamknieta.
  13. PowerShell Wyłożyłem tu takie małe rozwinięcie, to jest jedna setna możliwości. Sam PowerShell w wersji 1.0 posiada 128 cmdletów, gotowe polecenia oraz praca w klasach WMI, których będzie około 1000szt, praca na obiektach NET oraz COM. XP PRO posiada tylko konsole WMIC. W standardzie niby miała mieć to Vista, ale nie ma i sam nie wiem czy to były pogłoski czy nie. W dziale pobrań Microsoft pojawiła się wesja CTP2 nowej odsłony powłoki skryptowej. Na razie jest to wersja przedpremierowa, oferująca 51 cmdletów więcej. Więcej na WSS.pl PowerShell wymaga zainstalowanego .NET Framework 2.0. Jeśli chcesz mieć od razu z powłoką obiektową, to musisz zainstalować .NET Framework 3.0. MATERIAŁY I LITERATURA: Przykładowe skrypty i dokumentacje: Paczka skryptów z M$ Windows PowerShell 1.0 Documentation Pack Windows PowerShell Quick Reference Windows PowerShell Graphical Help File Windows PowerShell Graphical Help File (Version 2.0) Free Windows PowerShell Book Wstęp do PowerShell-WSS.pl Materiały pomocnicze-Politechnika Gdańska Polityki uruchamiania skryptów Wikipedia Pash = PowerShell + Bash IIS 7.0 PowerShell Provider Tech Preview 1 Codeplex - skrypty różnych autorów Strona główna Windows PowerShell 2.0 CTP2 The Windows PowerShell Toolbox Książki: Windows PowerShell. Leksykon kieszonkowy (Lee Holmes -Data wydania: 10/2008) Windows PowerShell Przewodnik po skryptach (Data wydania: 09/2008) PowerShell Krok po kroku (Data wydania: 08/2007) PowerShell in Practice (Richard Siddaway - Data wydania: August 2008) Windows PowerShell? v2.0: TFM 3rd Edition Windows PowerShell 2 For Dummies - by Steve Seguis Microsoft Powershell, VBScript & JScript Bible - by William R. Stanek (Publication Date: January 2009) Windows PowerShell Quick Reference - by Lee Holmes, 2006 Pro Windows PowerShell (Pro) by Hristo Deshev Windows PowerShell - Guide de référence pour l'administration systeme Scripting mit Windows PowerShell Microsoft Windows PowerShell Programming for the Absolute Beginner Windows PowerShell Crashkurs Windows Powershell Tfm Professional Windows PowerShell - Andrew Watt Windows Powershell in Action Windows Powershell Cookbook Windows Powershell Unleashed Professional Windows Powershell Programming - Arul Kumaravel & Jon White & Michael Naixin Windows Powershell V1.0 Tfm 2nd Edition Windows powershell - kit d'administration by E. Wilson Windows Powershell 2.0 Unleashed Sams Teach Yourself Windows PowerShell in 24 Hours Windows PowerShell Scripting Guide Monad (AKA PowerShell) An Introduction to Microsoft PowerShell Schnelleinstieg in die Windows PowerShell PowerShell Pocket Reference - By Lee Holmes, May 2008 Windows PowerShell : The Definitive Guide by -Lee Holmes (2007) Essential PowerShell By Holger Schwichtenberg, Jun 2008 BLOGI POWERSHELL Przykłady, skrypty, publikacje, programy, pomoc: PoshXmpp (umożliwia wysyłanie i odbieranie wiadomości poprzez Jabbera) OneNote PowerShell Provider (umożliwia zapis wyników w programie OneNote z pakietu Office) Windows Desktop Search Powershell Cmdlet (do poprawnego działania należy mieć zainstalowany WDS - Windows Desktop Search) PowerShell dig (nslookup) Cmdlet! - PoshNet How Can I Determine Folder Size? PowerShellASP (Freeware) The Official Scripting Guys Forum! cd into Sysinternals Tools from PowerShell New Free Windows PowerShell Quick Reference Card Background Timer PowerShell WPF Widget PowerPad Windows PowerShell Virtual Machine Manager Cmdlet Reference PowerShell Quick Reference By Lee Holmes (2006) dostępne w Google Windows PowerShell Week Script Samples The VBScript to Windows PowerShell Conversion Guide Out-BarGraph ActiveXPoSH (PS for VBScript/JScript) - SAPIEN Tech Determining the Size of a Folder Get-Ipconfig function select-member Dir Na polskich stronach: Powershell v2.0 wspiera WPF by danieb Powershell się przyjął by danieb Windows PowerShell - dobry wygląd (Artykuł w TechNet) IIS7 Powershell provider CTP2 SKRYPTY VBS I ZESTAWY NARZĘDZI Skrypty vbs, Centrum skryptów w Twoim komputerze, narzędzia: Script Center All-in-One (pobierz z M$) TechNet Script Center Sample Scripts (pobierz z M$) Do-It-Yourself Script Center Kit (pobierz z M$) Sesame Script, 2005-2007 (pobierz z M$) Narzędzia: Sysinternals (Mark Russinovich, Bryce Cogswell, M$) Support Tools (Zestaw narzędzi M$) Resource Kit (Zestaw narzędzi M$)
  14. Skrypty batchowe z użyciem WMIC. WMIC - WMI queries from the command line Hardware.batSkrypt podaje podstawowe informacje o zestawieniu sprzętowym komputera. Pozwala odpytywać komputery w sieci, domyślnie jest to system lokalny. Wyniki wyświetlane są w postaci listy oraz tworzy raport w formacie pliku .csv. Wymagania: Windows XP PRO i wyżej. hardware_xp.txt DiskSpc.batSkrypt wyświetla podstawowe informacje o lokalnych dyskach w naszym komputerze. Domyślnie sprawdza lokalny komputer, może zostać użyty bez podania parametrów. Przełącznikami pozwala ustawić format wyświetlania informacji w postaci listy, tabeli. Zapisać dane do pliku csv lub html, także z formatowaniem danych. Parametr /SL umożliwia pobranie listy komputerów z pliku tekstowego, które mają zostać również sprawdzone. Wymagania: Windows XP PRO i wyżej.diskspc_xp.txt Przykład użycia: Zapisanie informacji do pliku html w formacie tabeli: DiskSpc.bat /HT > DiskSpc.html BootDisk.batSkrypt podaje informacje o dysku rozruchowym. Wymagania: Windows XP PRO i wyżej. bootdisk_xp.txt BattStat.batSkrypt podaje informacje o aktualnym stanie baterii na komputerze lokalnym. Wymagania: Windows XP PRO i wyżej. battstat_xp.txt PwdNoExp.batSkrypt ustawia hasło użytkownika "Hasło nigdy nie wygasa" dla lokalnego konta. Skrypt w pierwszej kolejności sprawdza aktualny stan ustawienia hasła. Wymagania: Windows XP PRO i wyżej. pwdnoexp_xp.txt MdmCmds.batSkrypt podaje informacje o konfiguracji modemu. Wymagania: Windows XP PRO i wyżej. mdmcmds_xp.txt Źródło: www.robvanderwoude.com
  15. Scriptomatic 2.0 by Microsoft Scripting Guys Narzędzie te jest dostępne od jakiegoś czasu w dziale pobrań Microsoftu. Scriptomatic 2.0 ma za zadanie tworzyć proste skrypty wmi, program jest małych rozmiarów, działające bez instalacji. W trakcie uruchamiania aplikacja sama ładuje klasy wmi z przestrzeni nazw root\CIMV2 i jest od razu gotowe do użycia. Generuje kod w językach z możliwością wyboru: Language - VbScript - Perl - JScript - Python Uruchamianie skryptu z możliwością wyboru formatu: Output Format - Command prompt (wiersz poleceń) - Plain Text (w notatniku) - HTML (w przeglądarce) - Exel ( w arkuszu) - XML ( w pliku xml) Możliwość połączenia się z innym komputerem poprzez opcję WMI Source. Możliwość uruchomienia każdego skryptu z wybranej lokalizacji opcją OPEN oraz zapisanie skryptu SAVE. Przykładowy wynik działania z zapisaniem danych do pliku HTML: Narzędzie jest dostępne do pobrania stąd: Scriptomatic 2.0 lub Tu . Anglojęzyczny opis narzędzia znajduje się tu: Scriptomatic 2.0: Readme. WmiTools Microsoft Powiązania klasy należącej do sesji logowania. Z czym sesja jest powiązana, z jakimi obiektami: Widać dalsze powiązania, jeśli strzałki są na białym tle to wystarczy podwójnie kliknąć na którąś i nastąpi przekierowanie do kolejnego powiązania związanym z obiektem. WMI Object Browser z zestawu narzędzi WMITools ma za zadanie wyświetlać klasy, klasy obiektów jak zainstalowane oprogramowanie, sterowniki, usługi, oprogramowanie urządzeń, wystąpienia. Wyświetla powiązania (associated) obiektów klas ze sobą. Inaczej instancje. Umożliwia podgląd klas oraz edycje, wyświetla właściwości klasy oraz metody jakie można wykonywać na obiekcie. To samo również się tyczy pozostałych narzędzi. W skład pakietu WMITools wchodzą: WMI Object Browser, WMI Cim Studio, WMI Event Viewer, WMI Event Registration oraz plik pomocy wmitools.chm W przykładzie użycia WMI Object Browser wyświetlenie jakie posiada powiązania usługa "klient DHCP" Jeśli by zaznaczyć na samej górze w tabeli pierwszą pozycje WIn32_ComputerSystem program zacznie wyliczać sam powiązania z wszytskich klas. Trzeba się uzbroić w cierpliwość przy wykonywaniu tej operacji, nie trwa to długo, ale wykożystanie mocy procesora w tym momencie jest maksymalne. Pojawia się tabelka wyliczająca poziązania, po zakończeniu wyniki zostaną wyświetlone graficznie. U mnie wyświetla ponad 6000tyś powiązań, a nie mam nie wiadomo jakiej ilości zainstalowanego oprogramowania. Podobna sytuacja użycia pełnej mocy procesora pojawi się podczas uzyskiwania informacji o elementach produktów zainstalowanych w systemie jeśli skorzystamy z klasy Win32_SofwareElement, a i również jeśli będziemy chcieli uzykać informacje o powiązaniach danego produktu. Gdzieś musi to głęboko wykopać z systemu. Podobna sytuacja zajdzie w konsoli WMIC jeśli skorzystamy z aliasu SOFTWAREELEMENT lub SOFTWAREFEATURE, który ma za zadanie wyświetlić informacje na temat podzestawów produktów programowych elementu oprogramowania jeśli użyjemy opcji by wyświetlił się pełny zestaw wyników. W WMI Object Browser nie ma tej możliwości segregacji wybranych wyników. WMI Cim Studio Jakie powiązania posiada klasa Win32_SystemDriver z innymi klasami odpowiadająca za wyświetlanie informacji o sterownikach systemowych: Charakterystyczną cechą jaką posiada WMI Cim Studio jest wyświetlanie powiązań klasy z innymi klasami. Narzędzie również wyświetla zestawy wynikowe odpowiadające klasie oraz ma te same mozliwości jak podgląd, edycje klas. Starałem się pokazać WMITools pod kątem powiązań, bo możliwości jest o wiele więcej. WMITools nie jest nowością, jest już od dłuższego czasu dostępne w M$ do pobrania: WMI Administrative Tools. Wymaga instalacji, po zainstalowaniu nie przekracza 5MB wielkości. Działa spod przeglądarki Internet Explorer. Polecenia WMIC pod lupą Każdy alias (polecenie) w konsoli kożysta z konkretnej klasy. Inaczej pisząc Alias jest gotowym wystąpieniem konkretnej klasy. Ale jak uzyskać szczegółowe informacje na temat każdego aliasu, jakie posiada właściwości, jakie ma cechy, do jakiej klasy należy, itp. W tym celu trzeba skożystać z klasy MSFT_CliAlias, która jest główną klasą w schemacie aliasów. W przykładzie użycia narzędzia WMI Cim Studio. Gdy uruchomimy program to w tebelce wyboru z którą nazwą przestrzenną program ma się połączyć, trzeba wpisać nazwe przestrzenną Root\Cli, gdy program załaduje klasy należy odszukać klase MSFT_CliAlias i na nią kliknąć. Następnie, aby program zebrał schemat aliasów należy w prawym górnym rogu programu zaznaczyć opcje INSTANCES i chwilke poczekać na załadowanie się wyników. Obrazkowo opcja INSTANCES znajduję się tu: Wykonanie tej samej metody programem WMIExplorer (SAPIEN), jednakże nie uzyskamy pełnych informacji. Szczegółowo przedstawione i opisane klasy aliasów WMI w TechNet - Obszary nazw i klasy aliasów. Listing w PowerShellu, aliasów konsoli WMIC: gwmi -namespace "root\Cli" MSFT_CliAlias | fl FriendlyName, Description, Target, __PATH FriendlyName - nazwa aliasu, Description - opis aliasu, Target - do jakiej klasy należy alias, __PATH - ścieżka Listing i zapis danych do pliku html właściwości aliasów jak opis aliasu, nazwa, do jakiej należy klasy z poziomu samej konsoli WMIC: wmic /namespace:\\root\Cli path MSFT_CliAlias get FriendlyName, Description, Target /format:htable > C:\KomWmic.htm WMI Code Creator v1.0 Microsoft Klasa Win32_CodecFile wyświetla informację na temat zainstalowanych kodeków w systemie To narzędzie nie jest już nowością, dostępne jest od kilku lat. Lecz nie wypadało o nim nie napisać. Zbierające informacje z klas WMI. Generuje kod w językach VBS, VB.NET, C#. Działa bez instalacji. Można nim pozyskiwać informacje na komputerze lokalnym, zdalnym lub z grupy komputerów. Dostępne pod adresem z witryny Microsoft. Wymagania dla poprawnego działania programu - .NET Framework 1.1 lub wersje pózniejsze. WMI Explorer 1.02 KS-Soft Vista, XP, 2003, ME, 2000 WMI Explorer 1.02 to propozycja firmy KS-Soft. Nie wymaga instalacji.Narzędzie służy do zbierana klas WMI, domyślnie zbiera klasy z nazwy przestrzennej cimv2, Pozwala również na zdalne łączenie się z komputerem w sieci lokalnej. Pozwala na ręczne wyszukiwanie konkretnej klasy opcją SEARCH. Wyniki własności klasy wyświetlane są po użyciu opcji Execute, wyświetlą się w zakładce Query. Co wyróżnia to narzędzie? Możliwość filtrowania wyników z wybranej klasy oraz obsługa programu z poziomu lini wiersza poleceń. Fitrowanie wyników z wybranej klasy. Działa to na zasadzie nazwenictwa konsoli WMIC. Nie wybierając żadnej klasy należy przejść do zakładki Query. 1. W przykładzie, jak przefiltorwać wybrane własności z klasy Win32_process: select Caption, HandleCount, ThreadCount from Win32_Process 2. W przykładzie, jak przefiltrować serwisy, które są w aktualnym momencie zatrzymane w systemie: SELECT * FROM Win32_Service where state="stopped" 3. W przykładzie, jak przefiltrować procesy, które używają więcej niż 20MB pamięci: SELECT Name, WorkingSetSize FROM Win32_Process WHERE WorkingSetSize>20000000 4. W przykładzie, jak wyświetlić konkretny proces i jego wybrane własności: SELECT Name, HandleCount FROM Win32_Process WHERE name='iexplore.exe' 5. W przykładzie, jak wyświetlić wybrane własności takie jak, pełna nazwa usługi, tryb startowy, stan usługi, przefiltrowane tak, aby wyświetlić te usługi, które w trybie startowym są uruchamiane automatycznie i uruchomione w aktualnym momencie: SELECT Description, State, StartMode FROM Win32_Service WHERE State="running" AND StartMode="Auto" Gwiazdka za SELECT * oznacza że zostaną wyświetlone wszystkie własności z wybranej klasy, jeżeli chcemy wyświetlić wybrane własności za SELECT bez gwiazki, wpisujemy wybrane własności. Użycie programu z lini wiersza poleceń. Zamiast w GUI, a z lini wiersza poleceń możemy wybrać interesującą nas klase czy połączyć się ze zdalnym komputerem, a wyniki wyświetlą się w programie. Polecenia: wmiexplorer.exe [-host:<hostname>] [-namespace:<namespace>] [-user:<username>] [-pswd:<password>] [-query:<WQL query>] Przykład użycia zdalnego: wmiexplorer.exe "-host:primarywebserv" "-namespace:root\cimv2" "-user:admin" "-pswd:secret words" Przykład użycia wyświetlenia informacji z wybranej klasy: wmiexplorer.exe "-query: select * from Win32_Process" Wyświetlenie klasy z nazwy przestrzennej CLI: wmiexplorer.exe "-namespace:root\Cli" Wyświetlenie informacji z własności z wybranej klasy: wmiexplorer.exe "-namespace:root\Cli" "-query: select * from MSFT_CliAlias" Wyświetlenie usług, aktualnie zatrzymanych w systemie: wmiexplorer.exe "-query:SELECT * FROM Win32_Service where state='stopped' " Wyświetlenie wybranych własności wybranej klasy, np. własności procesów: wmiexplorer.exe "-query: select CommandLine, Handle, Description, Priority from Win32_Process" Opis programu. Do pobrania stąd. WMI Tools v 0.2 Leviathan Seciurity Group To małe narzędzie, działające z lini wiersza poleceń, nie wymaga instalacji, służące to wyświetlania w drzewie nazw przestrzennych i nie tylko. Dostępne TU. CleWmi v1.4 Jared Cheney CleWmi v1.4 moge te aplikację spokojnie nazwać mini konsolą WMIC, nie jest oczywiście tak rozbudowana, ale naprawde możliwości są jej duże. Umożliwia: zdalne łączenie się z maszyną w sieci lokalnej zdalne wykonywanie prostych zadań na maszynie lokalnej listowanie klas listowanie własności wybranej klasy listowanie metod jakie można wykonywać na klasie filtrowanie wybranych własności z klasy filtrowanie wyniku z wybranej własności z konkretnej klasy Jak wyświetlić pomoc programu: CleWmi -h lub CleWMi --help Jak wyświetlić wszystkie klasy WMI w postaci drzewa (lista będzie potężna) CleWMi --recurseClasses Jak wyświetlić wszystkie nazwy przestrzenne: CleWMi --listNameSpaces Jak wyświetlić wyniki własności z wybranej klasy: CleWMi -c Win32_Process przełącznik -c wprowadza mozliwość wybrania klasy WMI Jak wyświetlić listę metod, które można wykonać na wybranej klasie: CleWMi -c Win32_Process --ListMethods Jak wyświetlić spis własności z wybranej klasy: CleWMi -c Win32_Process --list Jak przefiltrować wybrane własności do wyświetlenia informacji: CleWMi -c Win32_Process -p Name,PathName przełacznik -p wprowadza filtr w którym wybieramy własności Jak uzyskac liste klas WMI z wybranej przestrzeni nazw: CLeWMI -n root/cimv2 --listclasses Jak uzyskać liste nazw przestrzennych, które znajdują się w głównej nazwie przestrzennej: CLeWMI -n root/cimv2 --listNameSpaces przełącznik -n wprowadza możliwość filtrowania Jak przefiltrować wynik konkrentej własności. W przykładzie wyświetlenie informacji o tych usługach, które są aktualnie zatrzymane w systemie: CleWMi -c Win32_Service -p Name,DisplayName -f "state~%stopped%" Formatowanie wyświetlania wyników: CleWMi -c Win32_Service -p Name,DisplayName -f "state~%stopped%" -o csv Przełącznik, który wprowadza polecenia formatujące zawartość -o Dostepne przełaczniki: tab (tabela) csv (lista, dane wyświetlane zaraz po sobie) list (lista, dane wyświetlane pod sobą) Wyswietlenie wyników bez bannera programu: CleWMi -c Win32_Service -p Name,DisplayName -f "state~%stopped%" -o list --noBanner Wyświetlenie informacji z wybranego obiektu, tym obiektem w przykładzie jest konkretna usługa: CleWMi -w "Select * FROM Win32_Service WHERE Name = 'Alerter'" Wyświetlenie informacji z wybranego obiektu, również wybranej usługi, ale z wyświetleniem wybranych własności: CleWMi -w "Select * FROM Win32_Service WHERE Name = 'Alerter'" -p Name,PathName przełacznik -w wprowadza filtr dla wybieranego obiektu Własności wpisujemy przy sobie bez spacji: dobrze: -p Name,PathName źle: -p Name , PathName Raportowanie przebiegu wykonywania operacji zbierania wyników: CleWMi -w "Select * FROM Win32_Service WHERE Name = 'Alerter'" -p Name,PathName -v Posłuży do tego przełacznik -v Jak zapisać raport przebiegu wykonania operacji zbierania wyników: CleWMi -w "Select * FROM Win32_Service WHERE Name = 'Alerter'" -p Name,PathName -v -l C:\Log.txt Zostanie tylko zapisany raport przebiegu. Do zapisywania danych w pliku służy przełącznik -l Minusem aplikacji jest to że może tylko wyświetlać metody jakie można wykonywać na danym obiekcie, ale nie posiada możliwości realizacji tych metod. Aplikacja dostępna pod adresem: CLeWMI - Command Line WMI query tool. To Tyle... Prezentacyjnie WmiChk v1.23 (MS) Niestety nie jest to narzędzie ogólno dostępne i powiem że nie rozumiem tego, ale je zaprezentuje, można je znaleść gdzieś w jakieś książce wydawnictwa MS, niestety nie moge go zlinkować z wiadomych przyczyn. Bardzo prosto ujmując narzędzie to sprawdza kolokwialnie stan dostawców WMI, wykaz zainstalowanego oprogramowania oraz wykaz uruchomionych usług. Pozwala także na diagnostyke z komputerami w sieci lokalnej. Dobrym diagnostycznym skryptem jest WMI Diagnosis Utility, dostępny tutaj. Opis interpretacji logów znajduje się tu. To Tyle.... WMI_Utility.exe Narządko to działa z lini wiersza poleceń, nie wymaga instalacji. To dość ciekawa alternatywa. Narzędzie listuje klasy wmi z przestrzeni nazw root/Cimv2, pozwala uzyskiwać wyniki własności z wybranej klasy, pozwala listować same własności z wybranej klasy, pozwala wyszukiwać własności czy klasy po wpisanej frazie. Dostępne pod adresem: WMI Search Utility
  16. WMIC Windows Management Instrumentation Console PowerShell vs. WMIC Przybliże bardziej temat. PowerShell pracuje na klasach WMI (Windows Mangamet Instrumentation) oraz głównie na obiektach NET. Jest bardzo elastyczny możemy w PowerShellu również uzywać zwyczajnych komend w CMD - wierszu poleceń. Zanim przejde do PowerShella proponuje zajrzeć do konsoli WMIC (Windows Mangament Instrumentation Console) dostępna dla użytkowników posiadających XP PRO. Ma może nie takie potężne mozliwości jak PS, ale pracuje na gotowych aliasach (jak i PS) oraz możemy pracować na samych klasach WMI. W PowerShellu możemy tworzyć własne cmdlety i funkcje, w WMIC nie, ale do rzeczy. ~~~~~WMIC START/uruchom/CMD w nim wpisac WMIC, pojawi się ścieżka wmic:root\cli> Jesteśmy już w środku. Aby zobaczyć spis aliasów i komęd nalezy wpisać -? Lista jest dość spora, wpiszmy polecenie PROCESS, dostatniemy potęzny wypis właściwości każdnego procesu: Poniżej na obrazku znajdują sie przełączniki do przefiltrowania danych czyli tego jakie dane chcemy uzyskać mamy GET lub LIST, wpiszmy PROCESS GET -? Wyświetla nam się wszystkie właściwości jakie możemy uzyskać dla tego przełącznika: Jeśli wpiszemy PROCESS GET /ALL otrzymamy wszystkie informacje zwrócone przez ten przełącznik. Ale jeśli chcemy przefilitrowac dane? znowu PROCESS GET -? po lewej stronie będzie spis poleceń jakie chcemy wybrać tak więc PROCESS GET Name, SessionId, VirtualSize ... czyili nazwa procesu nr Sesji ID, uzycie pamięci wirtualnej A zobaczmy właściwość LIST: PROCESS LIST -? znajdują się tam gotowe zestawy dodatkowego przełącznika jak BRIEF czy MEMORY itp... Więc co wyświetli PROCESS LIST BRIEF a PROCESS LIST MEMORY: Formatowanie zawartości wyświetlanych danych. Jeśli chcemy, aby zamiast tabeli wyświetlała się lista wpiszmy: PROCESS GET Name, SessionId, VirtualSize /value Dane zostaną wyświetlone jedne pod drugim Wczesniej mówiłem o klasach WMI nawet te aliasy jako gotowe polecenia tylko posługują sie klasami, ale jak wygląda klasa process? Win32_Process daje ten sam efekt co wpisane PROCESS, ale przed musimy wpisać przełącznik PATH PATH Win32_Process , wyświetli te same dane co PROCESS. Idziemy dalej chcemy przefiltrowac dane PATH Win32_Process -? Załóżmy że chcemy zmonitować strumień danych Path Win32_Process GET /all /every:3 /repeat/:8 włąsciwośc every oznacza co jaki czas w tym przypadku co 3 sekundy repet - powtórzenia w tym przypadku 8 CD..... praca na procesach w WMIC. Filtrowanie! Chcąc wyświetlić tylko dany proces uzyjmy polecenia: PROCESS WHERE (Name='gg.exe') GET name, processid Wyświetli tylko process gg, jego nazwe oraz ide procesu W przykładzie jeśli gadu-gadu przekoroczy 30MB uzycia pamięci to process zostanie zamknięty: process where "name='explorer.exe' and workingsetsize>30000000" call terminate Jeżeli chcemy przefiltrować aby bez wpisywania własciwości wyświetliły się podstawowe informacje o procesie gg należy użyć: PROCESS WHERE (Name="gg.exe") LIST BRIEF Jeżeli chcemy wyświetlić wszystkie własciwości procesu gg należy użyć: PROCESS WHERE (Name="cmd.exe") LIST FULL Jeżeli chcemy wyświetlić wszystkie właściwości zalokowanej pamięci przez process nalezy uzyć: PROCESS WHERE (Name="cmd.exe") LIST MEMORY Jeżeli chcemy zobaczyć wykaz przełaczników dla polecenia LIST należy użyć: PROCESS WHERE (Name="cmd.exe") LIST -? Wyświetlą sie właściwości: BRIEF FULL INSTANSE IO MEMORY STATISTICS STATUS SYSTEM i inne........ Jeżeli chcemy przestawić priorytet procesu w tym przypadku na wysoki należy użyć: process where "name='gg.exe'" call SetPriority 64 Ten sam przykład tylko wywołany na konkretnej klasie: PATH Win32_Process WHERE Name="gg.exe" call SetPriority 64 Jeżeli chcemy zabić proces należy użyć: process where (name="gg.exe") call terminate Jak zabić konkretny proces po numerze pidu procesu: wmic process PID delete Jeżeli chcemy przefiltrować tzn wyświetlić wszystkie procesy zaczynające się na litere g, nalezy uzyć: process where (name like "g%") get name Jeżeli nie chcemy wywołać sesji WMIC czyli wykonać nas tylko zadanie, które nas interesuje, wywołane jako pojedyncza komęda to zawsze przed konkretnym zadaniem otwieracją wiersz polecenia wpisujemy WMIC np... WMIC process where (name="gg.exe") call terminate Monitorowanie pełnych statystyk procesów co sekunde z trzema powtórzeniami z zapisem do pliku html. Sam przerwie działanie: wmic process get /every:1 /repeat:3 /format:htable > c:\process.htm Monitorowanie tylko nazwy procesu i priorytetu: wmic process get name, priority /every:1 /repeat:3 /format:htable > c:\process.htm Jak sprawdzić jakie możemy wykonywać metody na konkretnym obiekcie. W tym przykładzie na usługach. Żeby dowiedzieć się jakie czynności możemy wykonać należy użyć polecenia CALL (wykonuje metody) A więc: WMIC Service CALL -? Polecenie wyświetli metody: cd....... Jak uruchomić konkretną usługe: WMIC SERVICE where caption='Nazwa usługi' CALL STARTSERVICE cd...... Jak wyłączyć usułge z trybu startowego(na stałe) WMIC SERVICE WHERE Caption="Nazwa usługi" CALL ChangeStartMode "Disabled" Jak przefiltrować usługi, które uruchomione są w aktualnym momencie: wmic service where (state="running") get name, state to samo tylko dotyczy sterowników systemowych: wmic sysdriver where (state="running") get name, state Jak przefiltrować usługi, które są ustawione w trybie startowym właściwością Manual: wmic service where (StartMode="Manual") get name, StartMode, State, DisplayName /value Jak włączyć konkretny process - aplikacje: wmic process call create "iexplore.exe" Monitorowanie procesów tych które, pobierają do 20MB pamięci. Monit co sekunde z trzydziestoma powtórzeniami. wmic process where "WorkingSetSize> 20000000" get name, workingsetsize /every:1 /repeat:30 Jak odczytać logi systemowe z dziennika zdarzeń z zakładki "system" : wmic NTEVENT where LogFile='system' Jak wyświetlić informacje o napędach oraz rodzaju systemu plików na volumie, ilość wolnego miejsca, litery volumu, rozmiar volumu, numer seryjny: wmic logicaldisk GET name, freespace, FileSystem, Size, VolumeSerialNumber Jak wyświetlić do jakiej klasy należy konkretny alias w konsoli WMIC: wmic Alias GET FriendlyName, Target Jak wyświetlić listę aktualizacji oraz poprawek systemowych: Wmic qfe get /all Jak zapisać dane o poprawkach i aktualizacjach do pliku html z zapisem danych pod sobą, ale w formacie klamrowym: wmic qfe get /format:hmof> qfe.htm Jak dowiedzieć się o której godzinie oraz ile razy logowali się na maszynie poszczególni użytkownicy, wraz z wylogowaniem, ilość logowania z zapisem danych pod sobą: wmic netlogin get Name, NumberOfLogons, LogonHours, LastLogon, LastLogOff /format:value Jak wyświetlić urządzenia sterujące takie jak USB. Skorzystamy z klasy abstrakcyjnej CIM_Controller, która wyświetla i grupuje różne urządzenia: wmic PATH CIM_Controller GET Name,Status,SystemName,ProtocolSupported, Status Wiązania poleceń filtrujących dane, dostępne z wiersza polecenia i ich stosowanie w poleceniach konsoli WMIC. Mamy dwa polecenia SORT oraz FIND. Polecenie SORT ma za zadanie sortować wyświetlone dane, a polecenie FIND szuka ciągu znaków w plikach. W prostym przykładzie polecenia FIND: wmic process list brief | find /I "svchost" Ma za zadanie wyświetlić podstawowe informacje o koknretnym procesie oraz przefiltrować wyniki tak, aby wyświetlić tylko interesujące nas procesy w poleceniu find czyli svchosty. Domyślnie polecenie Find ma włączone rozpoznawanie dużych i małych znaków, aby wyłączyć te właściwość należy za poleceniem Find użyć przełącznika /I. W innym razie wyniki nie zostaną wyświetlone. W innym przykładzie: wmic process list brief | find /I "a" zostały wyświetlone procesy te które w nazwie zawierają wyraz a oraz te które posiadają te litere w nazwie członowej. Lista jest pomieszana. Co zrobić by te same dane zostały wyświetlone w porządku alfabetycznym. Należy użyć za poleceniem find, polecenia sort. Przykład: wmic process list brief | find /I "a" | sort /+1 A jak wyświetlić te same dane, ale wyświetlone od końca alfabetu do jego początku: wmic process list brief | find /I "a" | sort/+63 Podwójne sortowanie. Mamy nastepujące polecenie, które ma za zadnie wyświetlić nazwe skrótową sterownika, tryb uruchamiana sterownika, stan sterownika. Posortowany na dwa sposoby. Polecenie Find wyszykuje stan sterowników, które są uruchomione w aktualnym momencie z własciwości State. A skąd te polecenie wie że ma po tej właściwości sortować. Jeżeli ostanią napisaną właściwością w wierszu jest State to te polecenie automatycznie przefiltruje sterowniki po tej właściwości. Następnie polecenie sort /+15 ma za zadanie posortować tryb uruchamiania sterowników ( kolejność automatycznie, boot, wyłączone, ręczne, system): wmic sysdriver get startmode, name, state| find /I "running" | sort /+15 Jeżeli użyjemy takiej kombinacji sort /+1 otrzymamy te same dane z tą różnicą że wyniki zostaną wyświetlone alfabetycznie po nazwie skrótowej sterownika. Jeżeli użyjemy kombinacji sort /+63 wyniki zostaną wyświetlone również alfabetycznie, ale od końca. Dodajmy do tego jeszcze jedno polecenie Findstr, które podobnie wyszukuje ciągów w plikach. Podobnie przełącznikiem /I wyłączyć rozpoznawanie dużych i małych znaków. Ma za zadnie wyświetlić te sterowniki, które w nazwie zawierają litere F, a więc wyświetlenie sterowników aktualnie uruchomionych w systemie, posortowany trybem startowym i wyświetlenie tylko tych, które w nazwie członowej zawierają litere F lub w całej nazwie: wmic sysdriver get startmode, name, state| find /I "running" | sort /+15 | Findstr /I "F" Użycie polecenia MORE ,które ma za zadanie wyswietlać dane po jednym ekranie na raz. Czyli jeśli danych jest dużo to użycie tego polecenia spowoduje cykliczne wyświetlenie danych na wysokości okna, przewijane spacją, cyklicznie pojawi się napis -- Dalej --. Polecenie MORE można używać do wiekszości poleceń takich jak Dir w Cmd oraz w PowerShellu np. dla Get-Childitem. Więc: wmic service get startmode, name, state| find /I "stopped" | More Można również dostawiać te same polecenia po sobie. Listing serwisów, które są aktualnie zatrzymane w systemie, a ustawione w trybie manualnym: wmic service list brief | find /i "stopped" | find /i "manual" A jak wyświetlić czy istnieją w konsoli wmic polecenia związane z pamięcią (MEM): wmic alias get FriendlyName | find/i "MEM" Jak wyświetlić konkretny program, który jest uruchamiany wraz z startem systemu. W przykładzie sprawdzenie czy uruchamia się antywirus. Jeśli po wpisaniu nie wyświetlą się żadne wyniki oznacza to że wybrany program nie startuje wraz z systemem: wmic startup list brief | findstr /i "nod" Użycie samego polecenia | sort /+63 spowoduje alfabetyczny sort po nazwie od końca alfabetu. Natomiast użycie polecenia | find /I "am" za stosem polecen wmic, przefiltruje i wyświetli tylko te sterowniki, które w nazwie posiadają litery am Jedna uwaga. Łączenia poleceń nie działają w samej konsoli WMIC, można je stosować jako pojedyńcze wykonanie polecenia w Cmd. Jak wyświetlić stan wszystkich przełączników globalnych konsoli WMIC: wmic context Jak uruchomić wszystkie usługi, które są zatrzymane w systemie: Wmic service where "State='Stopped'" call StartService Jak przestawić tryb uruchamiania dla wszystkich usług, które są wyłączone w systemie na tryb uruchamiania - ręczny: Wmic service where "StartMode='Disabled'" Call ChangeStartMode "Manual" Jak wyświetlić nazwy przestrzenne w okreslonej przestrzeni nazw: Wmic /NAMESPACE:\\root\ PATH __NAMESPACE Jak wyświetlić dane w pliku html, posortowane w grupie czyli nazwa procesu-właściwości pod sobą: wmic process get /format:hform.xsl > C:\Proc.htm Pobieranie szczegółowej pomocy! Mam do dyspozycji dwa przełączniki: /?:Brief - podstawowa /?:Full - szczegółowa Jak wyświetlić szczegółowy opis globalnych przełączników oraz dostępnych aliasów w konsoli wmic: wmic /?:full Jak wyświetlić opis parametru aliasu dla aliasu process i do jakiego obiektu należy ten alias: wmic process BNF /?:full Jak wyświetlić szczegółowo opisaną listę przypisań (właściowści) dla usług systemowych: wmic service create /?:Full Jak wyświetlić szczegółowo opisaną listę metod dla procesów: wmic process call /?:Full Jak wyświetlić szczegółowy opis dla właściwości przełącznika GET: wmic alias get /?:full Szkoda że szczegółowo wyświetlone opisy właściwości są po angielsku. Jeśli skorzystamy z klas wmi to otrzymamy opisy w naszym języku, a więc: Polecenie te wyświetla szczegółowy opis zmiany trybu uruchamiania usług systemowych: wmic path Win32_service call ChangeStartMode /?:Full Polecenie te wyświetla szczegółowy opis poszczególnych właściwości usług systemowych takich jak Stan, nazwe itp. wmic path Win32_Service get /?:full Polecenie te wyświetla szczegółowy opis listy przypisań czyli właściowści procesów takich jak wątki, zatrzymanie procesu itp. wmic path Win32_Process create /?:full Jak wyświetlić jakie możemy wykonywac metody na sterownikach systemowych - usługach. Dostaniemy naprawde porządny spis dla wykonania tych metod: wmic path win32_SystemDriver call /?:full Możemy: - zmodyfikować usługę - zmienić tryb uruchamiania - tworzyć nową usługe - usuwać istniejącą usługe - zaktualizować stan zgodnie z menedżerem zadań - wstrzymać usługę - wznowić usługę - uruchamiać zatrzymaną usługę - zatrzymać usługę - wysłać kod sterujący Jak wyświetlić listę wszystkich dostawców WMI: wmic path __Win32Provider get name Jak zapisać konkretne dane w pliku xml, jako otwierana lista z właściwościami, formatowane danymi pod sobą: wmic /record: c:\serwisy.xml service get caption, State, StartMode /value Przykład ten na dobrze sprawdzonych serwisach;). Żeby uzyskać taki efekt należy za głównym poleceniem wmic podać globalne polecenie record, które rejestruje wszystkie wporwadzone polecenia w pliku w formacie xml. Nastepnie podajemy lokalizacje pliku, gdzie ma wylądować. W Tym przypadku zapis będzie w lokalizacji c:\serwisy.xml, oczywiście z rozszerzeniem xml. Kolejnie wpisujemy intereresujący nas alias service, następnie chcemy uzyskać (w tym przykładzie) trzy interesujące nas właściwości, jak nazwa serwisu, tryb uruchamiania, status serwisu get caption, State, StartMode i na koniec, aby zapis do pliku xml nie został zapisany w tabeli, a jako lista czyli dane pod sobą należy użyć polecenia /value. Liste można rozwijać i zwijać. W podobnym przykładzie zapisu tylko wyświetlenie wszystkich właściwości z aliasu nicconfig, który wyświetla informacje o zarządzaniu kartami sieciowymi: wmic /record: c:\karta.xml nicconfig get /value. Zamiast przełącznika /value mozna również użyć /format:list. A jeśli ktoś woli, aby formatowanie było w postaci tabeli w przykładzie: wmic /record: c:\serwisy.xml service list brief /format:Table. Wyświetli podstawowe informacje. Jeden mankament jest taki, jeśli będziemy chcieli dobrać sobie wybrane właściwości poprzez przełącznik GET i zapisać w pliku xml w postaci tabeli to formatowanie tabeli nie wyjdzie równe, więc lepiej i estetyczniej używać przełącznika LIST Filtrowania ciąg dalszy........... A jak zrobić żeby w pierwszej kolejności przekierować dane do pliku html: wmic /output:c:\procesy.htm process list full /format:hform Polecenie output określa typ przekierowania danych wyjściowych, następnie określamy lokalizacje i nazwe pliku, kolejnie określamy konkretny alias,a na końcu formatujemy zawartość tak jak chcemy. Kolejny przykład. W pierszej koleności zostaje okreslony typ przekierowania danych wyjściowych z określeniem lokalizacji, przefiltrowany tak, aby wyświetlił tylko te usługi, które są uruchamiane automatycznie ze startem systemu i uruchomione aktualnie w systemie. Z wyciągnięciem tych informacji, które nas interesują jak pełna nazwa usługi, tryb uruchamiania, stan. Zapisane w formacie htable w pliku html: Wmic /output:"c:\LOG.htm" service where "StartMode="auto" and State="running"" get DisplayName, StartMode, State /format:"htable" Podobny, a właściwie ten sam przykład. Został w nim dodany typ serwisu oraz ProcessId czyli PID, którego serwis używa w procesie svchost. Z wyciągnieciem tych samych informacji, ale z sortem numeru Pidu usługi: Wmic /output:"c:\LOG.htm" service where "StartMode="auto" and State="running"" get DisplayName, StartMode, State, ProcessId,ServiceType /format:htable:"sortby=ProcessId" Kolejny podobny przykład, ale tym razem wykonanie logów z dziennika zdarzeń. Alias ntevent, który zbiera wpisy z dziennika zdarzeń systemu. Jak wyświetlić logi systemowe, które posiadają w liście ostrzeżenia: Wmic /output:"c:\System.htm" ntevent where "logfile="System" and type="warning"" get Logfile, Message, SourceName, EventCode,Type, TimeGenerated /format:"htable" W komędzie zostały umieszczone nastepujące wartości: Logfile - zakładka system Message - informacja zdarzenia SourceName - żródło EventCode - identyfikator zdarzenia Type - warning - ostrzeżenie TimeGenerated - data wygenerowania loga Rodzaje typów ostrzeżeń - Type - error - warning - information Podobny przykład, ale wyświetlenie z zakładki Aplikacje, tych aplikacji, które wygenerowały błąd (error): Wmic /output:"c:\Aplikacje.htm" ntevent where "logfile="Application" and type="error"" get Logfile, Message, SourceName, EventCode,Type, TimeGenerated /format:"htable" Co do przykładu wyżej ten sam efekt uzyskamy korzystając z konkretnej klasy WMI. Alias ntevent używa klasy Win32_NtLogEvent . Przed użyciem konkretnej klasy musimy użyć polecenia path, które wprowadza pełne ścieżki obiektów WMI. A więc: Wmic /output:"c:\System.htm" path Win32_NtLogEvent where "logfile="Application" and type="error"" get Logfile, Message, SourceName, EventCode,Type, TimeGenerated /format:"htable" Ciąg dalszy listowania przez filtrowanie......... Jak przefiltrować wyniki tak, aby wyświetlić pozycje w dzienniku zdarzeń, które to składniki, bądż aplikacja, usługa, sterownik, podsystem utworzyło log czyli żródło zdarzenia. W przykładzie listing serwisów z datą wygenerowania loga, żródłem zdarzenia, pełnym komunikatem o zdarzeniu, uzupełnieniu wpisu raportu. Z zapisem danych do pliku html: WMIC NTEVENT WHERE SourceName="Service Control Manager" GET Message,EvenType,insertionstrings,TimeGenerated /FORMAT:HTABLE > c:\SerLog.htm Żródła zdarzeń moga być: eventlog, tcpip, application popup itp..... A jak wyświetlić wszystkie wpisy w dzienniku zdarzeń, które posiadają loga z błędami aplikacji (error). Zostaną wyświetlone tylko te aplikacje, które wygenerowały błąd oraz pozycje w dzienniku zdarzeń zostaną posortowane od pierwszych wpisów do ostatnich w kategorii numeru pozycji w dzienniku "sortby=RecordNumber" jednakże typy wygenerowane przez system czy aplikacje będą rozrzucone. Bez sortu typy czyli żródła logów będą ułożone chierarchicznie, komunikat zdarzenia, uzupełnienie komunikatu zdarzenia, czas wygenerowania loga w dzienniku zdarzeń, typ czyli żródło zdarzenia oraz LogFile, które wyświetla unikatowy identyfikator klasy oraz najwazniejsze EventType czyli typ zdarzenia, którym to filtrowane są wyniki w przykładzie poniżej z zapisem danych do pliku html WMIC NTEVENT WHERE "EventType="1"" GET Message, EvenTtype,insertionstrings,TimeGenerated,LogFile,SourceName, RecordNumber /FORMAT:htable:"sortby=RecordNumber" >c:\ErrorLog.htm Rózróżniamy trzy typy zdarzenia, które generuje właściwość LogFile: informacja - oznaczona jako typ 3 ostrzeżenie - oznaczona jako typ 2 błąd - oznaczona jako 1 Właśnie tego typu filtrowanie EventType= pozwala na wyświetlenie konkretnych typów zdarzenia z całego dziennika zdarzeń, a nie tylko z wybranej kategorii. Możliwość listowania wybranego działu w pozycji dziennika zdarzeń w przykładzie listing tylko tych komunikatów z zakładki system, które zawierają ostrzeżenia: WMIC NTEVENT WHERE "LogFile="system" and EventType="2"" GET Message, TimeGenerated, EvenTtype,insertionstrings,TimeGenerated,LogFile /FORMAT:htable >c:\Loga.htm Listing komunikatów o błędach z całego dziennika zdarzeń z wykożystaniem klasy wmi, zapisane do pliku html w formacie tabeli, posortowane według pozycji w dzienniku zdarzeń: WMIC /output:"c:\LOG.htm" path Win32_NtLogEvent WHERE "EventType="1"" GET Logfile, Message, SourceName, EventCode,Type, TimeGenerated /FORMAT:HTABLE:"sortby=LogFile" Jak już jesteśmy przy dzienniku zdarzeń to może warto zajrzeć do aliasu nteventlog , który zarządza plikiem dziennika zdarzeń. A więc chcemy sie dowiedzieć jakie pozycje posiada dziennik zdarzeń, ile każda pozycja posiada wpisów z logami oraz jaki jest rozmiar pozycji dziennika: wmic nteventlog get LogFileName, NumberOfRecords, FileSize filesize - rozmiar NumberOfRecords - ilość wpisów LogFileName - nazwy pozycji w dzienniku zdarzeń Opisze dwie metody, które możemy wykonywać w aliasie nteventlog. Jest to: BackupEventLog - tworzenie kopi zapasowej loga cleareventlog - usunięcie wpisów z wybranej pozycji Tak więc, jeśli chcemy stworzyć kopie zapasową logów z zakładki system i zapisać go do pliku, należy użyć polecenia: wmic nteventlog where "LogFileName = "System"" Call BackupEventLog "C:\Syslog.evt" W przykładzie, jeśli chcemy usunąć wpisy z zakładki Aplikacje, należy użyć polecenia: wmic nteventlog where "LogFileName = "Application"" call cleareventlog Pomyślnie wykonane polecenie wyświetli taki komunikat, zwracając wartość 0: Jak wyświetlić do jakiej klasy należy konkretny, wybrany do sprawdzenia alias: WMIC ALIAS Nazwa-Aliasu Get Target UZUPEŁNIENIE. Jeśli w wyżej podanych przykładach lub podobnych, pojawi się taka informacja w pliku html: lub w wierszu poleceń: Nie oznacza to złego wykonania polecenia, a informuje o braku wpisów z wybranej gałęzi dziennika zdarzeń. Alternatywnie skrypt eventquery.vbs do zbierania informacji z pliku dziennika zdarzeń Możemy również skorzystać z narzędzia, które oferuje system. Posiada możliwość sporządzania logów z komputerów w sieci lokalnej. Uruchamiany za pomocą hosta skryptów. Jak wyświetlić pomoc narzędzia: Cscript eventquery.vbs /? Jak wyświetlić wpisy z dziennika zdarzeń z wybranej zakładki: Cscript eventquery.vbs /l "application" Jak wyświetlić szczegółowy opis zdarzeń, jak date, źródło, rodzaj zdarzenia dla wybranej zakładki: Cscript eventquery.vbs /l "application" /v Jak wyświetlić szczegółowy opis zdarzeń, jak date, źródło, rodzaj zdarzenia dla wszystkich zakładek: Cscript eventquery.vbs /v Jak formatować wyświetlanie danych, w przykładzie format listy: Cscript eventquery.vbs /l "application" /v /FO LIST dostępne przełączniki formatowania: TABLE, LIST, CSV Jak określić zakres zdarzeń do wyświetlania. W przykładzie skrypt kolokwialnie przeszuka we wszystkich zakładkach 6 najnowszych wpisów w dzienniku, jeśli nie ma wpisów lub jest ich mniej poda informacje: Cscript eventquery.vbs /R 6 Więcej informacji na stronie MS ****************************************************************** Przegląd kont systemowych Ostatnio przeglądając tematy forum, natrafiłem na podany skrypt vbs w jednych z tematów przez Picasso. Skrypt SID(pobierz) - z zasobów Picasso, który ma za zadanie wyświetlić ilość i jakie konta posiada nasz system. Ale co zrobić, gdy nie mamy takiego skryptu, a chcemy uzyskać w tej tematyce informacje. W tym celu należy użyć aliasu useraccount , który zarządza kontami systemowymi, Sam alias korzysta z klasy Win32_UserAccount. Więc jak wyświetlić nazwy kont, ile kont posiada system, czy jest to konto administracyjne z zapisem danych do pliku txt w lokalizacji C:\ wmic useraccount Get Caption, SID, Name, Description, Disabled, PasswordRequired, Lockout, PasswordChangeable /value >C:\Konto.txt Caption - jest tekstowym opisem obiektu SID - jest to unikalny numer konta ( każde konto ma swój unikalny numer zwany SID, SID jest za każdym razem inne przy stworzeniu nowego konta, nie zmienia się on podczas zmiany nazwy konta. Za numerem SID jest również numer RID) Name - wskazuje nazwę konta Description - tekstowy opis obiektu Disabled - określa czy konto użytkownika jest wyłączone FullName - wyświetla pełną nazwę uzytkownika lokalnego PasswordRequired - określa czy hasło jest wymagane na koncie użytkownika Lockout - określa czy konto użytkownika jest zablokowane PasswordChangeable - określa czy hasło na koncie użytkownika może być zmienione We wartości Disabled zauważymy następujące dane TRUE albo FALSE, wartość TRUE oznacza potwierdzenie właściwości Disabled czyli dane konto jest wyłączone. Wartość FALSE oznacza że dane konto jest włączone. Identyfikatror SID i RID S-1-5-21-746137067-2025429265-725345543-500 Jak pisałem wyżej SID jest to unikalny numer konta, a czym jest RID? RID jest to numer odpowiadający uprawnieniom konta jeśli numer SID ma wartość 500 oznacza to że jest to konto administracyjne z pełnymi uprawieniami, jeśli wartość 500 jest większa oznacza to ze konto nie ma pełnych uprawień administracyjnych. Dodatkowo narzędzie PsGetSid z zestawu narzędzi PsTools autorstwa Sysinternals, działające bez instalacji z lini wiersza poleceń wyświetla numer SID, aktualnie zalogowanego użytkownika do systemu. Downland: PsGetSid v1.43. Także narzędzie Whoami z zestawu narzędziowego Support Tools posiada zdolność do wyświetlania numeru SID konta i grup. Użycie narzędzia: Samo podanie polecenia Whoami wykaże aktualnie zalogowanego użytkownika Poleceniem Whoami /USER /SID wyświetlimy - aktualnie zalogowanego użytkownika wraz z podaniem numeru SID Zestaw narzędzi Support Tools mozna pobrać stąd: Klik. Cd..... Wykonanie tej samej operacji w PowerShellu: Get-WmiObject Win32_UserAccount | Fl Caption, SID, Name, Description, Disabled, PasswordRequired, PasswordChangeable, Lockout To tyle.... Skanowanie dysku czasami bywa uciążliwe, a czasami bardzo przydatne. Jak wykluczyć dysk ze sprawdzania przy następnym uruchomieniu komputera: W Przykładzie C:\ wmic logicaldisk call ExcludeFromAutochk "C:" A Jak uruchomić narzędzie do sprawdzania dysku i od razu rozpocząć skanowanie w poszukiwaniu błędów: WMIC logicaldisk WHERE drivetype=3 call chkdsk wartość 3 oznacza że każda litera dysku fizycznego będzie sprawdzana. W przykładzie poniżej podanie wartości 2 spowoduje skanowanie tylko dyskietki: Możliwe jest również zaplanowanie skanowania przy ponownym uruchomieniu komputera poprzez użycie metody - ScheduleAutoChk. To Tyle... ****************************************************************** WMIC - listing z Msconfig, programów startujących wraz z systemem Ostatnio przeglądając tematy w dziale Windows, zauważyłem powklejane screeny msconfig z spisem programów uruchamianych wraz z startem systemu. Prosto i szybko można uzyskać te samą listę z konsoli wmic i zapisać je do pliku txt, na dysku C. Więc: wmic path Win32_StartupCommand get Name, User, Location, Command > C:\List.txt Command - wskazuje ciąg reprezentujący wiersz polecenia uruchamiany przez polecenie startowe. Location - wskazuje ścieżkę, w której polecenie startowe rezyduje w dyskowym systemie plików. User - wskazuje nazwię użytkownika, dla którego to polecenie uruchomieniowe będzie działać. Name - wskazuje nazwę pliku polecenia startowego. Command C:\WINDOWS\system32\CTFMON.EXE Location HKU\S-1-5-18\SOFTWARE\Microsoft\Windows\CurrentVersion\Run Name CTFMON.EXE User ZARZĄDZANIE NT\SYSTEM Zapisanie w postaci listy: wmic path Win32_StartupCommand get Name, User, Location, Command /FORMAT:list > C:\List.txt
  17. Z innej beczki. Listing dysku Kiedyś czytałem temat zrobiony przez Pi00 - Tips & Tricks w terminalu, przydatne, ciekawe i fajne. W trakcie przeglądania narzędzi na pewnej stronie skojarzyłem dwa fakty, narzędzia o których pisał Pi00 są dostępne i dla Windowsa. Jednak ich przyszłość może być chwiejna i czy zostaną stworzone pod Viste - nie wiadomo. Chciałbym na ten czas pokazać jedno polecenie pod Windows, które zostało omówione w temacie, który podałem wyżej. Mianowicie narzędzie Du v.3.16. Fakt że brakuje mu przełącznika takiego jak --max-depth, ale z całą resztą radzi sobie całkiem nieźle. Narzędzie to wyświetla ilość zajmowanego miejsca przez Katalogi czy pliki. Przykład użycia: Pomoc programu: Du --help Wersja programu: Du --version Narzędzie można pobrać tu lub pobrać cały pakiet UnxUtils. Pakiet nie wymaga instalacji. Programy znajdują się w katalogu po rozpakowaniu: UnxUtils\usr\local\wbin. W razie problemów z działaniem narzędzi należy pobrać bibliotekę msvcrt.dll. Odnajdywanie i sorotwanie z narzedziem Du. Tak myślałem czy można uzyskać wyniki posortowane w liście. Prawie się udało. Do tego użyłem systemowego polecenia sort. Chyba najlepszy efekt daje sort/+12. Nie jest to jakaś kwintesencja. du -h C:\WINDOWS\Microsoft.NET | sort/+12 Program posortuje hierarchicznie podkatalogi w katalogach i będzie się starał segregować od największej do najmniejszej wartości. Podobny przykład, ale wyszukiwanie po konkretnej nazwie katalogu. Do wyszukiwania frazy w nazwie posłuży polecenie Find. W nazwie posiadającą dużą literę. Przykład: du -h C:\WINDOWS |find "Service" | sort/+12 Przykład użycia narzędzia sort z zestawu UnxUtils. Narzędzie to listuje jeszcze w inny sposób. Zachowuje hierarchię wartości. Sortuje od największej wartości liczby do najmniejszej. Mniej więcej tak to wygląda z użyciem przełączników: du -h C:\WINDOWS\System32 | sort -rn Ten sam efekt wyżej uzyskamy w konsoli PowerShell: du -h C:\WINDOWS\System32 | sort -desc Dalszy ciąg zabawy z użyciem narzędzia SFK. Użycie odpowiednich przełączników listuje w postaci drzewa wielkości katalogów i ich podkatalogów zachowane hierarchicznie, a co się stanie jeśli zostanie do tego dołożone systemowe polecenie sort. W przykładzie, listowanie katalogów równych lub większych 10MB: sfk stat -minsize=10 "C:\Windows\" | sort/+10 Dane zostaną posortowane w taki sposób, wpierw wyświetli się lista katalogów czy podkatalogów, które zajmują najmniejszy rozmiar względem głównego katalogu, nie posiadające innych podkatalogów. Następnie na liście zostaną wyświetlone katalogi, które posiadają podkatalogi, posegregowane według ilości podkatalogów: Poleceniem: sfk stat -minsize=10 "C:\Windows\" | sort Zostanie wyświetlona lista według hierarchii wielkości, od najmniejszej wielkości do największej. Podanie samego przełącznika stat, bez wprowadzenia wartości, wyświetli katalogi mniejsze od 1MB - jako 0MB, ponieważ narzędzie na poziomie tego przełącznika nie podaje wartości w bajtach: Poleceniem: sfk stat "C:\Windows" | sort Natomiast sfk posiada przełącznik, który wyświetli wybraną ilość plików - najmniejszych lub najwiekszych. Domyślnie narzędzie wyświetla 50 plików. Przykład wyświetlenia 80 najmniejszych plików z wybranej lokalizacji, wartości podawane są w bajtach: sfk list -small=80 -stat "C:\Windows\System32" Na końcu dołożony przełącznik -stat, który wyświetla sumę plików, katalogów, rozmiar całkowity na końcu listy. Lista jest automatycznie segregowana od największej wartości do najmniejszej. Podobne polecenie, ale wyświetlenie 80 największych plików, posegregowane od najmniejszych do największych wielkości: sfk list -big=80 -stat "C:\Windows\System32" Można również uzyskać listing plików i katalogów w bajtach, poleceniem: sfk list -size -stat "C:\Windows\System32\" Służy do tego przełącznik -size SFK można pobrać stąd. Wyszukiwanie plików po ich części nazwy z użyciem narzędzia grep z zestawu UnxUtils, jednak jest to wersja przestarzała, są już nowsze. Zaopiniowane przez Pi00 może nie działać do końca poprawnie. W przykładzie użycia widać że grep zaznacza kolorem użytą frazę do wyszukania. du -h C:\WINDOWS | sort -rn | grep -r --colour Shell Downland i skrótowy opis najświeższego narzędzia GREP na forum - klik. Sysinternals może również pochwalić się podobym narzędziem Disk Usage v1.31. Narządko nie przelicza jednostek na MB, posiada przełącznik listujący w KB, listuje w postaci sum, podawając ilość plików, katalogów, rozmiar całkowity lub w postaci pełnej listy. Przez dłuższy czas brak aktualizacji dla narzędzia, ale ostatnio Mark Russinovich w krótkim czasie wydał dwa nowe narzędzia - Coreinfo i Desktops, więc można się spodziewać innych niespodzianek (mam nadzieje). Disk Usage w połączeniu z PowerShell z wyświetleniem stu największych katalogów, podakatalogów, plików. Postortowany od największej wielkości do najmniejszej w kilobajtach z listingiem podkatalogów względem głównego katalogu. dusage -v C:\ | sort -desc | select -first 100 zmieniłem nazwę narzędzia du (Sysinternals) na dusage z powodu 2 takich samych nazw programów Przykład ten sam, ale z użyciem narzędzia Diruse z zestawu zanrzędziowego Support Tools. Narzędzie listuje z podaniem ilości podakatlogów przy głównym katalogu, stu największych podkatalogów, podana w megabajtach. Diruse /m /* C:\Windows | sort -desc | select -first 100 Podczas wykonywania wyżej wymienionych zadań lub przy skanowaniu większych katalogów i z plikami, należy się uzbroić w cierpliwość. Czas wykonania zadania zależy od wielkości katalogu, komputer wykorzystuje w mocnym stopniu procesor. Less for Windows Napewno bardzo dobrze znane narzędzie dla użytkowników konsoli Uniksa, a później dla bawiących się pakietem cmdletów PowerShell Community Extensions. Mowa o Less v418, którym można przeglądać zawartość pliku, wyświetla duże ilości tekstu z możliwością poruszania się czy nawigowania w obu kierunkach. Projekt jest rozwojowy. Na razie dostępny dla Windows 95 / 98 / NT / 2000 / XP. Strona główna programu klik. Downland programu klik (na dole). Opcje mogą się różnić. Widać autor projektu nie próżnuje wersja została udostępniona w tym roku, a już jest dostępna kolejna less-424 dla beta testerów. Polskie tłumaczenie przełączników programu (może się troszke różnić) - klik W prostym przykładzie użycie Less z narzędziem LS. ls -l C:\Windows | Less Widać LS listuje wybrany katalog, wykazując atrybut plików oraz prawa itp. Dołożenie narzędzia Less pozwoli na przewijanie zawartości góra-dół strzałkami, pozwala na różne wyszukiwanie podczas sesji. Jak widać na przykładzie szukanie z zaznaczeniem koloru plików z konkretnym rozszerzeniem. Jest to tylko przykład, w końcu LS sam odznacza kolorem różne typy plików. Aby tego dokonać, przy znaku zachęty trzeba wprowadzić polecenie filtrujące /, następnie wpisać fraze by Less odznaczył ją kolorem /.bmp. Klawiszem N można przeskakiwać do zaznaczonego pliku. Jeśli ktoś nie dysponuje narzędziem LS może je pobraćstąd. Less także pracuje z narzędziem DIR. Zastosowanie Diruse, PowerShell oraz Less. Jak listowac dysk w poszukiwaniu plików, które zajmują najmniejsze miejsce na dysku, chierarchicznie względem katalogów i podkatalogów lub posortowane według wielkości, od najmniejszych do największych oraz z wyszukaniem jakiejś frazy dla szybkiego znalezienia konkretnego pliku czy katalogu.Wielkości podawane w kilobajtach. Diruse /s /k /* C:\| select -first 1000 | Less np. zaznaczenie kolorem wielkości zerowych /0.00 Posortowane od najmniejszej wielkości do największej: Diruse /s /k /* C:\ | select -first 1000 | sort | Less hierarchia drzew będzie częściowo rozżucona To tyle... ****************************************************************** WINDOW v1.5 To już chyba projekt nie wspierany, ale godny uwagi (tak mi sie wydaje). Ukrywa, odkrywa, maksymalizuje, minimalizuje, pozwala zabić proces okna, wyświetla liste ukrytych okien, wyświetla listę okien do ukrycia. Pozwala użyć opcji - zawsze na wierzchu. Te wszystkie opcje w jednej aplikacji. Jedym słowem pozwala ukrywac okna aplikacji. Działa z lini wiersza poleceń, nie wymaga instalacji. Na razie widziałem jedyną tego typu freeware aplikację. Dostępne przełączniki programu: Window v1.5 - steve@steve.org.ku Usage: Window /show /min /max /top /list /kill Window Title /hide - Hide the matching windows. /show - Show the matching windows, don't hide them. /min - Minimize matching windows. /max - Maximize matching windows. /top - Toggle window 'Always on Top'. /list - List all non-hidden window titles. /listhidden - List only hidden window titles. /listall - List all window titles. /kill - Kill the given windows. Bardzo łatwy w obsłudze: Window /Przełącznik "Nazwa Okna" Zmierz sobie czas wykonania polecenia Może posłużyć do tego małe narządko ptime v1.0, bardzo proste w obsłudze. Co prawda starszej daty. Będe bacznie obserwował czy narządko będzie dalej wspierane. W przykładzie zmierzenie czasu wykonania sprawdzania dysku: ptime chkdsk Coś co już nie z nowości, chyba z 2005 roku, ale warte wymienienia. Na stronie Vincent Fatica znajduje się kilka ciekawych narzędzi. Jedno z nich to SCROLL, które pozwala przewijać ekran zajetego okna cmd do czystej lini. Drugie zaś narządko FSTOGGLE konsolowy zamiennik ALT+ENTER, który za pomocę polecenia wprowadza tryb pełno-ekranowy. I na końcu KEYTIMES narzędzie listuje w rejestrze date ostatniej modyfikacji czy czytania klucza z pewnymi wyjątkami, które są opisane na stronie, doskonałym zamiennikiem tej aplikacji jest okienkowy, świeży oraz rozwijany RegScanner - NirSoftu. Do KEYTIMES by odnaleść konkretne klucze po nazwie można użyć poleceń Findstr,Grep lub Find. Przykład użycia: KEYTIMES all | Findstr "Shell" Wspomne z nutką historii o chyba już zapomnianym i nie wspieranym narzędziu Sysinternals - HandleEx, które to funkcje są wbudowane w teraźniejsze narzędzia. Pobrać jeszcze można stąd - klik
  18. PowerGadgets http://www.powergadgets.com/ Gadżety PowerShell - swojego rodzaju wskazniki, liczniki, trójwymiarowe wykresy, zegary i inne cudeńka, które współpracują z konsolą. Ile kosztuje wersja płatna to może nie będe pisał. Mozna pobrać wersje Trial (60 dniowa). Do jej działania jest potrzeby: - Windows PowerShell RC1/RC2/RTW - NET Framework 2.0 - Windows XP, Windows Vista, Windows Server 2003 Przed pobraniem wersji trial należy podać swojego emeila i jakieś tam dane. Podczas instalacji programu zawoła o SerialNumber. Ten Serial Number dostaniemy na skrzynke pocztową. Przyznać trzeba że interfejs graficzny programu jest całkiem niezły. Potężny plik pomocy z którego na początku i tak nie mozna dojść do strzału. Własny Kreator do tworzenia. Uruchamiany PowerShell for PowerGadged tak też będzie napisane na okienku. Na stronie jest pokazane kilkanaście przykładów w postaci filmików. Porobiłem kilka przykładów jak wyglądają wykresy z procesami lub plikami na dysku i data z odświeżaną godziną (fajny zegareczek). W prostym przykładzie jak zmonitorować w czasie rzeczywistym użycie procesora dla poszczególnych procesów: Get-Process | select ProcessName, CPU | out-chart -Refresh 0:0:1 -Title "Twój Komentarz" out-chart - format wyświetlania czyli obiekt przyjmuje postać wykresu -Refresh - odświeżanie działania -Title - wstawienie własnego komentarza Pozostałe to : out-gauge - zawartość zostanie wyświetlona w postaci wskażników, out-map - tym poleceniem możemy stworzyć własną mapke z pogodą. Jak przy jednorazowej sesji dodac wtyczkę PowerGadgets po to by uruchomić sesje z Gadgets. W oknie Shella należy wpisać: Add-PSSnapin PowerGadgets To by było na tyle. A teraz może chciałbym napisać że na ten czas zamykam PowerShella. W nowej odsłonie będzie dodany nowy cmdlet - na ten czas jest ich 24 szt więcej oraz powłoka obiektowa i Out-GridView, które automatycznie zamieni nam w postać okienkową - graficzną nasze wyniki w poleceniu. W którymś poście podałem adres skąd pobrać wersje testową, ale żeby Out-GridView działał należy przeinstalować Net-Framework 2.0 na 3.0, który działa bez problemu. Tak więc kilka przykładów: Get-Service | Sort-Object Status, DisplayName | Out-GridView Get-Service | Out-GridView Get-Process | Sort-Object Name, Handles | Out-GridView Get-Process | Out-GridView Jak pogrupować elementy w Out-GridView czyli wykonać posegregowaną, otwieraną liste w wylistowanym okienku. W przykładzie tak, aby oddzielić stan usług running-stopped otwieraną listą. Możemy użyć wyżej poleceń, gdy komenda zostanie wykonana poprawnie w oknie Out-GridView prawoklikiem na pozycje STATUS, pojawi się pozycja "Show in groups" i należy ją zaptaszkować, nastepnie klikamy ponownie na pozycje STATUS(lewoklik) Poprawnie zwrócone działanie posortuje usługi jako otwierane listy: Uwaga! Jeśli ktoś będzie przeinstalowywał wersje Shella, musi wcześniej odinstalowac PS v1.0. Podczas instalacji 2.0 może zawołać o wcześniejsze zainstalowanie WS-MAN czyli WS-Management v1.1 oznaczenie: WindowsXP-KB936059-v2-x86-PLK LibraryChart Wymagania: Microsoft Chart Controls for Microsoft .NET Framework 3.5 LibraryChart pozwala na tworzenie wykresów, do poprawnego działania należy pobrać i zainstalować Microsoft Chart Controls, który jest zestawem wykresów. Jest to kontrolka, która działa z Windows Forms oraz ASP.NET. Cmdlet pozwala na wyświetlenie wykresu w Windows Forms, wybrać wykres, zapisać wykres do pliku, aktualizować wykres w czasie rzeczywistym. Współpracuje z PowerShell V1.
  19. WMInetcq Licencja: Freeware Platforma: 32-bit MS Windows Rozwój: Beta Kolejna alternatywa dla Wmic, narzędzie pozwala na dynamiczne odpytywanie WMI, przegląd obiektów z lini poleceń na komputerze lokalnym lub zdalnym. Narzędzie posiada wyszukiwarkę klas, której można używac w różnej przestrzeni nazw, umożliwia przegląd właściwości, metod, jakie można wykonać na klasie. Pozwala na wykonywanie zapytań w języku WQL, filtrować wyniki. Narządko jest dość świeże. Bardzo przypomina narzędzie CleWmi.
  20. PowerShell Help Reader PowerShell Help ReaderLicencja: Shareware Platforma: XP, Vista Wymagania: .NET Framework 3.5 lub wyżej Dla: Windows PowerShell v1.0, v2.0 CTP1 - CTP3 Trial: 21 dni Narzędzie pozwala na przegląd pomocy poleceń konsoli, jak i na przegląd zainstalowanych snap-in, które mogą być dodawane lub usuwane z systemu pomocy. Interfejs jest ładny i przyjazny dla użytkownika, cena już nie jest ładna $39.95, wydaje mi się że jak na taki produkt za wysoka. Narzędzie wymaga instalacji. PowerShell Help Reader Basic Edition 1.2.0 (26.12.2009) Dostepna jest darmowa wersja Basic do użytku niekomercyjnego. Jej ograniczeniem jest brak obsługi wtyczek i modułów. Edycja Professional nie jest limitowana. Platforma: Windows XP SP3, Serwer 2003 SP2 i wyżej. Wymagania: Windows PowerShell v1.0 lub v2.0 / .NET Framework 3.5 SP1
  21. Syntax Highlighting in PowerShell by Lee Holmes Pan ten stworzył całkiem niezły skrypt. Start-Colourizer ma za zadanie kolorować składnię skryptu, czyniąc ją w oknie shella atrakcyjniejszą to raz i czytelniejszą dla oka. Funkcje, argumenty są podawane w konkretnych kolorach. Oczywiście dla działania tego skryptu trzeba mieć zainstalowany PowerShell 2.0 CTP. Show-ColorizedContent jest to skrypt demonstracyjny, jako ogólne pokazanie atrakcyjności i przydatności tej funkcji. Uruchomiłem go bezproblemowo. Strona główna: Lee Holmes, skrypt demonstracyjny Colorized Opis, działanie, downland skryptu Start-Colourizer ->Klik. Po rozpakowaniu w pliku txt "readme" jest instrukcja uruchomienia.
  22. Zmierz sobie czas wykonania polecenia w PowerShellu Pełna nazwa projektu pstools. Jest to pojedyńcza paczka cmdletu pstime-0.1.0.0, projekt rozwojowy, oznaczony jako 3 - Alpha, przeznaczony dla platform Win XP, 2003. Licencja - GNU General Public License. Aplikacja mierzy czas wykonania polecenia, podawając cztery wartości. Wymaga instalacji. Nie testowałem na CTP2 Jak uruchomić aplikację podczas jednorazowej sesji: Add-PSSnapin bearmini.PowerShell.Commands.PSTime Jak wyświetlić cmdlet paczki: Get-Command -pss bearmini.PowerShell.Commands.PSTime Zastosowanie: Get-ElapseDTime Get-Service Projekt dostępny na SourceForge
  23. Bginfo Sysinternals Napewno jest Wam bardzo dobrze znany ten program. Bginfo - małych rozmiarów, działające bez potrzeby instalacji, który ma za zadanie wyświetlać podstawowe informacje konfiguracyjne naszego systemu, gdzie te informacje wyświetlane są na tle pulpitu. Dokładniej Bginfo wstawia w tapete informacje. Kopia tapety powinna się znajdować w katalogu C:\Windows pod nazwą Bginfo. Pewnie sie dziwicie dlaczego opisuje je tutaj? Bo to może mieć mało co wpsólnego z konsolą, ale jednak coś łączy Bginfo z tematyką opisaną powyżej. Mianowicie Bginfo posiada nie tylko po uruchomieniu możliwość wyświetlania danych, które są już w nim ustawione. Bginfo daje również możliwość zbierania informacji z klas WMI, więc możemy zrobić dla własnych potrzeb taki rodzaj informacji jaki się nam podoba. Downland Sysinternals - BgInfo - By Bryce Cogswell. Wersja jest uaktualniana. A więc do rzeczy, uruchamiamy Bginfo, program zacznie automatycznie odliczać czas 10 sekund do wstawienia informacji do tapety, aby to zatrzymać jeśli ktoś sobie nie życzy to u góry tabeli po prawej stronie kliknąć na pozycje Time remaining. Następnie - tworzenie zestawu własnych informacji za pomocą klas WMI. Poniżej tabelki z własnościami jakie mają się wyświetlać, należy kliknąć na pozycje Custom Pojawi się tabela User Defined Field. Jak widać na przykładzie są już dodane własności z konkretnej klasy, sam je wcześniej dodałem. Następnie, aby wybrać sposób pozyskiwania informacji trzeba kliknąć na pozycje New. Kolejnie pojawi się podtabelka wyboru Define New Field skąd ma pobierać informacje, a w niej wybrać pozycje WMI Query, a następnie poniżej, po prawej stronie kliknąć w opcję Browse. W tabeli WMI Query Selection zostaną automatycznie załadowane klasy WMI. Klasy są ładowane z nazwy przestrzennej Root/CimV2. Następnie wybieramy klase w menu WMI Class:. W tym przykładzie jest to klasa zbierające informacje na temat procesów. Po wybraniu, w menu obok Class Property: zostaną wyświetlone własności klasy,a w niej możemy wybrać interesującą nas własność. W tym przykładzie jest to Name czyli własność odpowiadająca za wyświetlenie nazwy procesów, a wynik zebrania tych informacji wyświetli się poniżej w pozycji Query Result(s). Aby dodać to należy w dolnym-prawym rogu tabeli kliknąć OK Potwierdzeniem powrócimy do tabeli Define New Field i na samej górze po lewej stronie musimy wpisać własność, przy polu Identifier. Raz że ta pozycja zostanie dodana do głównego okna w polu wyboru Fields, którą to własność będzie z tej listy można dodać. Istotne jest że nazwa własnośći może sie powtórzyć już w głównym oknie wyboru, więc nie trzeba się sugerować tym, aby wpisać dokładnie nazwe własności z klasy, lecz można nadać tej własności własną identyfikacje, jak w przykładzie poniżej w tabeli Define New Field, wpisałem tam nazwe NazwyProc. Nie używać polskich znaków -ó,ż,ć bo nie doda do listy. Potwierdzamy, klikając OK. Czynność wpisania własnej nazwy koknretnej własności można wpisać już na początku wybierania w tabeli Define New Field, jeszcze przed wyborem WMI Query, ale i tak będzie żądał potwierdzenia. Następnie program powróci do tabelki User Defined Field, potwierdzając dodanie własności z klasy,wpisem. Akceptujemy, klikając OK W głównym oknie Bginfo w polu własności Fields zawidnieje nasz wpis, który możemy dodać by umieścił informacje o nazwach procesów w tle tapety, posługując się opcją ADD Może sie wydawać że jest to zakręcony sposób lub po przeczytaniu można mieć mętlik, no chyba że ja jak zwykle dziwnie opisuje. Natomiast jeśli chcemy usunąć własności, które wcześniej sami dodaliśmy to w głównym oknie Bginfo ponownie klikamy na opcje Custom, po pojawieniu się tabeli User Defined Field zaznaczamy wybraną własność i klikamy na opcję Remove, następnie potwierdzamy dokonane zmiany. Ustawienia kolorów, czcionki i jej wielkości, rodzaj. Bginfo pozwala na zmiane tych właściwości jako urozmaicenie i dostosowanie do grafiki tapety. Ustawienie globalne pozwala na zmiane dla wszytskich wpisów w tle tapety, natomias jeśli w oknie zaznaczymy własność lub nazwe własności i wybierzemy rodzaj czcionki i kolor to zmieni tylko to ustawienie dla zaznaczonej własności. Więc nazwy własności mogą być w innym kolorze czy wielkości i same własności również: Także można zmienić nazwe przypisaną samej własności, zmieniając jak w przykładzie zamiast Free Space na Wolną przestrzeń: Tak dla rozjaśnienia dodana własność z klasy WMI w glównym oknie będzie wyglądała tak: NazwyProc: <NazwyProc , więc jeśli chcemy, aby nazwa własna była inna zmieniamy na: Procesy: <NazwyProc Bginfo także obsługuje skrypty VBS. Program mozna dodać do autostartu. Osługiwany również z lini wiersza poleceń do różnych zadań, aby wyświetlić dostępne przełączniki w wierszu polecenia wystarczy wpisać Bginfo/?. Na przykład jeśli chcemy, aby program umieścić jako TaskBar w zasobniku, należy użyć polecenia Bginfo/TASKBAR. Ikona powędruje do zasobika, a po kliknięciu na nią pojawi się tabela z informacjami, które ma wyświetlić. Dostępne przełączniki: W zasobniku wygląda tak: Wyżej wpominałem o lokalizacji, gdzie program tworzy tapete, mozna zamienić te lokalizacje klikając po lewej strony w głównej tabeli programu na pozycje Bitmap, a wniej na Location. Pojawi się tabelka z wyborem lokalizacji oraz lokalizacją domyslną. To tyle...
  24. PowerTab http://thepowershellguy.com/blogs/posh/pages/powertab.aspx Cóż, szkoda że tego tekstowego edytora nie ma razem w zestawie konsoli PowerShell, a mowa o PowerTab 0.98 - TabExpansion. Debeściacki edytor, który ułatwi nam prace w konsoli. Ma za zadanie wyświetlać obiekty klass WMI oraz NET. Obłsuga jest bardzo prosta, wystarczą klawisze - Tab, strzałki góra-dół oraz Backspace. W prostym przykładzie jak wyświetlić polecenia związane z GET. W oknie konsoli wpisujemy Get- nastepnie przyciskamy Tab, po chwili wyświetlą się wszystkie polecenia wziązane z GET, aby zamknąć okienko tekstowe wystaczy wcisnąć Backspace lub Esc. A jak wyświetlić konkretne klasy WMI. W przykładzie PowerTab jest na tyle elastyczny że nie musimy podawać wcześniejszego polecenia Get-WmiObject, wystarczy że wpiszemy Win32_ i znowu wciskamy klawisz TAB. Wyświetlą się nam wszystkie klasy WMI. Bardziej precyzyjnie. Win32_P, wyświetlą się wszystkie klasy z własciwości zaczynające się przedrostkiem p. Jeszcze bardziej precyzyjnie. Nie musimy cofać działania PowerTab, wystarczy ze w tej samej lini dopiszemy litere w przykładzie Win32_pr okno PowerTab od razu wyświetli czy istnieją obiekty, itd,itp to samą się tyczy obiektów NET. Strzałkami góra-dół wybierały interesująca nas właściwość. Na samym dole okna tekstowego PowerTab są zliczone ilości obiektów. To by było opisane dość skrótowo na dziś. Instalacja PowerTab Wygląd PowerTab PowerTab w TechNet A u mnie wygląda tak: Polecenia PowerTab: Jak zamienić wynik polecenia na wynik okienkowy. Należy za konsolowym poleceniem użyć Out-DataGridView. Przykład: Get-Help about_* Select Name, Synopsis | Out-DataGridview Get-Command | Out-DataGridview Jak wyświetlić liste przypisań - filtrów(aliasów) PowerTab: Get-TabExpansionCustom Jak wyświetlić konfiguracje PowerTab: $PowerTabConfig Jak wyświetlić szczegółową wybraną konfiguracje PowerTab: $PowerTabConfig. (tab) Jak wyświetlić ustawienia kolorów w PowerTab: $PowerTabConfig.Colors (enter) Jak wyświetlić stos funkcji dla ustawień PowerTab: F_ (Tab) Jak wyświetlić klasy WMI z opisem reprezentacji klasy: W_ (Tab) Jak wyświetlić wybrane klasy WMI, sortując wynik po nazwie: W_Us (Tab) - (klasy usb czy user) W_pro (Tab) - (klasy związane z procesorem czy procesami) PowerTab może również listować zawartość katalogu WINDOWS, sort alfabetyczny. Poleceniem: ! (tab) ,mozliwość filtrowania czyli listowanie po nazwie pliku !d (tab) / !dw (tab). Wyświetli pliki w kolejności alfabetu, które w nazwie własnej posiadają litere D, nastepnie wyświetli pliki, które te litere posiadają w nazwie członowej. Jak wyświetlić w PowerTab pełny spis poleceń konsoli PS oraz spis poleceń PowerTab: % (tab). Sort alfabetyczny. Także mozliwość filtrowania na tej samej zasadzie jak opisana wyżej %g (tab) / %gp (tab) Listing C:\Documents and Settings\Użytkownik. Wbudowane polecenie, ale brak możliwości sortu: ? (tab) Polecenia globalne PowerTab: W_ : WMI GUI tabcompletion H_ : History tabcompletion F_ : function GUI tabcompletion D_ : Directory GUI tabcompletion G_ : History GUI tabcompletion C_ : Custom GUI tabcompletion Na stronie The PowerShell Guy dostępna jest kolejna odsłona edytora PowerTab. Jest to wersja testowa oznaczona jako PowerTab version 0.99 Beta 2 Released. Do pobrania pod adresem Powertab Beta Page. Jednak na wersje finalną trzeba jeszcze poczekać. Zmiana wyglądu PowerTab Wyżej podałem polecenie do wyświetlenia stanu kolorów w PowerTab - $PowerTabConfig.Colors(enter), a jak podczas pojedyńczej sesji zmienić kolory. W tym celu można użyć samego PowerTab, wpisując ścieżke $PowerTabConfig.Colors.(tab), wyświetlą się metody jakich możemy użyć, w przykładzie jak zmienić kolor tła PowerTab: $PowerTabConfig.Colors.BackColor='white' tło zostanie zmienione na kolor biały. Żeby nie dokonywać od początku tego samego uruchamiając nową sesję, ustawienia kolorów można zapisać do pliku .csv, a następnie pobrać je z pliku i natychmiastowo zmienić kolory. Żeby zapisać ustawienia należy użyć polecenia: Export-TabExpansiontheme C:\ColorTab.csv (ścieżke wybieramy,gdzie chcemy) Żeby pobrać ustawienia do PowerTab należy użyć polecenia: Import-TabExpansiontheme C:\ColorTab.csv W pliku można ręcznie zmieniać kolory i zapisać zmiany. Przykład zawartości pliku: Name,Color BackColor,White BorderBackColor,Blue BorderColor,Blue BorderTextColor,Red FilterColor,DarkGray SelectedBackColor,Red SelectedTextColor,Yellow TextColor,Black To tyle... Listing plików i folderów PowerTabem PowerTab ma zdolność do listowania zawartości dysku, katalogu, folderu oraz filtracji listingu danych. Takim \ (tab) znakiem, PowerTab wykaże co znajduje się bezpośerdnio na dysku C. idziemy dalej, wybieramy na liście C:\Windows i jeśli chcemy lustrować zawartość tego katalogu wystarczy dopisac C:\Windows\ (tab), nie cofając działania programu można filtrować dane po jej nazwie członowej, przypuśćmy wyświetlenie wszystkich plików w katalogu Windows zaczynających się literą B - C:\Windows\B (tab). W przykładzie jak wyświetlić tylko pliki exe w katalogu system32 zaczynające sie od nazwy wi: C:\Windows\System32\wi*exe (tab). Gwiazdka * jest czynnikiem filtrującym rozszerzenie pliku. W przykładzie jak wyświetlić wszystkie pliki w system32 zaczynające się od nazwy au: C:\Windows\System32\au (tab) Jak widać PowerTab na dole tabeli wyświetlił ilość aplikacji zaczynające się od podanej nazwy: [1] - zaznaczony pierwszy plik w liście 1-10 - 10 wyników (10/2013) - w katalogu znajduje się 10 aplikacji o podanym wyrażeniu z 2013 innych (jeśli wcześniej był listowany cały katalog System32, jeśli nie, nie będzie tego wykazu) Nie cofając gdziałania programu można dalej filtrować, dopisując jakąś litere. Może okazac się również pomocne jeśli posiadamy własny katalog ze skryptami, wystarczy listować jego zawartość, wybrać pozycje z listy w PowerTab i nacisąć enter żeby uruchomić skrypt. PowerTab również tak samo listuje inne dyski. Należy pamiętać że czym wieksza zawartość katalogu, tym dłużej trzeba poczekać na wynik, jednak program jest szybki i elastyczny, więc radzi sobie z tym dobrze. Listing i wykaz plików z katalogu System32 zajmuje mu około 4-5 sekund, a mam tam ponad 2000tyś plików. Może zajść sytuacja, gdy szukając po wpisanym wyrażeniu, zamiast pojawienia się tabeli PowerTab, program dopisze w ciągu nazwę aplikacji to będzie to oznaczać że w tym katalogu znajduje się tylko jedna aplikacja odpowiadająca wpisanej nazwie. To Tyle... Przejdź i historia w PowerTab Pracując w konsoli, przechodząc do innej lokalizacji chcemy powrócić czy przypomnieć sobie wpisane polecenia czy znaleść się w katalogu w którym byliśmy 10 min temu, jeśli wymaga tego sytuacja. Przypuścmy że znajdujemy się w katalogu Windows i zaszła potrzeba przejść do innego katalogu w tej lokalizacji, w powyższych przykładach pokazałem listing dysku i tu ta zasada odbędzie się podobnie. Już samo naciśnięcie (tab) spowoduje listing zawartości katalogu w którym aktualnie się znajdujemy (przy tekście zgłoszenia bez wpisanego żadnego polecenia), Tab poprzedzamy poleceniem cd, nastąpi listing zawartości, wystarczy wybrać w tabeli ścieżke i dać enter, program sam dopisze cudzysłowia w ścieże jeśli sama ścieżka tego wymaga. Na skróty, odtwarzanie historii przechodzenia z katalogów. Te wszystkie czynności, aby ich nie powtarzać i poruszać się dynamicznie w konsoli, PowerTab zapisuje historie podczas jednorazowej sesji. Więc, aby odtworzyć historie i za jej pomocą przechodzić do innych katalogów należy użyć globalnego polecenia h_ (Tab)i przefiltrować historie poleceń, poleceniem h_cd (tab), pojawi się wykaz. Samym poleceniem h_ , PowerTab wyświetli pełną historie wpisanych poleceń. Możliwość filtrowania wpisanych poleceń np. Get-, poleceniem h_g (Tab). Użycie h_ (tab): Spis poleceń z czasem ich wykonania, czasem zakończenia wykonania działania oraz stanem wykonania polecenia (FunctionStatus). PowerTab oferuje odczyt tych właściwości w tabeli GUI, za pomocą globalnego polecenia g_ (Tab): To co opisałem to nie jest nic nadzwyczajnego, ale jedno trzeba przyznać że bardzo ułatwia prace i poruszanie się w konsoli. To Tyle... Na blogu The PowerShell Guy pojawiła się wersja testowa PowerTab for PowerShell V2 Alpha przeznaczona dla wersji PowerShell V2 CTP2, implementowana jako moduł. Nowa wersja została usprawniona o nowe, dodatkowe przełączniki, takie jak dynamiczna konfiguracja polityki uruchamiania skryptów czy też usprawnienie pisania kodu. Prezentacja programu PowerTab for PowerShell V2. Prezentacja nowych przełączników oraz downland PowerTab V2 Alpha 1. Instalacja PowerTab. Wersja przeznaczona jest dla beta testerów. Jest to projekt rozwojowy, więc do czasu wydania może się wiele zmienić, nie posiadająca konfiguracji. Żródło: The PowerShell Guy - PowerTab V2 Alpha 1 Update PowerTab - 23.7.2008 Na blogu The PowerShell Guy pojawiła się aktualizacja testowej wersji PowerTab przeznaczonej dla PowerShell V2 CTP2. Aktualizacja zawiera, możliwość listowania zawartości rejestru z poziomu samego programu oraz listowanie udziału sieciowego używając formatu ścieżki UNC z połączonym komputerem z możliwością filtrowania rozszerzeń plików. Jest to nadal wersja testowa. Więcej na blogu PowerTab for PowerShell V2 Update. Żródło: The PowerShell Guy
  25. ...................................................................................................................................................................................................... Windows PowerShell Scriptomatic Windows PowerShell Scriptomatic jest to narzędzie ułatwiające pisanie prostych skryptów, pracujące na klasach WMI, generujące kod z możliwością natychmiastowego uruchomienia skryptu lub zapisania go do pliku. Jest dobrym rozwiązaniem dla osób, które zaczynają zabawe z Shellem. Strona główna: PowerShell Scriptomatic Obsługa narzędzia jest stosunkowo prosta. W pierwszej kolejności wybierany nazwe przestrzenną w polu WMI Namespace, trzeba poczekać z trzy sekundy aż zostaną załadowane klasy WMI w wybranej przestrzeni nazw - pole WMI Class, po załadowaniu pod tabelą WMI Class zostanie wyświetlona ilość klas Dynamic Classes Found:. Następnie wybieramy interesującą nas klase w tabeli WMI Class. Jeśli chcemy zobaczyć jaka dana klasa posiada właściwości Class Properties to wcześniej przed wybraniem konkrentej klasy poniżej pola wyboru File, Options, Help, klikamy w trzeci odnośnik po prawej stronie i tam należy zaptaszkować pozycje Display Class Properties, w prawej górnej stronie tabeli wyświetli się dodatkowe pole ze spisem właściwości klasy. Gdy już wybraliśmy to co chcemy i mamy zamiar uruchomić wynik z konsoli PowerShell to należy użyć pozycji Run. Jeśli chcemy podejrzeć zawartość skryptu w notaniku nalezy użyć pozycji Notepad. Jeśli chcemy zapisać skrypt należy użyć pozycji Save Jeśli chcemy uruchomić skrypt razem z własnym profilem jeśli taki posiadamy to poniżej pola wyboru File, Options, Help klikamy w środkowy odnośnik w górnej lewej stronie tabeli i zaznaczamy opcję Run With Profile Możliwość uruchomienia każdego skryptu wybranego z danej lokalizacji poprzez File/OpenScripts ...................................................................................................................................................................................................... WMI Code Generator 1.33 Jest to proste w użyciu narzędzie, małych rozmiarów, działające bez instalacji. Aplikacja pracuje na klasach WMI, ma za zadanie generować kod (proste skrypty) w językach - Batch, JScript, KiXtart, Object Rexx, Perl, PowerShell, Python, VBScript. Generator wykazuje w tabelkach jakie dana klasa posiada właściwości oraz jakie możemy na danej klasie wykonywać metody. Brak mozliwośći uruchomienia skryptu z poziomu programu. Wersja aktualizowana. Do pobrania: wmigen Aktualizacja WMIGEN - Version 2.01 (07/20/2008) Został dodany przycisk HELP, gdzie wcześniej wybieramy klase wmi, który to użyty kieruje nas do witryny MSDN i otwiera się opis przez nas wybranej klasy, jak budowa klasy (unit,string) oraz przykłady gotowych skryptów dla tej klasy w opracu o VBS lub PowerShell. Do pobrania pod tym samym adresem co wyżej: wmigen
×
×
  • Dodaj nową pozycję...