Скачать презентацию Programowanie Aplikacji Lokalnych NET WMI Co to Скачать презентацию Programowanie Aplikacji Lokalnych NET WMI Co to

fa41ed045600deed568487b9f4ce1e58.ppt

  • Количество слайдов: 66

Programowanie Aplikacji Lokalnych. NET WMI Programowanie Aplikacji Lokalnych. NET WMI

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

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

Hierarchia: n Namespace ¨ RootCim. V 2 n Class ¨ Win 32_Share n Property Hierarchia: n Namespace ¨ RootCim. V 2 n Class ¨ Win 32_Share n Property ¨ Name, n Path Method ¨ Delete n Static Methot ¨ Create

Narzędzia n n n WMI Explorer WBEMTest Starsze: WMITools. exe ¨ CIM Studio, Object Narzędzia n n n WMI Explorer WBEMTest Starsze: WMITools. exe ¨ CIM Studio, Object browser, Event viewer, Event registration n VS WMIC Języki skryptowe ¨ Js/VB ¨ Powershell ¨ Scriptomatic 2. exe

Windows Management Instrumentation Windows Management Instrumentation

WMI przykład skryptu w JS var Service. Set = Get. Object( WMI przykład skryptu w JS var Service. Set = Get. Object( "winmgmts: {impersonation. Level=impersonate}"). Instances. Of("Win 32_Service"); for (e = new Enumerator(Service. Set); !e. at. End(); e. move. Next()) { WScript. Echo( e. item(). Description ); }

WMI przykład skryptu w VB Set Service. Set = Get. Object( WMI przykład skryptu w VB Set Service. Set = Get. Object( "winmgmts: {impersonation. Level=impersonate}"). Instances. Of("Win 32_Service") for each Service in Service. Set WScript. Echo Service. Description Next

WMI tryb pracy n tryb okienkowy: ¨ wscript n //h: wscript tryb commandline-owy: ¨ WMI tryb pracy n tryb okienkowy: ¨ wscript n //h: wscript tryb commandline-owy: ¨ cscript //h: cscript

. NET vs WMI n n n n Namespace: System. Management. Instrumentation Instrumented. Attribute . NET vs WMI n n n n Namespace: System. Management. Instrumentation Instrumented. Attribute Instrumentation. Class. Attribute Instance Base. Event Default. Management. Project. Installer, Management. Installer

Power Shell Power Shell

włączony jako część releasu XP SP 3, Server 2003 Sp 2, Vista SP 1 włączony jako część releasu XP SP 3, Server 2003 Sp 2, Vista SP 1 Windows 2008 R 2 Server, W 7 MSSQL 2008 Power. Shell v. 1 -> November 2006 Power. Shell v. 5 -> December 2015

Power. Shell ISE Power Shell n n n interaktywne środowisko Power. Shell, Power. Shell Power. Shell ISE Power Shell n n n interaktywne środowisko Power. Shell, Power. Shell ISE 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

PSh - Podstawowe koncepcje cmdlet: Get-, Set-, Out-, Start-, Stop-, Restart-, Add-. . . PSh - Podstawowe koncepcje cmdlet: Get-, Set-, Out-, Start-, Stop-, Restart-, Add-. . . Help, Command, Service, Computer, Child. Items. . . get-service –name *sched* get-service *sched* | format-table get-service *sched* | format-list Name Display. Name Status Dependent. Services. Depended. On Can. Pause. And. Continue Can. Shutdown Can. Stop Service. Type : : : : : Schedule Task Scheduler Running {} {Rpc. Ss} True Win 32 Share. Process, Interactive. Process

PSh - dokumentacja get-command –verb PSh - dokumentacja get-command –verb "get" get-command –noun "service„ help execution Get-help about_Execution_Policies

PSh - dokumentacja get-help get-help get-service –detailed get-service –parameter *excl* get-service –examples about_assignment_operators about* PSh - dokumentacja get-help get-help get-service –detailed get-service –parameter *excl* get-service –examples about_assignment_operators about* Get-Child. Item ? Get-Command -Name Get-Child. Item -Syntax

PSh - dokumentacja get-service *sched* | getmember Type. Name: System. Service. Process. Service. Controller PSh - dokumentacja get-service *sched* | getmember Type. Name: System. Service. Process. Service. Controller Name ---Name add_Disposed Close Continue Create. Obj. Ref. . . Member. Type -----Alias. Property Method Definition -----Name = Service. Name System. Void add_Disposed(Event. Handle. . . System. Void Close() System. Void Continue() System. Runtime. Remoting. Obj. Ref Creat. . .

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

PSh – Modyfikowanie aliasów Dodawanie: set-alias gh get-help set-alias np c: windowsnotepad. exe Usuwanie: PSh – Modyfikowanie aliasów Dodawanie: set-alias gh get-help set-alias np c: windowsnotepad. 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-Alias dir

PSh - formatowanie format-list [property pattern] format-table [property pattern] [-Group. By attribute] format-custom format-wide PSh - formatowanie format-list [property pattern] format-table [property pattern] [-Group. By attribute] format-custom format-wide get-service *sched* | format-table -property *name* Name ---Schedule Display. Name -----Task Scheduler Machine. Name -----. Service. Name -----Schedule

PSh – odwołania do obiektów własności i funkcje: <obiekt>. property <obiekt>. function() (get-service sched*). 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 win 32_bios -computername server 01

PSh – przekierowywanie polecenie > plik | more Out-File. Path my_file Out-Null Out-Printer PSh – przekierowywanie polecenie > plik | more Out-File. Path my_file Out-Null Out-Printer

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

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

PSh – profil test istnienia profilu: test-path $profile tworzenie profilu użytkownika: new-item -path $profile PSh – profil test istnienia profilu: test-path $profile tworzenie profilu użytkownika: new-item -path $profile -itemtype file -force userMy DocumentsWindows. Power. ShellMicrosoft. Power. Shell_profile. ps 1 edycja: notepad $profile alias do edycji: function pro { notepad $profile }

PSh – profile n profil dla wszystkich użytkowników i shell-i: %windir%system 32Windows. Power. Shellv PSh – profile n profil dla wszystkich użytkowników i shell-i: %windir%system 32Windows. Power. Shellv 1. 0profile. ps 1 n profil dla wszystkich użytkowników power. Shella: %windir%system 32Windows. Power. Shellv 1. 0 Microsoft. Power. Shell_profile. ps 1 n profil dla wszystkich shell-i bieżącego użytkownika %User. Profile%My DocumentsWindows. Power. Shellprofile. ps 1 n profil dla MS Power Shell i bieżącego użytkownika %User. Profile%\My DocumentsWindows. Power. Shell Microsoft. Power. Shell_profile. ps 1

PSh – drives n get-psdrive Name Provider Root -------A File. System A:  Alias PSh – drives n get-psdrive Name Provider Root -------A File. System A: Alias C File. System C: cert Certificate D File. System D: E File. System E: Environment F File. System F: Function G File. System G: HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE S File. System S: Variable

PSh – drives n n n dir c: Get-Child. Item d: Get-Child. Item function: PSh – drives n n n dir c: Get-Child. Item d: Get-Child. Item function: dir variable: New-PSDrive -Name Office –PSProvider File. System -Root "C: Program FilesMicrosoft OfficeOFFICE 11”

PSh – operacje na elementach n n n Get-Child. Item -Path C: Windows*. dll PSh – operacje na elementach n n n Get-Child. Item -Path C: Windows*. dll – Recurse -Exclude [a-y]*. dll New-Item -Path c: tempNew. Directory -Item. Type Directory Remove-Item C: New. Directory Rename-Item –Path C: tempNew. Directory file 1. txt file. One. txt Move-Item -Path C: tempNew. Directory -Destination C: -Pass. Thru

PSh vs WMI n Lista klas WMI: Get-Wmi. Object -List -Computer. Name 192. 168. PSh vs WMI n Lista klas WMI: Get-Wmi. Object -List -Computer. Name 192. 168. 1. 29 Get-Wmi. Object -Class Win 32_Operating. System -Namespace root/cimv 2 System. Directory Organization Build. Number Registered. User Serial. Number Version : : : C: WINDOWSsystem 32 PG 2600 KM 55274 -015 -0779426 -22987 5. 1. 2600

Wszystkie commandlety WMI n Get-Wmi. Object Invoke-Wmi. Method Remove-Wmi. Object Register-Wmi. Event Set-Wmi. Instanc Wszystkie commandlety WMI n Get-Wmi. Object Invoke-Wmi. Method Remove-Wmi. Object Register-Wmi. Event Set-Wmi. Instanc n Wmi to obiekty COM zawiniete we wrapery n n . Net System. Management. Object ¨ System. Management. Class ¨ System. Management. Objectsearcher ¨

PSh vs. NET n n n New-Object –Type. Name System. Diagnostics. Event. Log –Argument. PSh vs. NET n n n New-Object –Type. Name System. Diagnostics. Event. Log –Argument. List Application $App. Log = New-Object –Type. Name System. Diagnostics. Event. Log –Argument. List Application $App. Log. Clear()

PSh vs. COM n $Wsh. Shell = New-Object –Com. Object WScript. Shell $lnk = PSh vs. COM n $Wsh. Shell = New-Object –Com. Object WScript. Shell $lnk = $Wsh. Shell. Create. Shortcut ("$HomeDesktopPSHome. lnk") $lnk. Target. Path = $PSHome $lnk. Save() n $ie = New-Object -Com. Object Internet. Explorer. Application $ie. Visible = $true $ie. Navigate("http: //www. microsoft. com /technet/scriptcenter/default. mspx") $ie. Document. Body. Inner. Text | more $ie. Quit()

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

PSh - filtrowanie Filter. Script: - 1, 2, 3, 4 | Where-Object -Filter. Script PSh - filtrowanie Filter. Script: - 1, 2, 3, 4 | Where-Object -Filter. Script {$_ -lt 3} 1 2 operatory: -eq, -ne, -lt, -le, -gt, -ge, -like, -notlike, -contains, -notcontains Get-Wmi. Object -Class Win 32_System. Driver | Where-Object -Filter. Script {$_. State -eq "Running"}

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

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

PSh – zmienne n n Operacje wykonywane na wybranych obiektach: Get-Command -Noun Variable | PSh – zmienne n n Operacje wykonywane na wybranych obiektach: Get-Command -Noun Variable | Format-Table Property Name, Definition -Auto. Size -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 -Error. Action Silently. Continue

PSh – napisy n n n ‘ i “ można zagnieżdzać ”to ’tekst’” Działa PSh – napisy n n n ‘ 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 teksty @”linia Linia”@ Interpolacja (wymaga “) “tekst $(1+2)” Formatowanie jak w. Net “tekst {0} {1: 0. 00}” –f $t, 1/3

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

PSh – hashe n Hashe można tworzyc przez przypisywanie elemetntów $hash = @{ PSh – hashe n Hashe można tworzyc przez przypisywanie elemetntów $hash = @{"key 1"=1; "key 2"="value"} $hash[“key 3”] = 114 n Składnia “obiektowa” $k = "key 4" | $hash. $k | $hash. $($k) $hash. $("key"+"3") n $hash. "key 3" Inne $hash. Remove("key 3") $hash. Contains("key 3")|$hash -Contains("key 3") $hash. Contains. Value(114)

PSh – wbudowane zmienne n n n n n $true $false $null $pwd $Home PSh – wbudowane zmienne n n n n n $true $false $null $pwd $Home $host $PID $PSVersion. Table $_

PSh – środowisko cmd. exe listowanie: Get-Child. Item env: $env: System. Root PSh – środowisko cmd. exe listowanie: Get-Child. Item env: $env: System. Root

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

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

PSh - switch Switch można wykonać dla kolekcji switch( 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" } } n n n porownania są domyślnie case insensitive switch –casesensitive("abc") { } switch –wildcards("abc") { }

PSh - while, do until $i = 3 while($i –le 6) {

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

PSh - foreach($item in 11. . 13) { “`$item = $item” } Set-Location PSh - foreach($item in 11. . 13) { “`$item = $item” } Set-Location "e: " foreach($file in Get-Child. Item) { if ($file. Name –like "*. exe"){ $file. Name } }

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

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

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

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

PSh – zasięg zmiennych Zmienne zdefiniowane w bloku slokalne n Zmienne są przesłaniane, ale PSh – zasięg zmiennych Zmienne zdefiniowane w bloku slokalne n 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 –value. Only -scope 0) Write-Host “parent “ (Get-Variable v –value. Only -scope 1) } Write-Host “outside $v” n

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

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

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

PSh – Filtry Function Filter. Exe. Files() { if ($_. Name –like “*. exe”) PSh – Filtry Function Filter. Exe. Files() { if ($_. Name –like “*. exe”) { return $_ } } Get-Child. Item | Filter. Exe. Files Brak składania wyniku, Zwracane są poszczególne obiekty

PSh - filtrowanie cd Get-Wmi. Object -Class Win 32_System. Driver | Where-Object -Filter. Script PSh - filtrowanie cd Get-Wmi. Object -Class Win 32_System. Driver | Where-Object -Filter. Script { ($_. State -eq "Running") -and ($_. Start. Mode -eq "Manual") } | Format-Table -Property Name, Display. Name Operatory: -and, -or, -not, !

PSh - teksty 7: Split The split operator splits a text string based on 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 " "

PSh – przetwarzanie obiektów n Operacje wykonywane na wybranych obiektach: Get-Wmi. Object -Class Win PSh – przetwarzanie obiektów n Operacje wykonywane na wybranych obiektach: Get-Wmi. Object -Class Win 32_Logical. Disk | For. Each-Object -Process {($_. Free. Space)/1024. 0} n Sortowanie: Get-Wmi. Object -Class Win 32_System. Driver | Sort-Object -Property State, Name -Descending | Format-Table -Property Name, State, Started, Display. Name -Auto. Size Wrap

PSh – przykłady listowanie: Get-Process -Id 99 -Name explore –Name ex* -Name exp*, power*, PSh – przykłady listowanie: Get-Process -Id 99 -Name explore –Name ex* -Name exp*, power*, Not. AProcess zamykanie procesów o określonych nazwach: Stop-Process -Name t*, e* -Confirm zamykanie nieodpowiadajacych procesów: Get-Process | Where-Object -Filter. Script {$_. Responding -eq $false} | Stop-Process zamykanie procesów z innej sesji: Get-Process -Name Bad. App | Where-Object -Filter. Script {$_. Session. Id -neq 0} | Stop-Process zamykanie innych PSh: Get-Process -Name powershell | Where-Object -Filter. Script {$_. Id -ne $PID} | Stop-Process –Pass. Thru

PSh – przykłady Powolne scrollowanie: function Easy. View { process { $_; Start-Sleep -seconds PSh – przykłady Powolne scrollowanie: function Easy. View { process { $_; Start-Sleep -seconds 0. 6} } Get-Child. Item | Easy. View Listowanie urezadzen usb (via WMI) gwmi Win 32_USBController. Device -computername localhost |fl Antecedent, Dependen

Hostowanie Power Shell-a Hostowanie Power Shell-a

PSh – linki https: //msdn. microsoft. com/en-us/powershell/mt 173057. aspx https: //technet. microsoft. com/en-us/scriptcenter/dd 742419. PSh – linki https: //msdn. microsoft. com/en-us/powershell/mt 173057. aspx https: //technet. microsoft. com/en-us/scriptcenter/dd 742419. aspx http: //technet. microsoft. com/en-us/scriptcenter/ee 861518. aspx https: //www. powershellgallery. com/ http: //powershell. com/cs/ BLOGI: http: //blogs. technet. com/b/heyscriptingguy/ https: //blogs. msdn. microsoft. com/powershell/ NARZEDZIA: http: //social. technet. microsoft. com/wiki/contents/articles/2969. windowspowershell-ise-add-on-tools. aspx http: //www. powergui. org/index. jspa http: //www. idera. com/Free-Tools/Power. Shell-Plus/