Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowanie Aplikacji Lokalnych.NET WMI. Co to jest WMI: Komponenty Windows które zapewniają ujednolicony interfejs do zarządzania danymi MSowa implementacja.

Podobne prezentacje


Prezentacja na temat: "Programowanie Aplikacji Lokalnych.NET WMI. Co to jest WMI: Komponenty Windows które zapewniają ujednolicony interfejs do zarządzania danymi MSowa implementacja."— Zapis prezentacji:

1 Programowanie Aplikacji Lokalnych.NET WMI

2 Co to jest WMI: Komponenty Windows które zapewniają ujednolicony interfejs do zarządzania danymi MSowa implementacja Desktop Management Task Force's Web Based Enterprise Management

3

4 Powody użycia WMI: Działa zdalnie i lokalnie Łatwy ujednolicony interfejs Dostępny z PSH i jezykow skryptowych Monitorowanie stanu systemu i aplikacji Zarządzanie i konfiguracja aplikacji Ujednolicony dostęp do danych i operacji na nich Automatyzacja lokalnych i zdalnych operacji administracyjnych

5 Hierarchia: Namespace  Root\CimV2 Class  Win32_Share Property  Name, Path Method  Delete Static Methot  Create Event

6 Narzędzia WBEMTest WMITools.exe  CIM Studio, Object browser, Event viewer, Event registration SAPIEN Technologies WMI Explorer WMIC WMIExplorer (PSH) WMI Extension for VS Języki skryptowe  Scriptomatic2.exe

7 Windows Management Instrumentation

8 WMI przykład skryptu w JS var ServiceSet = GetObject( "winmgmts:{impersonationLevel=impersonate}"). InstancesOf("Win32_Service"); for (e = new Enumerator(ServiceSet); !e.atEnd(); e.moveNext()) { WScript.Echo( e.item().Description ); }

9 WMI przykład skryptu w VB Set ServiceSet = GetObject( "winmgmts:{impersonationLevel=impersonate}"). InstancesOf("Win32_Service") for each Service in ServiceSet WScript.Echo Service.Description Next

10 WMI tryb pracy tryb okienkowy:  wscript //h:wscript tryb commandline-owy:  cscript //h:cscript

11 .NET vs WMI Namespace: System.Management.Instrumentation Instrumentation InstrumentedAttribute InstrumentationClassAttribute Instance BaseEvent DefaultManagementProjectInstaller, ManagementInstaller

12 Power Shell

13 Windows Management Framework * Windows Remote Management (WinRM) 2.0 * Windows PowerShell 2.0 * Background Intelligent Transfer Service (BITS) 4.0 włączony jako część releasu XP SP3, Server 2003 Sp2, Vista SP1 Windows 2008R2 Server, W7 MSSQL 2008

14 Power Shell interaktywne środowisko możliwość hostowania w aplikacji Rozszerzalny system typów, możliwość korzystania z.NET, COM, WMI możliwość operwania na obiektach i napisach, zunifikowane formatowanie, przekierowywanie wyników definiowanie własnych funkcji, aliasów możliwość utrwalenia środowiska - za pośrednictwem profilu

15 PSh - Podstawowe koncepcje cmdlet: Get-, Set-, Out-, Start-, Stop-, Restart-, Add-... Help, Command, Service, Computer, ChildItems... get-service get-service –name *sched* get-service *sched* get-service *sched* | format-table get-service *sched* | format-list Name : Schedule DisplayName : Task Scheduler Status : Running DependentServices : {} ServicesDependedOn : {RpcSs} CanPauseAndContinue : True CanShutdown : True CanStop : True ServiceType : Win32ShareProcess, InteractiveProcess

16 PSh - dokumentacja get-command –verb "get" get-command –noun "service"

17 PSh - dokumentacja get-help get-help get-service get-help get-service –detailed get-help get-service –parameter *excl* get-help get-service –examples get-help about_assignment_operators get-help about* Get-ChildItem ? Get-Command -Name Get-ChildItem -Syntax

18 PSh - dokumentacja get-service *sched* | get- member TypeName: System.ServiceProcess.ServiceController Name MemberType Definition Name AliasProperty Name = ServiceName add_Disposed Method System.Void add_Disposed(EventHandle... Close Method System.Void Close() Continue Method System.Void Continue() CreateObjRef Method System.Runtime.Remoting.ObjRef Creat......

19 PSh – ALIASY Alias może dotyczyć: polecenia, funkcji, atrybutu, instrukcji Np.: dir, pwd get-help, man, help get-alias get-alias | where-object {$_.definition -eq "set-location"} CommandType Name Definition Alias ac Add-Content Alias asnp Add-PSSnapin Alias clc Clear-Content Alias cli Clear-Item Alias clp Clear-ItemProperty Alias clv Clear-Variable Alias cpi Copy-Item... CommandType Name Definition Alias sl Set-Location Alias cd Set-Location Alias chdir Set-Location

20 PSh – Modyfikowanie aliasów Dodawanie: set-alias gh get-help set-alias np c:\windows\notepad.exe Usuwanie: remove-item alias:ls Alias nie obejmuje parametrów – mozna jednak zdefiniować własną funkcję: function bootini {notepad c:\boot.ini} Sprawdzenie aliasu Get-Aliasdir

21 PSh - formatowanie format-list [property pattern] format-table [property pattern] [-GroupBy attribute] format-custom format-wide get-service *sched* | format-table -property *name* Name DisplayName MachineName ServiceName Schedule Task Scheduler. Schedule

22 PSh – odwołania do obiektów własności i funkcje:.property.function() (get-service sched*).Stop() Zmienne: $zm = (get-service sched*) $zm.Start() $zm.Stop() WMI: get-wmiobject win32_bios -computername server01

23 PSh – przekierowywanie polecenie > plik | more Out-File -FilePath my_file Out-Null Out-Printer

24 PSh – polecenia cmdlety get-command zewnętrzne: c:\test.ps1 dir c:\ | format-table -property name,creationtime notepad.exe zabezpieczenia: polityka uruchamiania: Get-Executionpolicy Set-ExecutionPolicy Unrestricted podpis cyfrowy: get-help about_signing

25 PSh – polecenia Dostępne moduły Get-PSSnapin Get-PSSnapin –Registered Załadowanie modułów Add-PSSnapin Sql*

26 PSh – profil test istnienia profilu: test-path $profile tworzenie profilu użytkownika: new-item -path $profile -itemtype file -force user\My Documents\WindowsPowerShell\Microsoft. PowerShell_profile.ps1 edycja: notepad $profile alias do edycji: function pro { notepad $profile }

27 PSh – profile profil dla wszystkich użytkowników i shell-i: %windir%\system32\WindowsPowerShell\v1.0\profile.ps1 profil dla wszystkich użytkowników powerShella: %windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1 profil dla wszystkich shell-i bieżącego użytkownika %UserProfile%\My Documents\WindowsPowerShell\profile.ps1 profil dla MS Power Shell i bieżącego użytkownika %UserProfile%\\My Documents\WindowsPowerShell\ Microsoft.PowerShell_profile.ps1

28 PSh – drives get-psdrive Name Provider Root A FileSystem A:\ Alias Alias C FileSystem C:\ cert Certificate \ D FileSystem D:\ E FileSystem E:\ Env Environment F FileSystem F:\ Function Function G FileSystem G:\ HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE S FileSystem S:\ Variable Variable

29 PSh – drives dir c: Get-ChildItem d: Get-ChildItem function: dir variables: New-PSDrive -Name Office –PSProvider FileSystem -Root "C:\Program Files\Microsoft Office\OFFICE11”

30 PSh – operacje na elementach Get-ChildItem -Path C:\Windows\*.dll – Recurse -Exclude [a-y]*.dll New-Item -Path c:\temp\New.Directory -ItemType Directory Remove-Item C:\New.Directory Rename-Item –Path C:\temp\New.Directory\ file1.txt fileOne.txt Move-Item -Path C:\temp\New.Directory -Destination C:\ -PassThru

31 PSh vs WMI Lista klas WMI: Get-WmiObject -List Get-WmiObject -List -ComputerName Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 SystemDirectory : C:\WINDOWS\system32 Organization : PG BuildNumber : 2600 RegisteredUser : KM SerialNumber : Version :

32 Wszystkie commandlety WMI Get-WmiObject Invoke-WmiMethod Remove-WmiObject Register-WmiEvent Set-WmiInstanc Wmi to obiekty COM zawiniete we wrapery.Net  System.Management.ManagementObject  System.Management.ManagementClass  System.Management.ManagementObjectsearcher

33 PSh vs.NET New-Object –TypeName System.Diagnostics.EventLog New-Object –TypeName System.Diagnostics. EventLog –ArgumentList Application $AppLog = New-Object –TypeName System.Diagnostics.EventLog –ArgumentList Application $AppLog.Clear()

34 PSh vs.COM $WshShell = New-Object –ComObject WScript.Shell $lnk = $WshShell.CreateShortcut ("$Home\Desktop\PSHome.lnk") $lnk.TargetPath = $PSHome $lnk.Save() $ie = New-Object -ComObject InternetExplorer.Application $ie.Visible = $true $ie.Navigate("http://www.microsoft.com /technet/scriptcenter/default.mspx") $ie.Document.Body.InnerText | more $ie.Quit()

35 PSh vs. static statyczna klasa - System.Environment [System.Environment] | Get-Member [System.Environment] | Get-Member –Static [System.Environment]::Commandline [System.Math]::Sqrt(9)

36 PSh - filtrowanie FilterScript: - 1,2,3,4 | Where-Object -FilterScript {$_ -lt 3} 1 2 operatory: -eq, -ne, -lt, -le, -gt, -ge, -like, -notlike, -contains, -notcontains Get-WmiObject -Class Win32_SystemDriver | Where-Object -FilterScript {$_.State -eq "Running"}

37 PSh – zmienne Deklaracja: $a = “abc” Typy dotnetowe. $a.GetType() Nie maja stałego typu $a = 5 Można wymusić typ przy deklaracji [System.Int32]$i = 5.Net – oznacza pełny zestaw możliwości np:. “to text”.ToUpper().Contains(“TE”) Wypisywanie na konsole. $t Write-Host “t:’ $t

38 PSh – zmienne Operatory -lt, -gt, -eq, -le, -ge, -ne -Like, -NotLike, -Match, -NotMatch “abcde” -Like “a*e” “abcde” -Like “a*[b-d]e” Konwersja (prawy typ jest konwertowany do lewego) “042” –eq –eq “042”

39 PSh – zmienne Operacje wykonywane na wybranych obiektach: Get-Command -Noun Variable | Format-Table - Property Name,Definition -AutoSize -Wrap Clear-Variable Get-Variable New-Variable Remove-Variable Set-Variable Np.: $w = 3 New-Variable –Name “w” –Value 3 Czyszczenie wszystkich zmiennych : Remove-Variable -Name * -Force -ErrorAction SilentlyContinue

40 PSh – napisy ‘ i “ można zagnieżdzać ”to ’tekst’” Działa teź podwójne użycie ’to ’’tekst’’’ Escapowanie znaków przez prawy apostrof ` ’pierwsza linia`ndruga linia’ Długie Linia Interpolacja (wymaga “) “tekst $tekst $(1+2)” Formatowanie jak w.Net “tekst {0} {1:0.00}” –f $t, 1/3

41 PSh – tablice Tablice można tworzyc przez przypisywanie elemetntów $a = 1,2,3,4 $a $a = 1..4 Pusta tablica $a = () Tablice są indeksowane od 0, $a[0] Operatory na tablicach -Contains, -NotContains $a –Contains 3

42 PSh – hashe Hashe można tworzyc przez przypisywanie elemetntów $hash $hash[“key3”] = 114 Składnia “obiektowa” $k = “key4”| $hash.“key3” $hash.$k| $hash.$($k) $hash.$(“key”+”3”) Inne $hash.Remove(“key3”) $hash.Contains(“key3”)|$hash -Contains(“key3”) $hash.ContainsValue(114)

43 PSh – wbudowane zmienne $true $false $null $pwd $Home $host $PID $PSVersionTable $_

44 PSh – środowisko cmd.exe listowanie: Get-ChildItem env: $env:SystemRoot

45 PSh - warunek Clear-Host $test = “abc” if($test –eq “abc”) { “if active” } else { “else active” }

46 PSh - switch Clear-Host $test = “abc” switch($test) { “a” { “result a” } 12 { “result 12” } “12” { “result 12” } “abc” { “result abc” } default { “default” } } Uwaga: 12 zostanie znalezione 2x, aby temu zapobiec należy zastosować { “result 12”; break }

47 PSh - switch Switch można wykonać dla kolekcji switch(”abc”,12,”a”,7) { “a” { “result a” } 12 { “result 12” } “12” { “result 12” } “abc” { “result abc” } default { “default” } } porownania są domyślnie case insensitive switch –casesensitive(“abc”) { } switch –wildcards(“abc”) { }

48 PSh - while, do while, do until $i = 3 while($i –le 6) { “`$i = $i” $i ++ } do { “`$i = $i” $i ++ } while($i –le 6)

49 PSh - for $i=0 for(; $f –le 3; $i++) { “`$i = $i” } for($i=0; $f –le 3; $i++) { “`$i = $i” } Dostępne są również: break, continue

50 PSh - foreach foreach($item in ) { “`$item = $item” } Set-Location “e:\” foreach($file in Get-ChildItem) { if ($file.Name – like “*.exe”){ $file.Name }

51 PSh - bloki Definicja { Clear-Host; “hello from block” } $b = { Clear-Host; “hello from block” } uruchomienie & { Clear-Host; “hello from block” } & $b Odbiór wartości $b = { 1+5 } $w = 3 + & $b

52 PSh - bloki Przekazanie parametrów & { $args[0]+$args[1] } 2 7 & { param($p1,$p2); $p1+$p2 } 2 7 Parametry nazwane & { param($p1,$p2); $p1+$p2 } –p1 2 –p2 7 Weryfikacja czy podano parametr if (!$p1) Domyślne wartości param($p1,$p2=7) Silne typowanie param([int]$p1,[int]$p2=7)

53 PSh – bloki + potoki $filterFiles = { begin { $ret = “result:” } process { if ($_.Name –like “*.exe”) { $ret = $ret + “`t” + $_.Name +”`r`n” } } end { return $ret } } Get-ChildItem | &filterFiles

54 PSh – bloki + potoki + parametry $filterFiles = { param ($mask) begin { $ret = “result:” } process { if ($_.Name –like $mask) { $ret = $ret + “`t” + $_.Name +”`r`n” } } end { return $ret } } Get-ChildItem | &filterFiles “*.exe”

55 PSh – zasięg zmiennych Zmienne zdefiniowane w bloku slokalne Zmienne są przesłaniane, ale można się dostać do przesłoniętych przez Get/Set-Variable z parametrem -scope $v = 10 &{ $v = 5 Write-Host “inside $v” Write-Host “same “ (Get-Variable v –valueOnly -scope 0) Write-Host “parent “ (Get-Variable v –valueOnly -scope 1) } Write-Host “outside $v”

56 PSh – Funkcje Funkcja to blok z nazwi parametrami w nagłówku function TestMask ($name, $mask) { if ($name –like $mask) { Write-Host “$name matches $mask” } TestMask “abc” “a??”

57 PSh – Funkcje + potoki Function FilterFiles ($mask) { begin { $ret = “result:” } process { if ($_.Name –like $mask) { $ret = $ret + “`t” + $_.Name +”`r`n” } } end { return $ret } } Get-ChildItem | FilterFiles “*.exe”

58 PSh – Funkcje + parametry ref Function TestRef([ref] $var) { $var.Value = 100 } $v = 5 TestRef ([ref] $v) $v

59 PSh – Filtry Function FilterExeFiles() { if ($_.Name –like “*.exe”) { return $_ } Get-ChildItem | FilterExeFiles Brak składania wyniku, Zwracane są poszcze- gólne obiekty

60 PSh - filtrowanie cd Get-WmiObject -Class Win32_SystemDriver | Where-Object -FilterScript { ($_.State -eq "Running") -and ($_.StartMode -eq "Manual") } | Format-Table -Property Name,DisplayName Operatory: -and, -or, -not, !

61 PSh - teksty 7: Split The split operator splits a text string based on a character you designate. For example, suppose that you want to break a sentence into an array consisting of each individual word in the sentence. You could do so by using a command like this one: "This is a test" -split " " The result would look like this: This is a test 8: Join Just as split can split a text string into multiple pieces, the join operator can combine multiple blocks of text into one. For example, this line will create a text string consisting of my first name and last name: "Brien","Posey" -join " " The space between the quotation marks at the end of the command tells Windows to insert a space between the two text strings.

62 PSh – przetwarzanie obiektów Operacje wykonywane na wybranych obiektach: Get-WmiObject -Class Win32_LogicalDisk | ForEach-Object -Process {($_.FreeSpace)/1024.0/1024.0} Sortowanie: Get-WmiObject -Class Win32_SystemDriver | Sort-Object -Property State,Name -Descending | Format-Table -Property Name,State,Started,DisplayName -AutoSize - Wrap

63 PSh – przykłady listowanie: Get-Process -Id 99 Get-Process -Name explore Get-Process –Name ex* Get-Process -Name exp*,power*,NotAProcess zamykanie procesów o określonych nazwach: Stop-Process -Name t*,e* -Confirm zamykanie nieodpowiadajacych procesów: Get-Process | Where-Object -FilterScript {$_.Responding -eq $false} | Stop-Process zamykanie procesów z innej sesji: Get-Process -Name BadApp | Where-Object -FilterScript {$_.SessionId -neq 0} | Stop-Process zamykanie innych PSh: Get-Process -Name powershell | Where-Object -FilterScript {$_.Id -ne $PID} | Stop-Process –PassThru

64 PSh – przykłady Powolne scrollowanie: function EasyView { process { $_; Start-Sleep -seconds 0.6} } Get-ChildItem | EasyView Listowanie urezadzen usb (via WMI) gwmi Win32_USBControllerDevice -computername localhost |fl Antecedent,Dependen

65 Hostowanie Power Shell-a

66 PSh – linki


Pobierz ppt "Programowanie Aplikacji Lokalnych.NET WMI. Co to jest WMI: Komponenty Windows które zapewniają ujednolicony interfejs do zarządzania danymi MSowa implementacja."

Podobne prezentacje


Reklamy Google