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

Apr 05, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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