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

Slides:



Advertisements
Podobne prezentacje
Równoległe kwerendy danych
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Hibernate zapytania.
Skrypty, procedury przechowywane i wyzwalane
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Wprowadzenie do języka skryptowego PHP – cz. 2
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
SQL Server Native XML Web Services
System operacyjny MS-DOS
PROGRAMOWANIE STRUKTURALNE
Visual Studio Codename „Orcas”, LINQ
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
Tworzenie ASP.NET Web Form
BIRT.
Programowanie w środowiskach zintegrowanych wykład 1 PSZ Programowanie w Środowiskach Zintegrowanych > Systemy i środowiska zintegrowane > Środowisko zintegrowane.
Kurs Pascala – spis treści
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
ZSBD PL/SQL CZĘŚĆ 3 Wykład 5 Prowadzący: dr Paweł Drozda.
IIS 6 i PHP na serwerze Windows 2003 EE
Wykład 8 Wojciech Pieprzyca
Wykład 2 struktura programu elementy języka typy zmienne
Język SQL (Structured Query Language) DDL (Data Definition Language)
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
Przegląd zagadnień Struktura sieci systemu Windows 2003
Budowa, przeglądanie i modyfikacja
Licencjonowanie Lync 2013 Poziom 200.
Drukarki w Windows 7/Windows Server 2008 R2
Remigiusz Górecki Krzysztof Boryczko
Podstawy C# Grupa .NET PO.
Bezpieczna platforma SharePoint
CUDA & CUDA.NET – czyli istne CUDA Piotr Ablewski
Node.js – Serverside Javascript
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Zarządzanie środowiskiem pracy użytkownika za pomocą Zasad grupy
PowerShell dla każdego
Wirtualna baza SQL zgodna z SQL Server SQL as a Service
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
PowerShell Jak pracować w nim efektywnie(j)?. O sobie słów kilka… All i One Przygoda z PowerShell Technologie: AD DS, WMI.
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Q-Administratorze ułatw sobie życie.
Programowanie Windows na przykładzie C# część 1
SQL - Structured Query Language
Programowanie obiektowe – zastosowanie języka Java SE
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
C# Cz.7 Refleksja, Atrybuty
C# Platforma .NET CZ.3 Kuba Ostrowski.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 3.
Podstawy informatyki 2013/2014
Automatyzacja zadań administracyjnych za pomocą Windows PowerShell
PL/SQL – dalsza wędrówka
Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski.
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 5.
Podstawy programowania (4)
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Tworzenie dokumentacji w systemie Doxygen Paweł Strużyński 25 maja 2011.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Lua - wprowadzenie ● lua.org – źródła, dokumentacja, podręcznik itp ● Interpreter - Lua.org->Downloads->Binaries->get a binary-> Windows->Wersja >Executables->
Programowanie Aplikacji Lokalnych .NET
Opracowanie: Katarzyna Gagan, Anna Krawczuk
PHP (wstęp) Personal Home Page Tools (PHP Tools)
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Realizacja aplikacji internetowych
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
Visual Basic w programie Microsoft Excel
Managed Service Identity dla zasobów w Microsoft Azure
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje i usługi internetowe
Dane, zmienne, instrukcje
Zapis prezentacji:

Programowanie Aplikacji Lokalnych.NET WMI

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

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

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

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

Windows Management Instrumentation

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

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

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

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

Power Shell

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

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

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

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

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

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

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

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

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

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

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

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

PSh – polecenia Dostępne moduły Get-PSSnapin Get-PSSnapin –Registered 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 user\My Documents\WindowsPowerShell\Microsoft. PowerShell_profile.ps1 edycja: notepad $profile alias do edycji: function pro { notepad $profile }

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

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

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”

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

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 :

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

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

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(" /technet/scriptcenter/default.mspx") $ie.Document.Body.InnerText | more $ie.Quit()

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

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

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

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”

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

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

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

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)

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

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

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” } } Uwaga: 12 zostanie znalezione 2x, 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” } } porownania są domyślnie case insensitive switch –casesensitive(“abc”) { } switch –wildcards(“abc”) { }

PSh - while, do 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” } Dostępne są również: break, continue

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

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

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)

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

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”

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”

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??”

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”

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

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

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, !

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.

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

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

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

Hostowanie Power Shell-a

PSh – linki