Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Microsoft Academic Program Von WSH zu MSH Dr. Tobias Weltner Student Technology Conference 2005.

Ähnliche Präsentationen


Präsentation zum Thema: "Microsoft Academic Program Von WSH zu MSH Dr. Tobias Weltner Student Technology Conference 2005."—  Präsentation transkript:

1 Microsoft Academic Program Von WSH zu MSH Dr. Tobias Weltner Student Technology Conference 2005

2 Microsoft Academic Program Student Technology Conference 2005 Von WSH zu MSH Dr. Tobias Weltner MVP Windows Server / Skriptautomation www.scriptinternals.de tobias.weltner@email.de

3 Microsoft Academic Program Student Technology Conference 2005 Automation Heute vorhandene Automationslösungen –Shell Skripts (Batch) –Windows Script Host (WSH) Sind wir damit glücklich? –Shell Skripts zu limitiert –WSH-Skripts zu kompliziert –.NET-Integration fehlt beiden

4 Microsoft Academic Program Student Technology Conference 2005 Automation Shell Skripts –basieren auf vorhandenen Programmen –lassen sich leicht erweitern –einfach (kurze Befehle, schnelle (Miß)Erfolge) –Text-Piping –uneinheitliche Befehle/Syntax –keine Unterstützung für COM oder.NET

5 Microsoft Academic Program Student Technology Conference 2005 Windows Script Host Strukturierte Sprache (VBScript, JScript) Zugriff auf COM-Komponenten Ansätze von Objektorientiertheit Programmiererfahrung nötig Kein Rahmenwerk (Includes) Keine.NET-Unterstützung

6 Microsoft Academic Program Student Technology Conference 2005 Microsoft Shell (MSH) Erweiterbare Skriptumgebung Einfache Befehle wie bei Shell Skripts –erweiterbar durch.NET-Klassen COM-Unterstützung wie bei WSH Strukurierte Sprache –KSH, BASH, PERL, RUBY, VMS DCL, AS400 CL Objekt-Piping

7 Microsoft Academic Program Student Technology Conference 2005 Von Shell Skripts zu MSH NETSTAT –E PING 10.10.10.10 DIR C: $resultat = NETSTAT –E foreach ( $line in $resultat ) { if ( $line -ilike "*unicast*" ) { $line } } $ip = "10.10.10.10" ping -n 1 -w 100 $ip | where {grep-string -text $_ - pattern "antwort"} | echo "Online"

8 Microsoft Academic Program Student Technology Conference 2005 Von Shell Skripts zu MSH Dir *.vbs Dir *.vbs | foreach {type $_} Dir *.vbs | grep-string -pattern "isNumeric" Dir *.vbs | where {grep-string $_ -pattern "isNumeric"} Dir *.vbs | where {grep-string $_ -pattern "isNumeric"} | foreach {type $_ } Cd HKCU:\Software Dir Md MSHTest Del MSHTest

9 Microsoft Academic Program Student Technology Conference 2005 Von Shell Skripts zu MSH Dir HKLM:\SOFTWARE\*\Cryptography Dir HKCU:\ Dir -recurse Dir HKCU:\ -recurse | where {$_.childname -ilike "*SYS*"} Dir $env:path.split(";") *.exe |group name |where {$_.count -gt 1} Dir Env: Dir Variable: Dir Function:

10 Microsoft Academic Program Student Technology Conference 2005 Zwischenbilanz Variablen –$a =... Objekt-Piping –dir | where... | grep-string... reichhaltiger Befehlsschatz einheitliche Namensräume –Dateisystem, Registry, Umgebungsvars...

11 Microsoft Academic Program Student Technology Conference 2005 Vom WSH zur MSH Größte Stärke des WSH: COM-Integration VBScript kann fremde DLLs verwenden Set objnet = CreateObject("WScript.Network") objnet.MapNetworkDrive "G:", "\\127.0.0.1\c$" Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = true objIE.Navigate "www.scriptinternals.de"

12 Microsoft Academic Program Student Technology Conference 2005 Vom WSH zur MSH $objnet = new-object -activex "WScript.Network" $objnet.MapNetworkdrive("X:", "\\127.0.0.1\c$") explorer x: $objnet.RemoveNetworkDrive("X:") $objie = new-object -activex "InternetExplorer.Application" $objie.visible = 1 $objie.navigate("www.scriptinternals.de")

13 Microsoft Academic Program Student Technology Conference 2005 Vom WSH zur MSH WMI-Integration Set objWMI = GetObject("winmgmts:") Set objAll = objWMI.InstancesOf("Win32_Process") For Each objProcess In objAll WScript.Echo objProcess.GetObjectText_ Next

14 Microsoft Academic Program Student Technology Conference 2005 Vom WSH zur MSH $a = get-wmiobject win32_process $a = get-wmiobject win32_process -filter "name like '%iex%'" $a | out-grid

15 Microsoft Academic Program Student Technology Conference 2005 Vom WSH zum MSH $d= new-object System.DateTime 2004 12 1 $d= new-object System.Web.Services.Discovery.DiscoveryDocument -file C:\WINDOWS\Microsoft.NET\Framework\v2.0.40209\Syst em.Web.Services.dll

16 Microsoft Academic Program Student Technology Conference 2005 Zwischenbilanz COM-Objekte –werden von MSH voll unterstützt.NET –Zugriff auf beliebige Datentypen –Zugriff auf.NET-Klassen

17 Microsoft Academic Program Student Technology Conference 2005 Commandlets - die MSH-Befehle bestehen aus einem Verb-Substantiv –grep-string, new-item, get-help Alias-Namen erleichtern den Umgang –Dir, Cd, Md, Help –Dir Alias:\Cd –set-alias Hilfmir get-help –set-alias edit notepad.exe

18 Microsoft Academic Program Student Technology Conference 2005 Commandlets Commandlets sind.NET-Klassen –DLLs, keine EXE –Provider bieten einheitliche Frameworks Dateisystem, Registry, Active Directory... –Pipelines bestehen aus Commandlets, die strukturierte Objekte austauschen –Extended Type System (ETS) kümmert sich um die Interfaces für Piping

19 Microsoft Academic Program Student Technology Conference 2005 Commandlets CmdletDeclarationAttribute –Verb, Substantiv using System.Management.Automation; [CmdletDeclarationAttribute("Invoke", "Test")] class InvokeTest : Cmdlet { implementation }

20 Microsoft Academic Program Student Technology Conference 2005 Commandlets Klasse definiert 3 virtuelle Methoden class InvokeTest : Cmdlet { … public override void StartProcessing(); public override void ProcessRecord(); public override void EndProcessing(); … }

21 Microsoft Academic Program Student Technology Conference 2005 Commandlets public class InvokeTest : Cmdlet { private string message; [ParsingPromptString("Enter a string to echo: " )] [ParsingParameterMapping(0)] [ParsingMandatoryParameter] public string Message { get { return message; } set { message = value; } } public override void ProcessRecord() { WriteObject( message ); }

22 Microsoft Academic Program Student Technology Conference 2005 Commandlets Verb-Noun.cmdlet und zugehörige DLL in Ordner speichern, der in %MSHCOMMANDPATH% liegt MSH erkennt Commandlets beim Start Microsoft.Samples.Management.Automation.InvokeHelloW orld HelloWorld.dll HelloWorld, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null HelloWorld.dll-Help.xml

23 Microsoft Academic Program Student Technology Conference 2005 Mit Commandlets arbeiten get-command get-command *out* get-command -noun clipboard get-command -verb out get-help out-grid get-help foreach $a = get-item c:\test.txt $a | format-list $a | out-grid $a | format-list * $a | out-html

24 Microsoft Academic Program Student Technology Conference 2005 Mit Commandlets arbeiten $a | get-member $a | get-member -m $a.getHashCode $a.getHashCode() $a.set_CreationTime("10.4.2003") $a.copyto("c:\test.bak") new-item c:\prozesse.txt -type file set-content c:\prozesse.txt -value $(get-process) $i=0; foreach ($line in $(get-content c:\prozesse.txt)) {"{0}: {1}"-f $i, $Line; $i+=1}

25 Microsoft Academic Program Student Technology Conference 2005 Mit Commandlets arbeiten $f = [System.IO.File].OpenText("c:\prozesse.txt") for (;;) {$line = $f.ReadLine() if ($line -eq $()) {break } write-host $line } $f.Close()

26 Microsoft Academic Program Student Technology Conference 2005 Mit Commandlets arbeiten get-process | export-xml c:\prozesse.xml $prozesse = import-xml c:\prozesse.xml grep-string "default" "c:\boot.ini" get-uri http://www.microsoft.com/ | split-string | split-string -pattern ">" | grep-string -pattern "href" | sort line.length | table line

27 Microsoft Academic Program Student Technology Conference 2005 Mit Commandlets arbeiten $getid = { foreach ( $p in $input ) { $p.Id } } get-process | &$getid get-command get-process | format-list * get-process |pick-object ProcessName -expand Modules | out-grid get-process |format-table @{Expression= {$_.ProcessName.ToUpper()}; Label= "Name"; Width= 15 },@{Label = "KB" ;Expression = {($_.WorkingSet + 1023)/1024}; Format = "{0,15} KB" } –auto

28 Microsoft Academic Program Student Technology Conference 2005 Mit Commandlets arbeiten $prozesse = get-process $prozesse | where {$_.hasExited -eq 1} | out-grid get-process | where { $_.processname -ieq "iexplore" } | foreach { $_.Kill() } get-process | where { $_.processname -ilike "*iexplore*" } | sort-object -p cpu | pick-tail 1 | foreach { $_.Kill() } ps | out-chart processname,workingset

29 Microsoft Academic Program Student Technology Conference 2005 Mit Commandlets arbeiten get-service Alerter | get-member -m $service = get-service Alerter $service.Stop get-eventlog -logname system | group-object username get-eventlog -logname system | pick-tail 10 get-eventlog -logname system | pick-head 10 | pick- object -p source get-command -verb get

30 Microsoft Academic Program Student Technology Conference 2005 Zwischenbilanz Neue Commandlets als.NET-Klassen COM-Komponenten Ausführbare Programme (.EXE,.COM) Skripts (.BAT,.VBS,.JS,.WS, etc.) integrierte Funktionen MSH-Skripts (.MSH)

31 Microsoft Academic Program Student Technology Conference 2005 MSH-Skripts und Funktionen function addnums { $local:result = 0 foreach ( $local:a in $args ) { $result += $a } $result }

32 Microsoft Academic Program Student Technology Conference 2005 MSH-Skripts und Funktionen $phrase = $args[0]; $wd = new-object -activex "word.application"; $p = pwd; if ($args.length > 1) { $docs = $args[1]; } else { $docs = "*.doc"; } foreach ($a in $(get-childitem $docs -name)) { $doc = $wd.documents.open("$p\$a"); if ($doc.content.find.execute("$phrase")) { write-host "Wort" $phrase "gefunden in" $a $file = get-item $p\$a Write-host $file.length "Bytes. Zuletzt geändert am" $file.LastWriteTime } $doc.close(); }

33 Microsoft Academic Program Student Technology Conference 2005 MSH - Fazit Einfacher Umstieg von Shell/WSH –COM-Objektmodelle und externe Tools bleiben erhalten Sehr dichte und machtvolle Sprache –anpassbar durch Aliase –erweiterbar durch.NET-Klassen Schnelle Resultate –Objekt-Piping

34 Microsoft Academic Program Student Technology Conference 2005 MSH - Fazit Wann? –geplant für Longhorn –wird es auch für ältere Windows-Plattformen geben –Beta-Test läuft - am besten selbst mitmachen!

35 Microsoft Academic Program Student Technology Conference 2005 MSH Testversion ausprobieren Betaplace besuchen –www.betaplace.com mshPDCBeta-ID: mshPDC benötigt.NET Framework 2.0 %MSHCOMMANDPATH% erweitern

36 Microsoft Academic Program Student Technology Conference 2005 Questions and Answers ? ? ? ? ?

37 Microsoft Academic Program Student Technology Conference 2005 Mehr Informationen http://www.betaplace.com http://msdn.microsoft.com/library/en- us/wmisdk/wmi/wmi_classes.asp http://download.microsoft.com/download/3/ 8/1/38198a72-294d-46c3-93ba- faee5cf85d00/ARC334.ppt http://channel9.msdn.com/ShowPost.aspx ?PostID=25531#25531


Herunterladen ppt "Microsoft Academic Program Von WSH zu MSH Dr. Tobias Weltner Student Technology Conference 2005."

Ähnliche Präsentationen


Google-Anzeigen