Die@PowerShell-Benutzergruppe (@CincyPowershell) öffnet jedes Meeting mit einer Überprüfung eines Cmdlets. Heute Abend ist war Get-Date an der Reihe. Viele der Beispiele wurden sowohl mit Get-Date als auch mit einem Beispiel durchgeführt, das nur die IsLeapYear () – Methode unterstützt. Das brachte mich zum Nachdenken… (manchmal eine schmerzhafte Sache…) und die Glühbirne leuchtete über meinem Kopf auf. Get-Date gibt eine Instanz des Systems zurück.DateTime-Klasse, d.h., ein Objekt, while ist ein Verweis auf die Klasse und bietet einfachen Zugriff auf die statischen Methoden der Klasse.
System.DateTime
Was ist mit den beiden Doppelpunkten? Sie sind Powershells Weg, um eine statische Methode für eine Klasse aufzurufen. Zurück zur Frage IsLeapYear () ist es eine statische Methode der DateTime Klasse. Um darauf zuzugreifen, schreiben wir:: IsLeapYear (2016).
Get-Date
Get-Date ist ein Cmdlet mit vielen Optionen, aber die Standardoption besteht darin, das aktuelle Datum und die aktuelle Uhrzeit zurückzugeben. Dh:: Jetzt.
Die Klasse, aus der ein Objekt erstellt wurde, wird auch als Typ bezeichnet. Also, was ist der “ Typ “ eines Datums?,
Instanzen / Objekte
Wenn Get-Date eine Instanz zurückgibt ,wie könnte ich das tun? Zwei Möglichkeiten, verwenden Sie eine der statischen Methoden wie .Jetzt oder .Heute, oder erstellen Sie ein neues Objekt mit dem New-Object cmdlet.
die Verwendung der statischen Methoden:
$d = ::Now (oder einfach nur .Jetzt)
$d = ::Heute (oder gerade .Heute)
Mit “ New-Object:
$d = New-Object System.,DateTime (oder nur DateTime)
Der einzigartige Aspekt der Verwendung von New-Object mit DateTime besteht darin, dass Sie ein Objekt mit Standardwerten für Jahr, Monat, Tag usw. zurückerhalten. und nicht das heutige Datum. Das tatsächliche Ergebnis ist „Montag, Januar 01, 0001 12: 00:00 AM“.
Wenn Sie ein bestimmtes Datum oder eine bestimmte Uhrzeit erstellen möchten, verwenden Sie einen der Konstruktoren der Klasse. (Siehe den Link DateTime-Struktur am Ende des Artikels für Details.)
Hier gibt es ein nettes Aufschreiben über Klassen, Instanzen, Statik von Don Jones.,
Und nur zum Spaß… und nur in PowerShell 5.0
Wer braucht ? Rufen Sie einfach die statischen Methoden von jedem DateTime Objekt! Das Folgende führt zu demselben Ergebnis, wobei zu berücksichtigen ist, dass Get-Date den zusätzlichen Aufwand für das Abrufen des aktuellen Datums hinzufügt und es dann ignoriert.
(Get-Date)::IsLeapYear(2016)
$d = Get-Date
$d::IsLeapYear(2016)$d = ::Jetzt
$d::IsLeapYear(2016)
Was ist PowerShell 3.0?
Die Beispiele für 5.0 funktionieren nicht mit 3.0. Wir müssen nach der „Klasse“ fragen, dh es ist Typ.,
(Get-Date).GetType ():: IsLeapYear(2016)
$d = Get-Date
$d. GetType ():: IsLeapYear(2016)$d=:: Now
$d. GetType ():: IsLeapYear(2016)
Was ist mit PowerShell 4.0?
der mich Schlägt! (Habe gerade keine Kopie vor mir.)
Entdecken Sie die statischen Methoden und Eigenschaften eines Objekts
Get-Member hat einen-Static-Parameter, um die statischen Methoden und Eigenschaften eines Objekts anzuzeigen:
Get-Date | Get-Member-Static
Mehr Spaß mit statischen Methoden
Die meisten .,Net-Klassen werden in PowerShell nicht als Cmdlets verfügbar gemacht.
Zum Beispiel benötigen Sie möglicherweise eine neue GUID…
:: NewGuid () gibt ein neues GUID-Objekt zurück.
::NewGuid().toString () gibt eine neue GUID als String zurück.
Wie wäre es mit Mathe?
Benötigen Sie den Wert von PI?
:: PI (oder nur ::PI) Es geht um 3.14159265358979 nach PowerShell und .Net.
Wie wäre es mit der Quadratwurzel von 2?
::Sqrt(2) (mal sehen… ich denke es ist an der 1.4142135623731.)
Und natürlich der Sinus von 45 Grad:
::sin(0.,785398163397448) (natürlich im Bogenmaß) Oh, ungefähr 0.707106781186547.
Und ein wenig von Grad in Bogenmaß konvertieren:
:: sin (:: pi/180*45 )
Weitere Informationen darüber, was die Mathematikklasse tun kann, finden Sie im Math-Link am Ende des Artikels. Oder warten Sie, verwenden Sie PowerShell:
/ Get-Member-Static
Bottom line… wenn die C# – Jungs es können, dann können Sie es auch!
So, jetzt weißt du… 2016 ist ein Schaltjahr! Und mindestens ein Dutzend verschiedene Wege!
(und ein kurzer 5-minütiger Artikel dauerte über eine Stunde…)
Mit statischen Klassen und Methoden
System.Mathematik Klasse
Leave a Reply