Wenn man wie ich eher von der Unix Seite (der guten Seite der Macht) kommt und auf seinem Windows PC zum vernünftigen Arbeiten mit der Kommandozeile noch cygwin installiert hat, dann vermisst man es schmerzlich auf Rechnern, die diese kleinen Linux Tools für Windows nicht besitzen.
Doch wenn man Glück hat, ist die Powershell installiert (die Anzahl von PC’s mit XP und nicht aktuellem Servicepack ist immer noch erschreckend hoch).
Nun stellt sich eine Frage. Auf der Unix Shell kennt man sich gut aus, aber wie heißt denn jetzt das entsprechende Powershell Kommando für den Unix Befehl, den man braucht. Die Antwort ist „rtfm“ oder ein guter Artikel im Internet von jemanden, der die Doku gelesen hat. Für mich war dieser Artikel bei oreilly sehr hilfreich.
Was man dabei nämlich zuerst lernt ist, dass für die Powershell Kommandos eine Menge von Aliassen gibt, die teilweise gleichlautend mit den Unix Befehlen sind. Hier eine kleine Auswahl:
table.powershell {border-collapse:collapse; border: 1px solid black}
table.powershell td,th {border: 1px solid #999999; padding: 2px}
Command | Aliases |
---|---|
Copy-Item | cpi, cp, copy |
ForEach-Object | foreach, % |
Get-ChildItem | dir, ls |
Get-Command | gcm |
Get-Content | cat, type |
Get-Content | gc, type, cat |
Get-Help | help |
Get-Location | gl, pwd |
Move-Item | mi, mv, move |
Remove-Item | ri, rd, del, rm, rmdir |
Rename-Item | rni, ren |
Set-Location | cd, chdir |
Where-Object | where |
Quelle: oreilly.de
Für meine Zwecke hat dies schon gereicht, denn ich wollte nur mit cat
in eine Datei hineinschauen. Anders sieht es aus, wenn man einen „pager“ wie more
oder less
benötigt. Für diese gibt es die PowerShell Community Extensions, die unter der Microsoft Public License (Ms-PL) stehen.
Dabei handelt es sich um zusätzliche cmdlets, providers, aliases, filters, functions and scripts für die Windows PowerShell. Die Doku dafür ist allerdings dürftig.
Fazit:
Wer wie ich eine Unix Shell vorzieht und auf den Zugriff von .NET Objekten über die Powershell verzichten kann, ist mit mit cygwin (sofern es installiert ist) besser bedient. Denn die Powershell Kommandos sind nur in Ansätzen (durch Aliasse) namensgleich mit Unix Befehlen. Die PowerShell Community Extensions verbessern diese Situation.
Ist cygwin nicht installiert, kommt man also um das Lesen der Powershell Doku nicht herum.