+ All Categories
Home > Documents > Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Date post: 05-Apr-2015
Category:
Upload: agna-wragge
View: 134 times
Download: 3 times
Share this document with a friend
41
Automatisierung mit Windows PowerShell V1 / V2 Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich
Transcript
Page 1: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Automatisierung mit Windows PowerShell V1 / V2

Ralf FeestDirector Enterprise ServicesAddOn (Schweiz) AG, Zürich

Page 2: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Meine Ziele für diesen Vortrag

PowerShell-Anfängerabholen & begeistern

PowerShell-Nutzern Tipps & Tricks sowie einen Ausblick auf die V 2.0 zeigen

Den richtigen Mix aus Theorie & LiveDemo präsentieren

Page 3: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Einführung in PowerShell

Erweiterung der bekannten cmd.exeunterstützt/integriert das .NET Objektmodell

Schnittstellen zu.NET Framework

Page 4: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Voraussetzungen der V 1.0

.NET Framework 2.0Unterstützte Betriebssysteme

Einstieg mit Webcasts, Doku etc. unter www.addon-ag.ch?ad1033

Windows XP Service Pack 2• Installation via Servermanager als „Feature“• Keine Unterstützung innerhalb von ServerCore vor Erscheinen von R2!

Windows Server 2003 Service Pack 1

Windows Vista

Windows Server 2008

Page 5: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Aufbau eines cmdlet

cmdlet (sprich: „commandlet“) = Befehl, der nur innerhalb einer PS ausgeführt werden kannBeispiel:get-Process | select-Object Name,StartTimeVerb

Subjekt

Pipe-Symbol zum objektorientierten

(!) Verkettenzweier cmdlets

AttributeAuswahl

Page 6: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Wo bekomme ich Hilfe?

Übersicht der cmdlets: get-commandListe der Kurzkommandos (Alias): get-alias

z. B. ps steht für Get-Processoder dir steht für Get-Childitem

Syntax eines Befehls abrufen:get-help get-processget-help get-process -detailedget-help get-process -full

Page 7: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Erste Schrittemit der PowerShell

demo

Page 8: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

PowerShell Beispiele (1)

Welche Datei-Endungen kommen wie häufig in einer Verzeichnisstruktur vor?Get-ChildItem -recurse | group-object extension |sort -property Count -descending

Page 9: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

PowerShell Beispiele (2)

Zugriff auf die RegistryWert aus der Registry abfragenget-itemproperty-path "HKCU:\Software\AddOn\Snake“-name Highscore

Wert in der Registry neu setzenset-itemproperty-path "HKCU:\Software\AddOn\Snake“-name Highscore –value 1740

Page 10: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

PSdrives

demo

Page 11: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Neue AD-Schnittstelle ab W2008 R2

Erweiterung für die PowerShellImport-Module ActiveDirectory

Voraussetzungenmind. ein Windows 2008 R2 DC .NET Framework 3.5.1Client: W2008 R2 oder Windows 7

Page 12: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Ein PSdrive für das AD

Page 13: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Mit cd durch's AD browsen…

Page 14: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.
Page 15: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

>70 neue AD-cmdletsAdd-ADComputerServiceAccountAdd-ADDomainControllerPasswordReplicationPolicyAdd-ADFineGrainedPasswordPolicySubjectAdd-ADGroupMemberAdd-ADPrincipalGroupMembershipClear-ADAccountExpirationDisable-ADAccountDisable-ADOptionalFeatureEnable-ADAccountEnable-ADOptionalFeatureGet-ADAccountAuthorizationGroupGet-ADAccountResultantPasswordReplicationPolicyGet-ADComputerGet-ADComputerServiceAccountGet-ADDefaultDomainPasswordPolicyGet-ADDomainGet-ADDomainControllerGet-ADDomainControllerPasswordReplicationPolicyGet-ADDomainControllerPasswordReplicationPolicyUsageGet-ADFineGrainedPasswordPolicyGet-ADFineGrainedPasswordPolicySubjectGet-ADForestGet-ADGroupGet-ADGroupMemberGet-ADObjectGet-ADOptionalFeatureGet-ADOrganizationalUnitGet-ADPrincipalGroupMembershipGet-ADRootDSEGet-ADServiceAccountGet-ADUser

Get-ADUserResultantPasswordPolicyInstall-ADServiceAccountMove-ADDirectoryServerMove-ADDirectoryServerOperationMasterRoleMove-ADObjectNew-ADComputerNew-ADFineGrainedPasswordPolicyNew-ADGroupNew-ADObjectNew-ADOrganizationalUnitNew-ADServiceAccountNew-ADUserRemove-ADComputerRemove-ADComputerServiceAccountRemove-ADDomainControllerPasswordReplicationPolicyRemove-ADFineGrainedPasswordPolicyRemove-ADFineGrainedPasswordPolicySubjectRemove-ADGroupRemove-ADGroupMemberRemove-ADObjectRemove-ADOrganizationalUnitRemove-ADPrincipalGroupMembershipRemove-ADServiceAccountRemove-ADUserRename-ADObjectReset-ADServiceAccountPasswordRestore-ADObjectSearch-ADAccountSet-ADAccountControlSet-ADAccountExpirationSet-ADAccountPassword

Set-ADComputerSet-ADDefaultDomainPasswordPolicySet-ADDomainSet-ADDomainModeSet-ADFineGrainedPasswordPolicySet-ADForestSet-ADForestModeSet-ADGroupSet-ADObjectSet-ADOrganizationalUnitSet-ADServiceAccountSet-ADUserUninstall-ADServiceAccountUnlock-ADAccount

Page 16: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Eigene PSdrive Provider

Kennen Sie noch den subst-Befehl?New-PSDrive -name X –psprovider FileSystem -root c:\scripts New-PSDrive -name Y -psprovider Registry-root HKCU:\Software\Microsoft\Windows\CurrentVersion

SQL Server 2008 mit eigenem PSdrivecd SQLSERVER:\SQL\localhost\DEFAULT\Databases\Sales\TablesGet-ChildItem | where {$_.Schema -eq "Sales"}

3rd Party Provider downloadbarMSDN-Artikel"Creating a Windows PowerShell Drive Provider"

Page 17: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Zugriff auf Ereignisprotokoll

Welche Ereignislogs gibt es?get-eventlog –list

Ereignisliste einesbestimmten Log abfragen:get-eventlog –LogName Application

Die fünf jüngsten Einträge abrufen:get-eventlog –LogName Application –newest 5

Alle Attribute eines einzelnen Eintrags abrufen:get-eventlog -LogName Application |where-object {$_.index -eq 17015} | select-object *

Page 18: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Formatierung der Ausgabe

Ausgabe als Liste format-list (Objekte einzeln untereinander)Ausgabe in Tabelle format-table

Ausgabe in eine DateiCSVGet-ChildItem Brief.pdf | export-csv -path test.csv

XMLGet-ChildItem Brief.pdf | export-Clixml -path test.xml

Page 19: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Befehle mitschneiden

Protokollierungstart-transcript –path <Datei>stop-transcript

Ausgabe einer Datei auf dem Bildschirm

type log.txtget-content log.txt

Druckausgabean den Standarddruckerout-printer –name <Datei>

an einen bestimmten Netzwerkdruckerout-printer -name "\\Server01\Prt-6B Color"

Page 20: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Skripte erstellen und ausführen

Default:Nur signierte PowerShell Skriptedürfen ausgeführt werden!Ausführungsrichtlinie

abfragen: Get-ExecutionPolicy

setzen: Set-ExecutionPolicy -ExecutionPolicy unrestricted(einmal durch Administrator)

Skript aufrufen:

Die Datei "C:\Users\rfeest\Desktop\ralf.ps1" kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist.

Page 21: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Variablen (1)

eingebaute Variablenz. B. $PWD, $HOME, $PROFILE etc.Liste abfragbar mit dir variable: | sort nameUmgebungsvariablen mit dir env: | sort name

Eigene VariablenKeine Deklaration notwendig, einfach verwenden$netto= 270$brutto= $netto * 1.075"Der Rechnungsbetrag beträgt $brutto CHF."

Page 22: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Variablen (2)

Alternative: Variable mit New-Variable anlegen:

new-Variable Mehrwertsteuer 0.19 –option ReadOnly

Typ der Variablen abfragen:$Mehrwertsteuer.GetType()$Mehrwertsteuer.GetType().Name

ohne Dollarzeichen! Wertzuweisun

g

Zusatzoptionen

Page 23: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Schleifen

Beispiel: Quadratzahlen 1, 4, 9, 16, … 100#Skript zur Berechnung von Quadratzahlen$Quadrat=1while ($Quadrat -le 10){ write-host ($Quadrat * $Quadrat) $Quadrat +=1}

while(expression){ …}

for([initializer];[condition];[iterator]{…}

do { …} until/while(expression)

foreach-object(identifier in collection){…}

Page 24: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

IE fernsteuern

demo1. $ie= new-object -com "InternetExplorer.Application"2. $ie.Visible= $true 3. $ie.navigate("http://www.denver.com")4. $ie |get-member 5. $ie.StatusText 6. $ie.document | get-member 7. $ie.document.title8. $ie.document.documentElement.innerHTML9. $ie.document.documentElement.innertext10. $ie.document.documentElement.innertext.indexOf("IIS")11. $ie.document.documentElement.innertext.substring(110,7)12. $ie.quit()

Page 25: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

WMI und Office

Zugriff per WMIget-Wmiobject -class Win32_LogicalDisk | ft Name,VolumeName,Size,FreeSpace

Zugriff auf Office-ApplikationenBeispiel: Anzahl Mails im Posteingang undAuflisten der Absender aller Mails

$Outlook= new-object -comobject Outlook.Application$Posteingang= $Outlook.Session.GetDefaultFolder(6)write-host $Posteingang.Items.Countforeach ($Mail in $Posteingang.Items) {$Mail.SenderName}

Page 26: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

ADSI$u= [ADSI]”LDAP://cn=Ralf

Feest,ou=Training,dc=denver,dc=com”

Abfragen der Beschreibung eines Benutzers$u.description

Ändern der Telefonnummer eines Benutzers$u.TelephoneNumber= “+41 17 4897-11“$u.SetInfo()

Auflisten aller Computerkonten der Domäne $ad=[ADSI]"LDAP://dc=denver,dc=com“$ds= new-object System.DirectoryServices.DirectorySearcher$ds.SearchRoot= $ad$ds.Filter="(objectCategory=computer)"$Ergebnisse= $ds.FindAll()foreach ($PC in $Ergebnisse) {write-host $PC.Properties.name}

.Net Framework

Page 27: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Unterstützung für XML

$MA = [xml]"<Mitarbeiter><Person> <Name>Meier</Name> <Tel>(0123)4567</Tel></Person><Person> <Name>Schuster</Name> <Tel>(0987)6543</Tel></Person></Mitarbeiter>"

write-host $MA.Mitarbeiter.Person[1].Namewrite-host $MA.Mitarbeiter.Person[1].Tel

Page 28: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Exchange Administration

Exchange 2007 Administration per PowerShell

nur auf dem Exchange Server direktper RDP-Session remote

Exchange-Remote-Admin z. B. von VISTA aus:

PowerShell V1 installierenExchange 2007 Administrationstools installieren

Page 29: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Exchange 2007

Benutzer mit Postfach anlegen

$maildb= get-mailboxDatabase$pwd= convertto-securestring

-string ".ServerSummit2008" -asplaintext -force

new-mailbox -name "Hans Dampf" -alias hdampf -organizationalUnit "contoso.com/Training" -userPrincipalName [email protected] -samAccountName hdampf -FirstName Hans -LastName Dampf -password $pwd -ResetPasswordOnNextLogon $false -Database $maildb

Page 30: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Remote Administration mit V1

Remote Admin via WMIBeispiel:

$PCs= $("BBN25", "BBS12", "BBS5")Get-WmiObject Win32_OperatingSystem -computer $PCs

SystemDirectory : C:\Windows\system32Organization :BuildNumber : 6001RegisteredUser : RalfSerialNumber : 89587-014-3171252-71989Version : 6.0.6001

SystemDirectory : C:\WINDOWS\system32Organization : AddOnBuildNumber : 3790RegisteredUser : AddOnSerialNumber : 69713-286-0895857-44217Version : 5.2.3790

SystemDirectory : C:\WINDOWS\system32Organization : addonBuildNumber : 3790RegisteredUser : ctecSerialNumber : 69713-640-1693711-45097Version : 5.2.3790

Page 31: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

PowerShell V2

Momentan Beta-/CTP-Status*), connect.microsoft.cominstallierbar auf

ca. 60 neue cmdletsBessere Unterstützung für remote Administration

Windows Management Instrumentation (WMI)Windows Remote Management (WinRM)built-in bei Vista SP1 und Windows 2008,Download für Windows 2003 und XP (in CTP noch nicht unterstützt)

Abfrage von mehreren Systemen oder Ausführung mehrere Aufgaben können mit Hilfe von Background Threads parallelisiert werden!grafische Entwicklungsoberfläche *) Community Technology Preview

XP SP3

Win

Server 2003 SP2

Vista SP1

Windows

2008

Windows

2008 R2

Windo

ws 7

V2 included

Page 32: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Remote PowerShell in V2

WS-Management Protocol

Invoke-Command –computername FileSrv02–scriptblock {get-process}

verschlüsselter

Datentransfer

technische Voraussetzungen:• WinRM Dienst muss laufen• Enable-PSremoting muss einmal aufgerufen werden• Noch keine Unterstützung für Windows 2003 und Vista

bisher (könnte aber kommen)

Page 33: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

RunSpaces in V2

Mit RunSpaces (jetzt: PSsessions) können PowerShell cmdlets auf remote Computer initiiert werdentemporärer RunSpace:

Persistenter RunSpace:

Invoke-Command –computername DC –scriptblock {ps winlogon}

$dc= New-PSsession –Computername DC –Credential [email protected] –session $dc –scriptblock {ps winlogon}Invoke-Command –session $dc –scriptblock {get-Psdrive}get-PSsessionremove-PSsession –session $dc

Page 34: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

PowerShell V2 – Background Prozesse

Start-job -scriptblock {get-process}führt die Kommandos im Hintergrund ausPrompt kommt sofort zurück

Get-Jobzeigt eine Übersicht der Background-Prozesse anGezielte Stausabfrage eines Prozesses möglich

Wait-Job –id <JobID>gibt einen Prompt zurück, wenn Job fertig

Receive-Job –id <JobID>ermittelt die Ergebnisse der Background-Prozesse

Page 35: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Die PowerShell ISE

Page 36: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

PowerShell V 2.0

demo

Page 37: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Your MSDN resourcescheck out these websites, blogs & more!

PresentationsTechDays: www.techdays.chMSDN Events: http://www.microsoft.com/switzerland/msdn/de/presentationfinder.mspxMSDN Webcasts: http://www.microsoft.com/switzerland/msdn/de/finder/default.mspx

MSDN EventsMSDN Events: http://www.microsoft.com/switzerland/msdn/de/events/default.mspxSave the date: Tech•Ed 2009 Europe, 9-13 November 2009, Berlin

MSDN Flash (our by weekly newsletter)Subscribe: http://www.microsoft.com/switzerland/msdn/de/flash.mspx

MSDN Team BlogRSS: http://blogs.msdn.com/swiss_dpe_team/Default.aspx

Developer User Groups & CommunitiesMobile Devices: http://www.pocketpc.ch/Microsoft Solutions User Group Switzerland: www.msugs.ch.NET Managed User Group of Switzerland: www.dotmugs.chFoxPro User Group Switzerland: www.fugs.ch

Page 38: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Your TechNet resourcescheck out these websites, blogs & more!

PresentationsTechDays: www.techdays.ch

TechNet EventsTechNet Events: http://technet.microsoft.com/de-ch/bb291010.aspx Save the date: Tech•Ed 2009 Europe, 9-13 November 2009, Berlin

TechNet Flash (our by weekly newsletter)Subscribe: http://technet.microsoft.com/de-ch/bb898852.aspx

Schweizer IT Professional und TechNet BlogRSS: http://blogs.technet.com/chitpro-de/

IT Professional User Groups & CommunitiesSwissITPro User Group: www.swissitpro.ch NT Anwendergruppe Schweiz: www.nt-ag.ch PASS (Professional Association for SQL Server): www.sqlpass.ch

Page 39: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Save the date for tech·days next year!

7. – 8. April 2010Congress Center Basel

Page 40: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Classic Sponsoring Partners

Media Partner

Premium Sponsoring Partners

Page 41: Ralf Feest Director Enterprise Services AddOn (Schweiz) AG, Zürich.

Recommended