fa41ed045600deed568487b9f4ce1e58.ppt
- Количество слайдов: 66
Programowanie Aplikacji Lokalnych. NET WMI
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 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 ¨ Name, n Path Method ¨ Delete n Static Methot ¨ Create
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
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( "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: ¨ cscript //h: cscript
. 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
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 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-. . . 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 "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* Get-Child. Item ? Get-Command -Name Get-Child. Item -Syntax
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 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: 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 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:
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: | 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 – 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 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 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: 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 – 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. 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 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. 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 = $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. Environment]: : Commandline [System. Math]: : Sqrt(9)
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. 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. 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 | 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 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, 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 = @{"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 $host $PID $PSVersion. Table $_
PSh – środowisko cmd. exe listowanie: Get-Child. Item env: $env: System. Root
PSh - warunek Clear-Host $test = “abc” if($test –eq “abc”) { “if active” } else { “else active” }
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("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) { "`$i = $i" $i ++ } do { "`$i = $i" $i ++ } while($i –le 6)
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 "e: " foreach($file in Get-Child. Item) { if ($file. Name –like "*. exe"){ $file. Name } }
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 & { 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: ” } 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 { $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 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 ($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 = “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 = 100 } $v = 5 Test. Ref ([ref] $v) $v
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 { ($_. 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 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 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*, 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 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
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/