Ich brauche oft einige grundlegende Agregate, um einige Dinge zu zählen / zu summieren. Ich habe diese Funktionen definiert und benutze sie oft. Sie funktionieren wirklich gut am Ende einer Pipeline:
#
# useful agregate
#
function count
{
BEGIN { $x = 0 }
PROCESS { $x += 1 }
END { $x }
}
function product
{
BEGIN { $x = 1 }
PROCESS { $x *= $_ }
END { $x }
}
function sum
{
BEGIN { $x = 0 }
PROCESS { $x += $_ }
END { $x }
}
function average
{
BEGIN { $max = 0; $curr = 0 }
PROCESS { $max += $_; $curr += 1 }
END { $max / $curr }
}
Um Zeit und Weg mit Farben in meiner Eingabeaufforderung zu erhalten:
function Get-Time { return $(get-date | foreach { $_.ToLongTimeString() } ) }
function prompt
{
# Write the time
write-host "[" -noNewLine
write-host $(Get-Time) -foreground yellow -noNewLine
write-host "] " -noNewLine
# Write the path
write-host $($(Get-Location).Path.replace($home,"~").replace("\","/")) -foreground green -noNewLine
write-host $(if ($nestedpromptlevel -ge 1) { '>>' }) -noNewLine
return "> "
}
Die folgenden Funktionen wurden aus einem Blog gestohlen und an meinen Geschmack angepasst, aber ls mit Farben ist sehr schön:
# LS.MSH
# Colorized LS function replacement
# /\/\o\/\/ 2006
# http://mow001.blogspot.com
function LL
{
param ($dir = ".", $all = $false)
$origFg = $host.ui.rawui.foregroundColor
if ( $all ) { $toList = ls -force $dir }
else { $toList = ls $dir }
foreach ($Item in $toList)
{
Switch ($Item.Extension)
{
".Exe" {$host.ui.rawui.foregroundColor = "Yellow"}
".cmd" {$host.ui.rawui.foregroundColor = "Red"}
".msh" {$host.ui.rawui.foregroundColor = "Red"}
".vbs" {$host.ui.rawui.foregroundColor = "Red"}
Default {$host.ui.rawui.foregroundColor = $origFg}
}
if ($item.Mode.StartsWith("d")) {$host.ui.rawui.foregroundColor = "Green"}
$item
}
$host.ui.rawui.foregroundColor = $origFg
}
function lla
{
param ( $dir=".")
ll $dir $true
}
function la { ls -force }
Und einige Verknüpfungen, um sich wirklich wiederholende Filteraufgaben zu vermeiden:
# behave like a grep command
# but work on objects, used
# to be still be allowed to use grep
filter match( $reg )
{
if ($_.tostring() -match $reg)
{ $_ }
}
# behave like a grep -v command
# but work on objects
filter exclude( $reg )
{
if (-not ($_.tostring() -match $reg))
{ $_ }
}
# behave like match but use only -like
filter like( $glob )
{
if ($_.toString() -like $glob)
{ $_ }
}
filter unlike( $glob )
{
if (-not ($_.tostring() -like $glob))
{ $_ }
}
Um meine Visual Studio-Buildumgebung von PowerShell aus einzurichten, habe ich von hier aus VsVars32 verwendet . und benutze es die ganze Zeit.
quelle
Dies durchläuft ein Skript PSDrive und punktiert alles, was mit "lib-" beginnt.
quelle
Start-Transkript . Dadurch wird Ihre gesamte Sitzung in eine Textdatei geschrieben. Hervorragend geeignet, um neue Mitarbeiter in der Verwendung von Powershell in der Umwelt zu schulen.
quelle
Meine Eingabeaufforderung enthält:
Das gibt mir eine Aufteilung zwischen Befehlen, die beim Zurückblättern leicht zu erkennen ist. Es zeigt mir auch das aktuelle Verzeichnis, ohne horizontalen Platz in der Zeile zu verwenden, in die ich tippe.
Beispielsweise:
quelle
Hier ist mein nicht so subtiles Profil
quelle
Ich rocke ein paar Funktionen und da ich ein Modulautor bin, lade ich normalerweise eine Konsole und muss unbedingt wissen, was wo ist.
Stirb hart nerding:
Die obligatorischen PowerShell-Funktionen, die ich kann, finden Sie hier ...
Ich bin NOCH ein Administrator, also brauche ich ...
Manchmal möchte ich den Explorer als eine andere Person als den angemeldeten Benutzer starten ...
Das ist nur, weil es lustig ist.
Ich habe auch eine für mich, da Win+ Lzu weit weg ist ...
Ein paar Filter? Ich glaube schon...
Ich habe auch einige, die ich noch nicht veröffentlichen kann, da sie noch nicht fertig sind, aber im Grunde eine Möglichkeit sind, Anmeldeinformationen zwischen Sitzungen beizubehalten, ohne sie als verschlüsselte Datei zu schreiben.
quelle
quelle
Open-IE
ich den eingebautenii
Alias fürInvoke-Item
.start http://google.com
Ich füge diese Funktion hinzu, damit ich die Festplattennutzung leicht sehen kann:
quelle
apropos.
Obwohl ich denke, dass dies durch eine aktuelle oder bevorstehende Veröffentlichung ersetzt wurde.
quelle
Ich behalte ein bisschen von allem. Meistens richtet mein Profil die gesamte Umgebung ein (einschließlich des Aufrufs von Skripten zum Einrichten meiner .NET / VS- und Java-Entwicklungsumgebung).
Ich definiere die
prompt()
Funktion auch mit meinem eigenen Stil neu ( siehe in Aktion ) und richte mehrere Aliase für andere Skripte und Befehle ein. und ändern Sie, auf was$HOME
zeigt.Hier ist mein komplettes Profilskript .
quelle
Sie werden davon profitieren, wenn Sie jemals nach einem dummen Tippfehler gesucht haben, z. Ausgabe von $ varsometext anstelle von $ var sometext
quelle
Nützlich für die Arbeit mit XML, z. B. für die Ausgabe von SVN-Befehlen mit --xml.
quelle
Dadurch wird ein Skript: Laufwerk erstellt und Ihrem Pfad hinzugefügt. Beachten Sie, dass Sie den Ordner selbst erstellen müssen. Wenn Sie das nächste Mal darauf zurückkommen müssen, geben Sie einfach "scripts:" ein und drücken Sie die Eingabetaste, genau wie bei jedem Laufwerksbuchstaben in Windows.
quelle
Dadurch werden Snapins hinzugefügt, die Sie in Ihrer Powershell-Sitzung installiert haben. Der Grund, warum Sie so etwas tun möchten, ist, dass es einfach zu warten ist und gut funktioniert, wenn Sie Ihr Profil über mehrere Systeme hinweg synchronisieren. Wenn kein Snapin installiert ist, wird keine Fehlermeldung angezeigt.
-------------------------------------------------- -------------------------
Fügen Sie Snapins von Drittanbietern hinzu
-------------------------------------------------- -------------------------
quelle
Ich habe alle meine Funktionen und Aliase in separaten Skriptdateien abgelegt und sie dann in meinem Profil als Punktquelle gespeichert:
. c: \ scripts \ posh \ jdh-functions.ps1
quelle
Die Funktion zum Anzeigen des gesamten Verlaufs des eingegebenen Befehls (Get-History und sein Alias h zeigen standardmäßig nur 32 letzte Befehle an):
quelle
Sie können mein PowerShell-Profil unter http://github.com/jamesottaway/windowspowershell sehen
Wenn Sie Git verwenden, um mein Repo in Ihren Ordner "Dokumente" zu klonen (oder in einen beliebigen Ordner, der sich in Ihrer Variablen "$ PROFILE" über "WindowsPowerShell" befindet), erhalten Sie all meine Güte.
Der Hauptordner
profile.ps1
legt den Unterordner mit dem NamenAddons
a festPSDrive
und findet dann alle .ps1-Dateien unter diesem Ordner zum Laden.Ich mag den
go
Befehl sehr, der ein Wörterbuch mit Kurzschriftorten speichert, die leicht zu besuchen sind. Zum Beispielgo vsp
werde ich zu nehmenC:\Visual Studio 2008\Projects
.Ich mag es auch, das
Set-Location
Cmdlet zu überschreiben, um sowohlSet-Location
als auch auszuführenGet-ChildItem
.Mein anderer Favorit ist es, etwas zu tun,
mkdir
wasSet-Location xyz
nach dem Laufen funktioniertNew-Item xyz -Type Directory
.quelle
Nur eine scharfsinnig faule Person würde Ihnen sagen, dass das Tippen
fop
so viel einfacher ist alsNotepad $PROFILE
an der Eingabeaufforderung, es sei denn, Sie assoziieren "fop" natürlich mit einem englischen Ninny aus dem 17. Jahrhundert .Wenn Sie möchten, können Sie noch einen Schritt weiter gehen und es nützlich machen:
Für die Befriedigung der Survivalist-Paranoia:
quelle
unter vielen anderen Dingen:
öffnet ein Explorer-Fenster im aktuellen Verzeichnis
wird alles in meinen temporären asp.net-Dateien los (nützlich für die Arbeit an verwaltetem Code, der Abhängigkeiten von fehlerhaftem, nicht verwaltetem Code aufweist)
bearbeitet $ x in Notepad ++
quelle
Ich halte meine tatsächlich auf Github .
quelle
Jeffrey Snovers Start-NewScope, da das Neustarten der Shell ein Problem sein kann.
Ich habe mich nie mit den direkten Optionen vertraut gemacht , also :
Ebenso praktisch für die Betrachtung des Speicherplatzes:
Für das Zeigen auf Sachen:
Grep des armen Mannes? Zum Durchsuchen großer txt-Dateien.
Listet Programme auf, die auf einem Remotecomputer installiert sind.
Meta gehen, das Evangelium verbreiten, so weiter
quelle
quelle
Ich halte mein Profil leer. Stattdessen habe ich Ordner mit Skripten, in denen ich navigieren kann, um Funktionen und Aliase in die Sitzung zu laden. Ein Ordner ist modular aufgebaut und enthält Bibliotheken mit Funktionen und Baugruppen. Für Ad-hoc-Arbeiten habe ich ein Skript zum Laden von Aliasnamen und Funktionen. Wenn ich Ereignisprotokolle munge möchte, würde ich zu einem Ordner scripts \ eventlogs navigieren und ausführen
Ich mache das, weil ich Skripte für andere freigeben oder von Maschine zu Maschine verschieben muss. Ich möchte in der Lage sein, einen Ordner mit Skripten und Assemblys zu kopieren und ihn für jeden Benutzer auf jedem Computer funktionieren zu lassen.
Aber du willst eine lustige Sammlung von Tricks. Hier ist ein Skript, von dem viele meiner "Profile" abhängen. Es ermöglicht Aufrufe von Webdiensten, die selbstsigniertes SSL für die Ad-hoc-Untersuchung von Webdiensten in der Entwicklung verwenden. Ja, ich mische C # frei in meinen Powershell-Skripten.
quelle
Gute Frage. Da ich mit mehreren verschiedenen PowerShell-Hosts zu tun habe, logge ich mich ein wenig in mehrere Profile ein, um den Kontext anderer Nachrichten klarer zu gestalten. In habe
profile.ps1
ich derzeit nur das, aber ich ändere es manchmal basierend auf dem Kontext:Mein Lieblingshost ist die ISE, in der
Microsoft.PowerShellIse_profile.ps1
ich habe:quelle
Von allem, was noch nicht aufgeführt ist, muss Start-Steroids mein Favorit sein, außer vielleicht Start-Transcript.
( http://www.powertheshell.com/isesteroids2-2/ )
quelle