Programowanie Aplikacji Lokalnych .NET

Slides:



Advertisements
Podobne prezentacje
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Advertisements

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
PROGRAMOWANIE STRUKTURALNE
ADAM Active Directory w trybie aplikacyjnym
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
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.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Wykład 8 Wojciech Pieprzyca
Wykład 2 struktura programu elementy języka typy zmienne
Języki programowania obiektowego
Odwzorowania relacyjno-obiektowe Hibernate zapytania.
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
Remigiusz Górecki Krzysztof Boryczko
Podstawy C# Grupa .NET PO.
MySQL – ODBC - ACCESS.
Bezpieczna platforma SharePoint
WSPARCIE DLA BIZNESU / STR. 2 Mikołaj Gomółka UpGreat Systemy Komputerowe Sp. z o.o Poznań, ul Ostrobramska 22 Tel Faks: 0-61.
Node.js – Serverside Javascript
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
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.
INTERNETOWE USŁUGI INFORMACYJNE
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# 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
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 5.
Podstawy programowania (4)
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Programowanie Aplikacji Lokalnych.NET WMI. Co to jest WMI: Komponenty Windows które zapewniają ujednolicony interfejs do zarządzania danymi MSowa implementacja.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
W pełni obiektowyInterpretowany i kompilowany Kompilowany do JVM Bytecode Umożliwia korzystanie z bibliotek Java Skonstruowany z myślą o wysokiej produktywności.
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->
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
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje i usługi internetowe
Dane, zmienne, instrukcje
Haskell Składnia funkcji.
Zapis prezentacji:

Programowanie Aplikacji Lokalnych .NET WMI

Co to jest WMI: Komponenty Windows które zapewniają ujednolicony interfejs do zarządzania danymi MS-owa 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 Class Property Method Static Methot Event Root\CimV2 Class Win32_Share Property Name, Path Method Delete Static Methot Create Event

Narzędzia WMI Explorer WBEMTest Starsze: WMITools.exe VS WMIC CIM Studio, Object browser, Event viewer, Event registration VS WMIC Języki skryptowe Js/VB Powershell 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: tryb commandline-owy: wscript //h:wscript tryb commandline-owy: cscript //h:cscript

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

Power Shell

włączony jako część releasu XP SP3, Server 2003 Sp2, Vista SP1 Windows 2008R2 Server, W7 MSSQL 2008 PowerShell v. 1 -> November 2006 PowerShell v. 5 -> December 2015

Power Shell interaktywne środowisko PowerShell, PowerShell 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, 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„ help execution Get-help about_Execution_Policies

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-Alias dir

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: <obiekt>.property <obiekt>.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: zabezpieczenia: 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 variable: 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 192.168.1.29 Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 SystemDirectory : C:\WINDOWS\system32 Organization : PG BuildNumber : 2600 RegisteredUser : KM SerialNumber : 55274-015-0779426-22987 Version : 5.1.2600

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("http://www.microsoft.com /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 42 42 –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 teksty @”linia Linia Linia”@ Interpolacja (wymaga “) “tekst $tekst $(1+2)” Formatowanie jak w .Net “tekst {0} {1:0.00}” –f $t, 1/3

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

PSh – hashe Składnia “obiektowa” Inne Hashe można tworzyc przez przypisywanie elemetntów $hash = @{"key1"=1;"key2"="value"} $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) $hash.“key3” = 114

PSh – wbudowane zmienne $true $false $null $pwd $Home $host $PID $PSVersionTable $_ $hash.“key3” = 114

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 while($i –le 6) { "`$i = $i" $i ++ } do } while($i –le 6)

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

PSh - foreach foreach($item in 11..13) { “`$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”) { Brak składania wyniku, Zwracane są poszcze- gólne obiekty Function FilterExeFiles() { if ($_.Name –like “*.exe”) { return $_ } Get-ChildItem | FilterExeFiles

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: zamykanie procesów o określonych nazwach: 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 https://msdn.microsoft.com/en-us/powershell/mt173057.aspx https://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx http://technet.microsoft.com/en-us/scriptcenter/ee861518.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.windows-powershell-ise-add-on-tools.aspx http://www.powergui.org/index.jspa http://www.idera.com/Free-Tools/PowerShell-Plus/