Cincinnati PowerShell User Group (@CincyPowershell) åbner hvert møde med en gennemgang af en cmdlet. I aften er var Get-Date tur. Mange af eksemplerne blev udført med både Get-Date og med et eksempel, der kun understøtter IsLeapYear () – metoden. Dette fik mig til at tænke… (nogle gange en smertefuld ting…) og pæren lyste op over mit hoved. Get-Date returnerer en forekomst af systemet.DateTime klasse, dvs., et objekt, mens er en henvisning til klassen og giver nem adgang til klassens statiske metoder.
System.DateTime
Hvad er der med de to koloner? De er Po .ershells måde at kalde en statisk metode på en klasse. Så går tilbage til IsLeapYear() spørgsmål, det er en statisk metode til DateTime klasse. For at få adgang til det skriver vi ::IsLeapYear(2016).
Get-Date
Get-Date er en cmdlet med mange muligheder, men standardindstillingen er at returnere den aktuelle dato og klokkeslæt. Dvs.:: nu.
den klasse, som et objekt blev oprettet fra, kaldes også dets type. Så hvad er “type” af en dato?,
forekomster / objekter
Hvis Get-Date returnerer en instans, hvordan kunne jeg gøre det med ? To måder, bruge en af de statiske metoder som .Nu eller.I dag, eller oprette et nyt objekt ved hjælp af den nye-objekt cmdlet.
brug af de statiske metoder:
$d = ::nu (eller bare .Nu)
$d = ::i dag (eller bare .I dag)
ved Hjælp af Nye Objekt:
$d = New Object System.,DateTime (eller bare DateTime)
det unikke aspekt ved at bruge nyt objekt med DateTime er, at du får tilbage et objekt med standardværdier for År, Måned, Dag osv. og ikke dagens dato. Det faktiske resultat er “mandag, januar 01, 0001 12: 00: 00 am”.
Hvis du vil oprette en bestemt dato eller klokkeslæt, skal du bruge en af klassens konstruktører. (Se linket DateTime Structure i slutningen af artiklen for detaljer.)
Der er en dejlig skrive op om klasser, forekomster, statik her fra Don Jones.,
og bare for sjov… og kun i Po ?ershell 5.0
hvem har brug for ? Bare kalde de statiske metoder ud af enhver DateTime objekt! Følgende giver alle det samme resultat, idet du husker, at Get-Date tilføjer den ekstra omkostning ved at hente den aktuelle dato og derefter ignorere den.
(Get-Dato)::IsLeapYear(2016)
$d = Get-Dato,
$d::IsLeapYear(2016)$d = ::Nu
$d::IsLeapYear(2016)
Hvad med PowerShell 3.0?
eksemplerne for 5.0 virker ikke med 3.0. Vi skal bede om “klassen”, dvs.det er typen.,
(Get-Date).GetType()::IsLeapYear(2016)
$d = Get-Dato,
$d.GetType()::IsLeapYear(2016)$d = ::Nu
$d.GetType()::IsLeapYear(2016)
Hvad med PowerShell 4.0?
slår mig! (Har ikke en kopi foran mig lige nu.)
Oplev den Statiske Metoder og Egenskaber for et Objekt
Bliv-Medlem har a –Statiske parametre for at vise den statiske metoder og egenskaber for et objekt:
Få-Dato | Bliv-Medlem -Statisk
Mere Sjov Med Statiske Metoder
de Fleste .,Netklasser udsættes ikke i Po .ershell som cmdlets.
for eksempel har du muligvis brug for en ny GUID…
:: ne .guid() returnerer et nyt GUID-objekt.
:: ne .guid().toString () returnerer en ny GUID som en streng.
hvad med noget matematik?
brug for værdien af PI?
::PI (eller bare ::PI) Det handler om 3.14159265358979 i henhold til PowerShell og .Net.
hvad med kvadratroden af 2?
:: s .rt(2) (Lad os se… jeg synes det handler om 1.4142135623731.)
og selvfølgelig sinus på 45 grader:
::sin(0.,785398163397448) (i radianer selvfølgelig) Åh, omkring 0.707106781186547.
og gør lidt konvertering fra grader til radianer:
:: sin( ::pi/180*45)
For mere af hvad matematikklassen kan gøre, se Matematiklinket i slutningen af artiklen. Eller vent på det, brug Po !ershell:
| Get-Member-Static
Bottom line… Hvis c# guys kan gøre det, så kan du også!
så nu ved du… 2016 er et springår! Og mindst et dusin forskellige måder!
(og en hurtig 5 minutters artikel tog over en time…)
ved Hjælp af Statiske Klasser og Metoder
System.Matematik klasse
Leave a Reply