Il gruppo di utenti di Cincinnati PowerShell (@CincyPowershell) apre ogni riunione con una revisione di un cmdlet. Stasera è stato il turno di Get-Data. Molti degli esempi sono stati eseguiti sia con Get-Date che con un esempio che mostra che supporta solo il metodo IsLeapYear (). Questo mi ha fatto pensare… (a volte una cosa dolorosa…) e la lampadina si è accesa sopra la mia testa. Get-Date restituisce un’istanza del Sistema.Classe DateTime, cioè, un oggetto, while è un riferimento alla classe e fornisce un facile accesso ai metodi statici della classe.
Sistema.DateTime
Cosa c’è con i due due punti? Sono il modo in cui PowerShell chiama un metodo statico su una classe. Quindi, tornando alla domanda IsLeapYear (), è un metodo statico della classe DateTime. Per accedervi scriviamo:: IsLeapYear (2016).
Get-Date
Get-Date è un cmdlet con molte opzioni, ma l’opzione predefinita è quella di restituire la data e l’ora correnti. Cioè:: Ora.
La classe da cui è stato creato un oggetto è anche chiamata tipo. Allora, qual è il “tipo” di una data?,
Istanze/Oggetti
Se Get-Date restituisce un’istanza, come potrei farlo con ? Due modi, utilizzare uno dei metodi statici come .Ora o .Oggi, o creare un nuovo oggetto utilizzando il cmdlet New-Object.
Utilizzando i metodi statici:
d d = ::Now (o solo .Ora)
d d=:: Oggi (o solo .Oggi)
Utilizzando New-Object:
System d = Sistema New-Object.,DateTime (o solo DateTime)
L’aspetto unico dell’utilizzo di New-Object con DateTime è che si ottiene un oggetto con valori predefiniti per anno, mese, giorno, ecc. e non la data di oggi. Il risultato effettivo è “Lunedì, gennaio 01, 0001 12: 00: 00 AM”.
Se si desidera creare una data o un’ora particolare, utilizzare uno dei costruttori della classe. (Vedere il collegamento Struttura DateTime alla fine dell’articolo per i dettagli.)
C’è un bel articolo su classi, istanze, statica qui da Don Jones.,
E solo per divertimento… e solo in PowerShell 5.0
Chi ha bisogno ? Basta chiamare i metodi statici da qualsiasi oggetto DateTime! Quanto segue produce lo stesso risultato, tenendo presente che Get-Date aggiunge l’overhead aggiuntivo di recuperare la data corrente e quindi ignorarla.
(Get-Data)::Anno.bisestile(2016)
$d = Get-Date
$d::Anno.bisestile(2016)$d = ::Ora
$d::Anno.bisestile(2016)
Cosa su PowerShell 3.0?
Gli esempi per 5.0 non funzionano con 3.0. Dobbiamo chiedere la “classe”, cioè è Tipo.,
(Get-Date).GetType()::IsLeapYear(2016)
d d = Get-Date
d d.GetType()::IsLeapYear(2016)Now d = ::Ora
d d.GetType()::IsLeapYear(2016)
Che dire di PowerShell 4.0?
Mi batte! (Non ho una copia di fronte a me in questo momento.)
Scopri i Metodi Statici e le Proprietà di un Oggetto
Get-Member ha un Statici parametro per visualizzare le proprietà e metodi statici di un oggetto:
Get-Date | Get-Member -Static
Più Divertimento Con i Metodi Statici
la Maggior parte .,Le classi net non sono esposte in PowerShell come cmdlet.
Ad esempio, potrebbe essere necessario un nuovo GUID <
:: NewGuid() restituirà un nuovo oggetto GUID.
:: NewGuid ().toString () restituirà un nuovo GUID come stringa.
Che ne dici di un po ‘ di matematica?
Hai bisogno del valore di PI?
:: PI (o semplicemente ::PI) Si tratta di 3.14159265358979 secondo PowerShell e .Net.
Che ne dici della radice quadrata di 2?
::Sqrt(2) (Vediamo think penso che si tratti di 1.4142135623731.)
E, naturalmente, il Seno di 45 gradi:
:: sin (0.,785398163397448) (in radianti naturalmente) Oh, circa 0.707106781186547.
E facendo un po ‘ di conversione da gradi a radianti:
:: sin( ::pi/180*45)
Per ulteriori informazioni su ciò che la classe di matematica può fare, vedere il collegamento Matematico alla fine dell’articolo. Oppure, aspettalo, usa PowerShell: <| p>
/Get-Member-Static
Bottom line if se i ragazzi c# possono farlo, allora puoi farlo anche tu!
Così ora sai… 2016 è un anno bisestile! E almeno una dozzina di modi diversi!
(e un rapido articolo di 5 minuti ha richiesto più di un’ora System)
Usando classi e metodi statici
Sistema.Classe Matematica
Leave a Reply