microsoft academic program von wsh zu msh dr. tobias weltner student technology conference 2005
TRANSCRIPT
![Page 1: Microsoft Academic Program Von WSH zu MSH Dr. Tobias Weltner Student Technology Conference 2005](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/1.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/2.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/3.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/4.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/5.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/6.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/7.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/8.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/9.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/10.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/11.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/12.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/13.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/14.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/15.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/16.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/17.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/18.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/19.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/20.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/21.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/22.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/23.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/24.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/25.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/26.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/27.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/28.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/29.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/30.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/31.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/32.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/33.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/34.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/35.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/36.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022051614/55204d6249795902118b7332/html5/thumbnails/37.jpg)
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