====== 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/