Skocz do zawartości


tablety.pl
Zdjęcie

Windows PowerShell




  • Zaloguj się, aby dodać odpowiedź
11 odpowiedzi w tym temacie

#1 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 10 01 2008 - 12:38

Dołączona grafika





Dołączona grafika PowerShell



Windows PowerShell 1.0
Windows PowerShell 2.0 (CTP)
Windows PowerShell 2.0 (CTP2)
Windows PowerShell 2.0 (CTP3)

Platforma: Windows XP SP2 / Vista / Server 2003 / Server 2008

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.




Dołączona grafikaMATERIAŁY I LITERATURA:

Dołączona grafikaPrzykładowe skrypty i dokumentacje:
Dołączona grafikaPaczka skryptów z M$
Dołączona grafikaWindows PowerShell 1.0 Documentation Pack
Dołączona grafikaWindows PowerShell Quick Reference
Dołączona grafikaWindows PowerShell Graphical Help File
Dołączona grafikaWindows PowerShell Graphical Help File (Version 2.0)
Dołączona grafikaFree Windows PowerShell Book
Dołączona grafikaWstęp do PowerShell-WSS.pl
Dołączona grafikaMateriały pomocnicze-Politechnika Gdańska
Dołączona grafikaPolityki uruchamiania skryptów
Dołączona grafikaWikipedia
Dołączona grafikaPash = PowerShell + Bash
Dołączona grafikaIIS 7.0 PowerShell Provider Tech Preview 1
Dołączona grafikaCodeplex - skrypty różnych autorów
Dołączona grafikaStrona główna Windows PowerShell 2.0 CTP2
Dołączona grafikaThe Windows PowerShell Toolbox
Dołączona grafikaKsiążki:

Dołączona grafikaWindows PowerShell. Leksykon kieszonkowy (Lee Holmes -Data wydania: 10/2008)
Dołączona grafikaWindows PowerShell Przewodnik po skryptach (Data wydania: 09/2008)
Dołączona grafikaPowerShell Krok po kroku (Data wydania: 08/2007)
Dołączona grafikaPowerShell in Practice (Richard Siddaway - Data wydania: August 2008)
Dołączona grafikaWindows PowerShell? v2.0: TFM 3rd Edition
Dołączona grafikaWindows PowerShell 2 For Dummies - by Steve Seguis
Dołączona grafikaMicrosoft Powershell, VBScript & JScript Bible - by William R. Stanek (Publication Date: January 2009)
Dołączona grafikaWindows PowerShell Quick Reference - by Lee Holmes, 2006
Dołączona grafikaPro Windows PowerShell (Pro) by Hristo Deshev
Dołączona grafikaWindows PowerShell - Guide de référence pour l'administration systeme
Dołączona grafikaScripting mit Windows PowerShell
Dołączona grafikaMicrosoft Windows PowerShell Programming for the Absolute Beginner
Dołączona grafikaWindows PowerShell Crashkurs
Dołączona grafikaWindows Powershell Tfm
Dołączona grafikaProfessional Windows PowerShell - Andrew Watt
Dołączona grafikaWindows Powershell in Action
Dołączona grafikaWindows Powershell Cookbook
Dołączona grafikaWindows Powershell Unleashed
Dołączona grafikaProfessional Windows Powershell Programming - Arul Kumaravel & Jon White & Michael Naixin
Dołączona grafikaWindows Powershell V1.0 Tfm 2nd Edition
Dołączona grafikaWindows powershell - kit d'administration by E. Wilson
Dołączona grafikaWindows Powershell 2.0 Unleashed
Dołączona grafikaSams Teach Yourself Windows PowerShell in 24 Hours
Dołączona grafikaWindows PowerShell Scripting Guide
Dołączona grafikaMonad (AKA PowerShell)
Dołączona grafikaAn Introduction to Microsoft PowerShell
Dołączona grafikaSchnelleinstieg in die Windows PowerShell
Dołączona grafikaPowerShell Pocket Reference - By Lee Holmes, May 2008
Dołączona grafikaWindows PowerShell : The Definitive Guide by -Lee Holmes (2007)
Dołączona grafikaEssential PowerShell By Holger Schwichtenberg, Jun 2008
Dołączona grafikaBLOGI POWERSHELL
Dołączona grafikaPrzykłady, skrypty, publikacje, programy, pomoc:
Dołączona grafikaPoshXmpp
(umożliwia wysyłanie i odbieranie wiadomości poprzez Jabbera)
Dołączona grafikaOneNote PowerShell Provider
(umożliwia zapis wyników w programie OneNote z pakietu Office)
Dołączona grafikaWindows Desktop Search Powershell Cmdlet
(do poprawnego działania należy mieć zainstalowany WDS - Windows Desktop Search)
Dołączona grafikaPowerShell dig (nslookup) Cmdlet! - PoshNet
Dołączona grafikaHow Can I Determine Folder Size?
Dołączona grafikaPowerShellASP (Freeware)
Dołączona grafikaThe Official Scripting Guys Forum!
Dołączona grafikacd into Sysinternals Tools from PowerShell
Dołączona grafikaNew Free Windows PowerShell Quick Reference Card
Dołączona grafikaBackground Timer PowerShell WPF Widget
Dołączona grafikaPowerPad
Dołączona grafikaWindows PowerShell Virtual Machine Manager Cmdlet Reference
Dołączona grafikaPowerShell Quick Reference By Lee Holmes (2006) dostępne w Google
Dołączona grafikaWindows PowerShell Week Script Samples
Dołączona grafikaThe VBScript to Windows PowerShell Conversion Guide
Dołączona grafikaOut-BarGraph
Dołączona grafikaActiveXPoSH (PS for VBScript/JScript) - SAPIEN Tech
Dołączona grafikaDetermining the Size of a Folder
Dołączona grafikaGet-Ipconfig function
Dołączona grafikaselect-member
Dołączona grafikaDir

Dołączona grafika Na polskich stronach:
Dołączona grafikaPowershell v2.0 wspiera WPF by danieb
Dołączona grafikaPowershell się przyjął by danieb
Dołączona grafikaWindows PowerShell - dobry wygląd (Artykuł w TechNet)
Dołączona grafikaIIS7 Powershell provider CTP2
[/list]Dołączona grafikaSkrypty VBS i zestawy narzędzi

Dołączona grafikaSkrypty vbs, Centrum skryptów w Twoim komputerze, narzędzia:
Dołączona grafikaScript Center All-in-One (pobierz z M$)
Dołączona grafikaTechNet Script Center Sample Scripts (pobierz z M$)
Dołączona grafikaDo-It-Yourself Script Center Kit (pobierz z M$)
Dołączona grafikaSesame Script, 2005-2007 (pobierz z M$)
Narzędzia:
Dołączona grafikaSysinternals (Mark Russinovich, Bryce Cogswell, M$)
Dołączona grafikaSupport Tools (Zestaw narzędzi M$)
Dołączona grafikaResource Kit (Zestaw narzędzi M$)

Dołączona grafika Tematy na forum SE:
Dołączona grafikaINDEX - Baza wszystkich zlinkowanych programów
Dołączona grafikaProgramistyka i narzędzia konsolowe
[/list]



******************************************************************


Dołączona grafikaDołączona grafikaDołączona grafika



#2 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 17 01 2008 - 21:58

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.

#3 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 18 01 2008 - 16:25


Dołączona grafika

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

Dołączona grafika

Narzędzie list modules ma to do siebie że wypisze tylko moduły interesującego nas procesu, uzycie z lini wiersza polecenia:

listmodules PID

Dołączona grafika


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

Dołączona grafika

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:

Dołączona grafika

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:

Dołączona grafika

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

Dołączona grafika

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

Dołączona grafika


Klass WMI w systemie jest prawie 1000szt. Można przejrzeć prawie każdą śrubke systemu, aby wylistować klasy WMI nalezy wpisać:

Get-WmiObject -list

Dołączona grafika



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


#4 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 18 01 2008 - 19:16

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.

Dołączona grafika


Jak już sie rozpisałem to jeszcze coś zamieszcze, kiedyś chodziłem po stronie M$, wszedłem na te strone:
http://www.microsoft...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:

Dołączona grafika

#5 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 18 01 2008 - 19:36

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

#6 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 19 01 2008 - 23:17

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://powershellliv.......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


#7 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 28 02 2008 - 12:48

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:

Dołączona grafika

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:

Dołączona grafika

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:

Dołączona grafika


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:

Dołączona grafika


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:

Dołączona grafika

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 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 08 03 2008 - 12:58

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*

Dołączona grafika

Czy przefiltrowanie po nazwie z wyświetleniem własciciela pliku, w przykładzie:
Dir/q w*

Dołączona grafika

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*

Dołączona grafika

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

Dołączona grafika

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:

Dołączona grafika

Dołączona grafika


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:

Dołączona grafika

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:

Dołączona grafika



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:

Dołączona grafika

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:

Dołączona grafika


Jak wyświetlić wszystkie dokumenty Word znajdujące się na naszym komputerze:
get-childitem C:\ ,D:\ -recurse -include *.doc

Dołączona grafika

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

Dołączona grafika

Zliczanie elementów - sumowanie. Czyli wyliczenie statystiki w postaci liczbowej poszczególnych rozszerzeń plików:
get-childitem | group-object extension

Dołączona grafika

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:

Dołączona grafika

Wlistowanie w trzech kolumnach zawartości katalogu Windows:
Get-ChildItem C: | Sort-Object Name | Format-Wide FullName -Column 3

Dołączona grafika

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

Dołączona grafika


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

Dołączona grafika

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"}}}

Dołączona grafika

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"}}}

Dołączona grafika


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" }
}

Dołączona grafika


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" }
}

Dołączona grafika


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

Dołączona grafika

#9 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 16 03 2008 - 13:54

Witam. Z okazji 14stych urodzin Linuxa życze wszystkiego najlepszego.

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

Dołączona grafika

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:

Dołączona grafika

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:

Dołączona grafika


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:

Dołączona grafika



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

Dołączona grafika

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

Dołączona grafika


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:

Dołączona grafika


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.

#10 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 22 03 2008 - 12:10

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

./

Dołączona grafika

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

Dołączona grafika


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

Dołączona grafika

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:

Dołączona grafika


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:

Dołączona grafika


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:

Dołączona grafika


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:

Dołączona grafika


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 " "
}

Dołączona grafika

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:

Dołączona grafika

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:

Dołączona grafika

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:

Dołączona grafika


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

Dołączona grafika

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.

#11 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 08 04 2008 - 21:13

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

Dołączona grafika



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

Dołączona grafika



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

Dołączona grafika






PoshConsole

Dołączona grafika


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





Dołączona grafikaShinyPower

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

Dołączona grafika




Saipen - Windows PowerShell Help Tool
Dołączona grafika

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
Dołączona grafika


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
Dołączona grafika


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

Dołączona grafika

Dołączona grafika

Dołączona grafika



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.

Dołączona grafika

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
Dołączona grafika

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.

Dołączona grafika

Artykuł dostępny pod adresem: The Scripting Guys Answer Your Questions

#12 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 09 09 2008 - 22:09


Dołączona grafika


Dołączona grafikaMENU II

Dołączona grafikaProgramy, skrypty, publikacje:
Dołączona grafikaPowerShell Script Generator Add In for Microsoft Office Visio 2007
Dołączona grafikawatch-folder (Monitorowanie zmian w folderze, PS 2.0 CTP3)
Dołączona grafikaSkróty klaiwaturowe w PowerShell
Dołączona grafikaOpen PowerShell in the current Explorer window (Vista)
Dołączona grafikaSearching PoshCode repository from your Desktop in Windows 7
Dołączona grafikaKsiążki:
Dołączona grafikaWindows PowerShell. Podstawy (Holger Schwichtenberg, 2009-03-01, PL)
Dołączona grafikaWindows PowerShell 2.0 Administrator's Pocket Consultant (William R. Stanek, 2009-05-27, ENG)
Dołączona grafikaEffective 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

Dołączona grafika


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

Dołączona grafika


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.

powerhelp.PNG

******************************************************************


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


wizardwmi.jpg

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
booots.PNG commandboots.PNG kulinka.JPG


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

ISE.PNG

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


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 Videos
23.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 ISEwebhelp.PNG


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

boots.PNG

******************************************************************


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


monitise.jpg

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

menuise.PNG

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.
outsort.PNG wynikout.jpg


******************************************************************


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
}

Dołączona grafika





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych