microsoft academic program von wsh zu msh dr. tobias weltner student technology conference 2005

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

Upload: belakane-heinzerling

Post on 05-Apr-2015

105 views

Category:

Documents


0 download

TRANSCRIPT

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

Microsoft Academic Program

Von WSH zu MSH Dr. Tobias Weltner

Student Technology Conference 2005

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

Microsoft Academic

Program

Student Technology Conference 2005

Von WSH zu MSH

• Dr. Tobias Weltner• MVP Windows Server / Skriptautomation• www.scriptinternals.de• [email protected]

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

Microsoft Academic

Program

Student Technology Conference 2005Automation

• 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

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

Microsoft Academic

Program

Student Technology Conference 2005Automation

• 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

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

Microsoft Academic

Program

Student Technology Conference 2005Windows Script Host

• Strukturierte Sprache (VBScript, JScript)

• Zugriff auf COM-Komponenten• Ansätze von Objektorientiertheit

• Programmiererfahrung nötig• Kein Rahmenwerk (Includes)• Keine .NET-Unterstützung

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

Microsoft Academic

Program

Student Technology Conference 2005Microsoft 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

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

Microsoft Academic

Program

Student Technology Conference 2005Von 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"

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

Microsoft Academic

Program

Student Technology Conference 2005Von 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

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

Microsoft Academic

Program

Student Technology Conference 2005Von 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:

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

Microsoft Academic

Program

Student Technology Conference 2005Zwischenbilanz

• Variablen– $a = ...

• Objekt-Piping– dir | where... | grep-string...

• reichhaltiger Befehlsschatz• einheitliche Namensräume

– Dateisystem, Registry, Umgebungsvars...

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

Microsoft Academic

Program

Student Technology Conference 2005Vom 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"

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

Microsoft Academic

Program

Student Technology Conference 2005Vom 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")

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

Microsoft Academic

Program

Student Technology Conference 2005Vom 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

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

Microsoft Academic

Program

Student Technology Conference 2005Vom WSH zur MSH

$a = get-wmiobject win32_process

$a = get-wmiobject win32_process -filter "name like '%iex%'"

$a | out-grid

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

Microsoft Academic

Program

Student Technology Conference 2005Vom 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\System.Web.Services.dll

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

Microsoft Academic

Program

Student Technology Conference 2005Zwischenbilanz

• COM-Objekte– werden von MSH voll unterstützt

• .NET– Zugriff auf beliebige Datentypen– Zugriff auf .NET-Klassen

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

Microsoft Academic

Program

Student Technology Conference 2005Commandlets - 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

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

Microsoft Academic

Program

Student Technology Conference 2005Commandlets

• 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

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

Microsoft Academic

Program

Student Technology Conference 2005Commandlets

• CmdletDeclarationAttribute– Verb, Substantiv

using System.Management.Automation;

[CmdletDeclarationAttribute("Invoke", "Test")]

class InvokeTest : Cmdlet

{

implementation

}

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

Microsoft Academic

Program

Student Technology Conference 2005Commandlets

• Klasse definiert 3 virtuelle Methoden

class InvokeTest : Cmdlet

{

public override void StartProcessing();

public override void ProcessRecord();

public override void EndProcessing();

}

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

Microsoft Academic

Program

Student Technology Conference 2005Commandlets

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

}

}

}

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

Microsoft Academic

Program

Student Technology Conference 2005Commandlets

• Verb-Noun.cmdlet und zugehörige DLL• in Ordner speichern, der in

%MSHCOMMANDPATH% liegt• MSH erkennt Commandlets beim Start

Microsoft.Samples.Management.Automation.InvokeHelloWorld

HelloWorld.dll

HelloWorld, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

HelloWorld.dll-Help.xml

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

Microsoft Academic

Program

Student Technology Conference 2005Mit 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

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

Microsoft Academic

Program

Student Technology Conference 2005Mit 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}

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

Microsoft Academic

Program

Student Technology Conference 2005Mit Commandlets arbeiten

$f = [System.IO.File].OpenText("c:\prozesse.txt")

for (;;)

{ $line = $f.ReadLine()

if ($line -eq $())

{ break

}

write-host $line

}

$f.Close()

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

Microsoft Academic

Program

Student Technology Conference 2005Mit 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

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

Microsoft Academic

Program

Student Technology Conference 2005Mit 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

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

Microsoft Academic

Program

Student Technology Conference 2005Mit 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

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

Microsoft Academic

Program

Student Technology Conference 2005Mit 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

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

Microsoft Academic

Program

Student Technology Conference 2005Zwischenbilanz

• Neue Commandlets als .NET-Klassen• COM-Komponenten• Ausführbare Programme

(.EXE, .COM) • Skripts (.BAT, .VBS, .JS, .WS, etc.)

• integrierte Funktionen• MSH-Skripts (.MSH)

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

Microsoft Academic

Program

Student Technology Conference 2005MSH-Skripts und Funktionen

function addnums

{

$local:result = 0

foreach ( $local:a in $args )

{

$result += $a

}

$result

}

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

Microsoft Academic

Program

Student Technology Conference 2005MSH-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();

}

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

Microsoft Academic

Program

Student Technology Conference 2005MSH - 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

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

Microsoft Academic

Program

Student Technology Conference 2005MSH - Fazit

• Wann?– geplant für Longhorn– wird es auch für ältere Windows-

Plattformen geben– Beta-Test läuft - am besten selbst

mitmachen!

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

Microsoft Academic

Program

Student Technology Conference 2005MSH Testversion ausprobieren

• Betaplace besuchen– www.betaplace.com

• Beta-ID: mshPDCmshPDC

• benötigt .NET Framework 2.0• %MSHCOMMANDPATH% erweitern

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

Microsoft Academic

Program

Student Technology Conference 2005

Questions and Answers ??

??

?

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

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