====== Die Windows PowerShell ======
{{ :images:muchen_olympia_park.png?600 | München Olympia Stadion Oktober 2015}}
====Überblick:====
* [[http://technet.microsoft.com/de-de/scriptcenter/powershell.aspx| PowerShell Einstieg]]
* [[http://technet.microsoft.com/en-us/library/bb978526| PowerShell TechNet ]]
* [[http://technet.microsoft.com/de-de/library/dd347701| Windows PowerShell – Cmdlet-Hilfethemen]]
\\
----
====Nun (08.2016) auch für die Linux Plattform ====
Auf https://github.com/PowerShell/PowerShell steht die PowerShell nun auch für Linux zur Verfügung.
Siehe auch => http://www.heise.de/newsticker/meldung/Microsofts-PowerShell-erscheint-als-Open-Source-und-fuer-Linux-sowie-OS-X-3299960.html
----
==== Objekt Referenzen:====
Für das Erstellen von PowerShell Skripten ist das Wissen über den Aufbau der .Net Klasse sehr vorteilhaft.\\
* [[http://msdn.microsoft.com/de-de/library/gg145028| .Net 4.0 System.Data-Namespaces Überblick]]
* [[http://www.microsoft.com/en-us/download/details.aspx?id=7097| Windows PowerShell Quick Reference]]
----
==== Sammlung wichtiger PowerShell Tipps und Tricks ====
* [[windows:powershell_script_aufrufen|Aufruf von PowerShell Scripten - Signieren von Skripten]]
* [[windows:powershell_oracle_db_abfragen|Mit der PowerShell die Oracle Datenbank mit .NET abfragen]]
* [[windows:powershell_sqlplus_db_abfragen|Mit der PowerShell SQL*Plus aufrufen um die Oracle Datenbank abfragen]]
* [[windows:powershell_ls_gci_dir|Der gute alte DIR Befehl in der PowerShell - gci]]
* [[windows:powershell_umgebung_einrichten|Das PowerShell Profil einstellen - Administrativen Modus erkennen]]
* [[windows:powershell_irm_curl_wget|curl / wget in der Powershell - Testen von ORDS Webservices in der Powershell über die Console]]
----
==== Mein OpenSource Projekt OraPowerShell ====
Ein komplettes Beispiel für einen Umsetzung von Scripten im Oracle Umfeld mit der Microsoft PowerShell befindet sich unter:\\
=> [[http://orapowershell.codeplex.com/| OraPowerShell auf CodePlex]] .
----
==== Kleine Tricks am Rande:====
* Zeige die 25 größen Dateiengci . -r | sort Length -desc | select fullname Length -f 25
* Version abfragen mit "**$PSVersionTable** und **$PSVersionTable.PSVersion**"
* Oracle Home setzen mit "**new-item -path env: -name ORACLE_HOME -value D:\oracle\product\11.2.0.3\client_64bit**" (entspricht dem dos set Befehl)
* NLS_LANG ändern mit set-item -path env:NLS_LANG -value AMERICAN_AMERICA.UTF8
* Oracle Home abfragen / als Variable verwenden mit "**$ENV:ORACLE_HOME**"
* Größe der Konsole einstellen mit "**MODE con:cols=130 lines=35**"( CMD Feature .-))
* Dateien in einer Verzeichnis Struktur umbenennen (zum ersten Testen den Schalter -WhatIf verwenden!) Get-ChildItem -Filter *testuser* -Recurse | Where-Object {!$_.PSIsContainer} | Rename-Item -NewName { $_.Name.Replace('testuser','gpipperr') }
* Dateien löschenGet-ChildItem -Filter *TESTER* -Recurse | Where-Object {!$_.PSIsContainer} | Remove-Item
* Subversion .svn löschenGet-ChildItem -Filter .svn -Recurse -force | Where-Object {$_.PSIsContainer} | Remove-Item -force -recurse
* Das @ beim Aufruf von SQL*Plus Scripten immer mit **"**@**"** schützen sqlplus / as sysdba "@login.sql"
* grep über alle Dateien in UnterverzeichnissenGet-ChildItem -Filter *java -Recurse | Select-String -Pattern "CHECKPOINTER_BYTES_INTERVAL"
#alternativ
Get-ChildItem -recurse | Select-String -pattern "isched" | group path | select name
* grep auf Dateien und eine Zeile vorher und nachher anzeigen lassen mit "-context"Get-ChildItem -Filter *1112.trc -Recurse | Select-String -Pattern " nttcni: connected on" -context 2
* Zähle die Zeichen in einer Datei (linux : cat | wc -l ) => gc .\export_datei.csv | measure -l
* Tail auf eine Datei Get-Content -Path "catupgrd0.log" -Tail 30 -Wait
* Laufzeit eines Programms messen mit Measure-CommandMeasure-Command { expdp "'/ as sysdba'" FULL=YES DIRECTORY=WORK_EXPOR DUMPFILE=full_expdp.dmp }
* Credential Object für das Speicher der Passwörter im Script verwenden
# PWD
$db_user = "system"
$oracle_credential = "$scriptpath\ORACLE_CREDENTIAL.xml"
#
# To store the password we use the PSCredential object
# if the serialized object of the password not exists
# prompt the user to enter the password
#
if (!(test-path -path $oracle_credential)) {
$user_credential=GET-CREDENTIAL -credential "$db_user"
export-clixml -InputObject $user_credential -Path $oracle_credential
}
else {
$user_credential=Import-Clixml -Path $oracle_credential
}
#get the clear type password
$db_password=$user_credential.GetNetworkCredential().Password
siehe auch [[dba:passwort_verschluesselt_hinterlegen|Wohin nur mit den Passwörtern in Windows und Linux Skripten? - Passwörter in Skripten verschlüsselt hinterlegen.]] und [[dba:passwort_schuetzen|Datenbank User Passwörter in Shell und SQL Skripten]]
Reguläre Ausdrücke in der Powershell, Regex Ausdrücke:
* http://regexlib.com/CheatSheet.aspx?AspxAutoDetectCookieSupport=1
\\
Umleitung verstehen:
* https://docs.microsoft.com/de-de/powershell/module/microsoft.powershell.core/about/about_redirection?view=powershell-7.2
* https://docs.microsoft.com/de-de/powershell/module/microsoft.powershell.core/about/about_redirection?view=powershell-7.2
----
==== Powershell Development Enviroments ====
* [[http://www.idera.com/productssolutions/freetools/powershellplus|Idera PowerShell Plus ]]
----
==== Weitere Quellen: ====
* http://www.msxfaq.de/code/powershell.htm
* http://www.computerperformance.co.uk/powershell/