De Cincinnati PowerShell User Group (@CincyPowershell) opent elke vergadering met een recensie van een cmdlet. Vanavond was de Get-Date aan de beurt. Veel van de voorbeelden werden gedaan met zowel Get-Date en, met een voorbeeld dat laat zien dat alleen de IsLeapYear() methode ondersteunt. Dit zette me aan het denken… (soms een pijnlijk iets…) en de gloeilamp lichtte boven mijn hoofd. Get-Date geeft een instantie van het systeem terug.DateTime klasse, d.w.z., een object, terwijl is een verwijzing naar de klasse en biedt gemakkelijke toegang tot de klasse statische methoden.
systeem.DateTime
Wat is er met de twee dubbele punten? Ze zijn PowerShell ‘ s manier om een statische methode op een klasse aan te roepen. Dus om terug te gaan naar de IsLeapYear() vraag, het is een statische methode van de DateTime klasse. Om toegang te krijgen schrijven we:: IsLeapYear (2016).
Get-Date
Get-Date is een cmdlet met veel opties, maar de standaardoptie is om de huidige datum en tijd terug te geven. Dat wil zeggen: Nu.
De klasse waaruit een object is gemaakt wordt ook wel het type genoemd. Wat is het “type” van een date?,
instanties / objecten
als Get-Date een instantie retourneert, hoe kan ik dat dan doen ? Twee manieren, gebruik een van de statische methoden zoals .Nu of .Vandaag, of maak een nieuw object met behulp van de cmdlet nieuw-Object.
met behulp van de statische methoden:
$d = ::Nu (of gewoon .Nu)
$d = ::vandaag (of gewoon .Today)
met behulp van nieuw-Object:
$d = Nieuw-Objectsysteem.,DateTime (of gewoon DateTime)
Het unieke aspect van het gebruik van nieuw-Object met DateTime is dat je een object terug krijgt met standaardwaarden voor Jaar, Maand, Dag, enz. en niet vandaag. Het werkelijke resultaat is “maandag 01 januari 0001 00:00:00 AM”.
Als u een bepaalde datum of tijd wilt maken, gebruik dan een van de constructors van de klasse. (Zie de DateTime structuur link aan het einde van het artikel voor details.)
Er is een mooie schrijf-up over klassen, instanties, statics hier van Don Jones.,
en gewoon voor de lol… en alleen in PowerShell 5.0
wie heeft dat nodig ? Roep gewoon de statische methoden uit van elk DateTime object! De volgende produceren allemaal hetzelfde resultaat, rekening houdend met dat Get-Date voegt de extra overhead van het ophalen van de huidige datum, en vervolgens negeren.
(Get-Date):: IsLeapYear (2016)
$d = Get-Date
$d::IsLeapYear(2016)$d = ::Nu
$d::IsLeapYear(2016)
hoe zit het met PowerShell 3.0?
De voorbeelden voor 5.0 werken niet met 3.0. We moeten vragen naar de “klasse”, dat wil zeggen het Type.,
(Get-Date).GetType ():: IsLeapYear (2016)
$d = Get-Date
$d.GetType ():: IsLeapYear (2016)$d = ::Nu
$d.GetType ():: IsLeapYear (2016)
hoe zit het met PowerShell 4.0?
slaat me! (Heb nu geen kopie voor me.)
ontdek de statische methoden en eigenschappen van een Object
Get-Member heeft een-statische parameter om de statische methoden en eigenschappen van een object weer te geven:
Get-Date | Get-Member-Static
meer plezier met statische methoden
meest .,Net-klassen worden in PowerShell niet als cmdlets weergegeven.
u hebt bijvoorbeeld een nieuwe GUID nodig …
::NewGuid() geeft een nieuw GUID-object terug.
:: NewGuid ().toString () retourneert een nieuwe GUID als een string.
wat dacht je van wat wiskunde?
heeft u de waarde van PI nodig?
:: PI (of gewoon ::PI) het is ongeveer 3,14159265358979 volgens PowerShell en .Net.
hoe zit het met de vierkantswortel van 2?
:: Sqrt (2) (Laten we eens kijken… ik denk dat het ongeveer 1.4142135623731.)
en natuurlijk de sinus van 45 graden:
::sin(0.,785398163397448) (in radialen natuurlijk) Oh, ongeveer 0.707106781186547.
en een beetje converteren van graden naar radialen:
::sin( ::pi/180*45)
voor meer van wat de wiskundeles kan doen, zie de Wiskundelink aan het einde van het artikel. Of, wacht even, gebruik PowerShell:<| p>
/ Get-Member-Static
Bottom line … als de C # jongens het kunnen, dan kan jij het ook!
dus nu weet je… 2016 is een schrikkeljaar! En op zijn minst een dozijn verschillende manieren!
(en een snel artikel van 5 minuten duurde meer dan een uur…)
met behulp van statische klassen en methoden
systeem.Wiskundeles
Leave a Reply