Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

PowerShell Basics

In Developement...
by

Tharshan Sachin

on 25 June 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of PowerShell Basics

Get-ADUser "operts"
New-ADUser Test
Get-ADComputer "D26003006"
Get-ADGroupMember –Identity “Administrators“
Enable-ADAccount –Identity Test
Disable-ADAccount –Identity Test
Remove-ADUser –Identity Test
Etc…
Basics
Not Case-sensitive (a / A)
Automatische Befehlszeilenergänzung per Tabulatortaste
WMI
Ist im Grunde eine Datenbank mit vorhandene Informationen, über das ganze Windows System
Single-quotes / Double-quotes
String-Variable wird nicht aufgelöst / wird erkannt und aufgelöst
Arrays
$RegenbogenFarben = @(“Rot“, “Orange“, “Gelb“, “Grün“, “Blau“, “Indigo“, “Violett“)
Vielen Dank für Ihre Aufmerksamkeit
Ende
Fragen
Registry navigieren
Registry durchsuchen
Neue Registry Keys erstellen
Registry Keys löschen
Neue Werte setzen
Vorhandene Werte ändern
ACLs verwalten(Access Control Lists)
Registry
Invoke-Item
“Invoke-Item“ Cmdlet öffnet eine Datei mit der festgelegten Standardanwendung
New-Item
Erstellt ein Neues Objekt (Ordner, Datei usw…)
Rename-Item
Eine Datei umbenennen
Remove-Item
Verzeichnis oder Datei löschen
Move-Item
Dateien verschieben
Copy-Item
Dateien von A nach B kopieren
Item-Interaktion
Convertto-HTML
Konvertiert die Ausgabe in HTML-Format bzw. HTML-File.
Bsp.: Get-Process | ConvertTo-Html
Get-Process | ConvertTo-Html | Out-File “Processes.html“
Fileausgabe
Sort-Object
Diese Cmdlet ist selbsterklärend. “Sort-Object“ Cmdlet bietet einen Mechanismus, um Ergebnisse zu sortieren.
Bsp.: Get-Process | Group-Object Company | Sort-Object Count
Sortierung
Group-Object
Ermöglicht uns die Ausgangsinformationen basierend auf Gruppen zu formatieren.
Bsp.: Get-Process | Group-Object Company
(Name, Count, Group)
Gruppierung
Eine Funktion beinhaltet einen Code-Block und kann mit einem Name vermerkt und mehrfach in einem Skript aufgerufen werden
Bsp.: Function Time {Get-Date}
Function
For
for ($i=1; $i -le 5; $i++)
{Write-Host $i}
Foreach
$ints = (1, 2, 3, 4, 5)
foreach ($i in $ints)
{Write-Host $i}
Do While / While
$i = 1
do {Write-Host $i; $i++}
while ($i -le 5)
Do Until
$i = 1
do {Write-Host $i; $i++}
until ($i -gt 5)
Loops
If / Else
Bedingungen
String $test = "Hello"
Int $test = 123
Bool $test = $true / $false
Array $test = @("1","2","3")
Etc…
Datentypen
Kommentare werden in PowerShell mit # eingeleitet
Comments
Pipeline ist wie eine Objektübertragung bzw. Übergabe
Fusionierung zwei Befehle mit dem selben Objekt
Pipeline nimmt die Ausgabe von einem Befehl und sendet sie als Eingabe für einen anderen Befehl weiter.
Bsp.: Get-Process | Group-Object Company
Pipes (Pipeline)
Variablen sind Informationen, die wir für den späteren Abruf speichern
Variable
Ein Alias ist ein alternativer Name an ein Cmdlet zugewiesen
Bsp.: dir / Get-Childitem

Es gibt “Built-in Aliases“ und “Benutzerdefinierte Aliases“

Mit “Get-Alias“ Cmdlet kann man die PowerShell Aliases auflisten

PowerShell bietet auch gewisse Unix Befehle als Aliases an

“Get-ChildItem“ Cmdlet kann auch mit anderen Befehle bzw. Aliases aufgerufen werden:
Windows “dir“ Befehl
Unix “ls“ Befehl
PowerShell alias “gci“ Befehl

Mit “Set-Alias alias calc“ ermöglicht PowerShell benutzerdefinierte Aliases anzulegen
Benutzerdefinierte Aliases bleiben nur für die aktive PowerShell Session bestehen
Um die benutzerdefinierte Aliases nicht zu verlieren, hat man zwei Möglichkeiten:
Import-Alias / Export-Alias
PowerShell Profile
Aliases
Nebst Snap-ins hat man Mithilfe von Module ab PowerShell Version 2 eine bessere Methode Powershell mit Cmdlets zu erweitern.
Get-Module –ListAvailable
Listet alle verfügbaren Modulen auf
Bsp.: Import -module Activedirectory (RSAT Tools erforderlich)
Modules
PowerShell-Befehle werden als Cmdlets bezeichnet
Ermöglicht benutzerdefinierte Cmdlets anzulegen
Cmdlets haben eine “Verb-Nomen“ Namenskonvention
Zwischen Verb und Nomen ist immer ein “-“ und kein Leerschlag
Die Verben können mit dem “Get-Verb“ Befehl aufgerufen werden
Get-command (Auflistung aller Cmdlets in Powershell)
Get-command –verb Get (Listet Cmdlets, die ein bestimmtes Verb enthalten)
Get-command –noun Service (Listet Cmdlets, die ein bestimmtes Nomen enthalten)
Commandlets (Cmdlets)
Interaktive Shell
Hat beides integriert (Scripting Editor und Konsole)
Einfacheres Copy / Paste Commands
Ermöglicht Snippets aufzurufen und eigene zu erstellen
Mehrere Skript-Bearbeitung Registerkarten
Farbige Syntax für PowerShell Skripts (Syntaxhervorhebung)
Befehls-Add-On ermöglicht eine Suchfunktion für Cmdlets
Ausführung von PowerShell ausgewählte Code mit F8
Automatische Vervollständigung resp. Auto-Vorschlag für Befehle und Optionen
PowerShell ISE
Erfordert keine Visual Studio (oder ähnliche C# IDE) Installationen
Ermöglicht mit ein paar Befehlszeilen Zugang zu jegliche Schnittstellen
Braucht eine Menge Code, um eine Windows Form (User-Oberfläche) zu erstellen
Verwendet gleiche Namen und Eigenschaften wie in C# (Windows Form)
PowerShell (ISE) vs. C# (Visual Studio)
Mächtigere Skriptsprache als Batch
PS kann die selben Befehle wie Cmd ausführen
Command: Ausgabe Strings
PowerShell: Ausgabe .Net-Objekt
Objekt kann ohne zusätzliche Programmierung in ein anderes Kommando übergeben werden (Pipeline)
PowerShell vs. Command Prompt (Batch)
Gesamte System zentralisiert steuern
Die Skriptsprache ist vernünftig
Schnell / Performance
Mächtig
Objektorientiert
Beschleunigt Admintask
Bietet Vielzahl von Möglichkeiten Aufgaben zu automatisieren
Erledigt Aufgaben mit grossen Mengen in kurzer Zeit
Ersetzt alte Skriptsprachen wie Batch, VBScript u.a.

Warum PowerShell?
1.0
2.0 (PowerShell ISE)
3.0 (ISE: IntelliSense)
4.0 (Aktuell)
Versionen
PowerShell
Im Jahr 2006 unter dem Namen “Monad“ entstanden
Eine neue moderne Administrationsshell
Objektbasierte Skriptsprache für Microsoft Windows
Automatisiert und vereinfacht Admintasks
Verwendet das .Net Framework
Die Ausgabe ist in .Net-Objekten
Was ist PowerShell?
Beispiele
Active Directory (einfache Administration)
Standardmässig kann man Active Directory-Modul in PowerShell unter Windows 7 nicht importieren
Benötigt “Remote Server Administration Tools (RSAT)“ unter Windows 7
Nach der RSAT-Installation die Funktion aktivieren:
Es ist nicht ganz einfach eine Windows Form zu erstellen
Jedes einzelne Objekt muss identifiziert und mit deren Eigenschaft kennzeichnet werden.
Bsp.: Code nur für eine einfache Form
Windows Forms
Zur Ausgabe auf dem Prompt bietet die Shell verschiedene vordefinierte Farbcodes.
write-host "Starte Vorgang..."
write-warning "Achtung..."
write-error "Fehler..."
Ausgabe
Where-Object
Filtert von der gesamten Ausgabe von einer Cmdlet nur bestimmte Objekte heraus, welche die Kriterien entsprechen
Bsp.: Get-Process | Where-Object {$_.name -like “Team*“}
Filterung
Logische Operatoren
Nicht alle Cmdlets verwenden diese Parameter
Gemeinsame Parameter
Ein Profil ist ein Skript, das bei Sitzungsstart ausgeführt wird
Profilpfad kann mit “$Profile“ aufgerufen werden
PowerShell Profile
Get-help
Get-help (Information über Get-Help Cmdlet)
Get-help * (Information über sämtliche Hilfe Themen)
Get-help Get-service (Information über ein bestimmtes Cmdlet)
Help
Help (Information über Get-Help Cmdlet)
Help * (Information über sämtliche Hilfe Themen)
Help Get-Service (Information über ein bestimmtes Cmdlet)
Cmdlet -?
Get-Service -? (Information über ein bestimmtes Cmdlet)
Hilfe
Ein Objekt ist etwas, wo wir Informationen ergattern können
Ein Objekt, besteht aus Eigenschaften und Methoden
Alles was sich in einer Active Directory-Domain befindet ist ein Objekt:
Server, Computer, Drucker, Shares, Organizational Units (OUs), Security Groups, Group Policy Objects, Users, etc…
Mit PowerShell kann man mit diesen Objekten interagieren, um Informationen aufzuzählen und/oder auch zu erstellen, ändern oder löschen von Objekten

Was ist ein Objekt?
Freeware Produkt
Hat beides integriert (Scripting Editor und Konsole)
Ermöglicht Snippets aufzurufen und eigene zu erstellen
Mehrere Skript-Bearbeitung Registerkarten
Farbige Syntax für PowerShell Skripts (Syntaxhervorhebung)
Generiert automatisch PowerShell Code, für die vorgenommene Aktion
Automatische Vervollständigung resp. Auto-Vorschlag für Befehle und Optionen
Eigenschaften / Werte von einer Variable vorhersehbar
Erfordert gleiche Kenntnisse wie für PowerShell ISE
PowerGUI
Geeignet für kurzfristige bzw. temporäre Anwendungen
Unterstützt Plug-ins, die seine Funktionalität erweitern können
PowerShell (Konsole)
Plattform
Restricted (Eingeschränkt):
Es können keine Skripts ausgeführt werden. Windows PowerShell kann nur im interaktiven Modus genutzt werden.
Executionpolicies
Nachteile
Weit reichende Kontrolle über das Windows-Betriebssystem
Sehr flexibel dank Kommandozeile
Kommandos bieten deutlich mehr Möglichkeiten als die CMD Prompt
Objekt handling
Vorteile
Vor- und Nachteile
WMI (Windows Management Instrumentation)
WPF (Windows Presentation Foundation)
GPO (Group Policy Object)
AD (Active Directory)
Microsoft SQL Server
Microsoft Exchange
Microsoft SharePoint
Csv (Comma-separated values)
Microsoft Excel
Interaktionen (Zugriffe)
PowerShell wurde für .NET-Objekte entworfen
VBScript unterstützt kein Verfahren für die Kommunikation oder Interaktion mit .NET
Schnellere Auswertung
HTML
Csv
PowerShell vs. VBScript (Vbs)
Überall wo Batch, VBScript und andere Skripts im Einsatz sind, ist auch PowerShell anwendbar.
Zum Beispiel:
Active Directory schnell und effizient verwalten
Für lokale und Remoteadministration
Einsatzgebiete
Alle PowerShell Scripts werden mit dieser Dateiendung identifiziert
Erfordert Adminrechte
Ausführung muss erlaubt sein (Policy)
Dateiendung (.ps1)
Vergleichsoperatoren
Operators
Nur für fachkundige Anwender geeignet
Für den Einsteig Syntax / Methode von jedem Befehl kennenlernen
PowerShell Basics
Herzlich Willkommen
Inhaltsverzeichnis
PowerShell
Plattform
Basics
Beispiele
Unrestricted (Uneingeschränkt):
Es gibt überhaupt keine Einschränkungen. Alle Windows PowerShell-Skripts können ausgeführt werden.
RemoteSigned (Remote signiert):
Heruntergeladene Skripts müssen von einem vertrauenswürdigen Autor signiert werden, bevor sie ausgeführt werden können.
AllSigned (Vollständig signiert):
Nur von einem vertrauenswürdigen Autor erstellte Skripts können ausgeführt werden.
Spezielle
$Args
Enthält ein Array der an eine Funktion übergebenen Parameter
$input
Erlaubt eine Funktion, um an Daten aus der Pipe zu gelangen
$_
Ist eine spezielle Variable, welche automatisch die aktuelle pipeline Objekte anspricht
Umgebungsvariablen
Eine Liste mit Pfade zu bestimmten Programmen oder Daten
Präferenz
Speichert Benutzereinstellungen für PowerShell. Diese Variablen werden durch PowerShell generiert
Automatisch
Behält den Zustand von der aktuellen PowerShell Sitzung und kann nicht direkt geändert werden. Die Werte ändern sich, wenn die PowerShell ausgeführt und verwendet wird
Benutzerdefinierte
Sind nur für eine bestimmte Sitzung anwendbar
Bsp.: $test
Out-gridview
Eine seit Version 2.0 eingeführte attraktive Ausgabe-Variante ist “Gridview”. Die Objektdaten werden grafisch dargestellt und lassen sich filtern und sortieren:
Bsp.: Get-Process | Out-GridView
Export-Csv
Kovertiert das Resultat in eine Csv File.
Bsp.: Get-Process | Export-Csv Processes.csv
Out-File
“Out-File“ Cmdlet leitet die Ergebnisse in eine Datei um.
Mit ">" kann man nach wie vor Ergebnisse abspeichern.
Allgemein
Switch
Full transcript