Ho fatto un errore di battitura più sfortunato mi costa un po 'di tempo prezioso:Come funziona la proprietà Count in PowerShell?
$errors.Count
Questo restituisce "0
", anche se ci sono errori, perché il nome della variabile deve essere singolare. Questo fa lavoro:
$error.clear() # To ensure a correct repro
Copy-Item asdf fdsa # Will show an error
$error.Count # Will output "1"
Tuttavia, ora voglio sapere perché mi ha dato $errors.Count
nulla, e perché mi ha dato "0
". Così sono andato a fare qualche test, ed ha ottenuto i seguenti risultati:
$asdf.Count # Will output "0"
$nrOfEinsteinsInSpace.Count # Will output "0"
$a = 0; $a.Count; # Will output "1"
$b = 2; $a.Count; # Will output "1"
$x = 1,2,3; $x.Count; # Will output "3"
e la raccolta ancora più dati per essere in grado di fare una domanda sensata qui ho fatto:
$true.Count # Will output "1"
$false.Count # Will output "1"
Così abbiamo la seguenti casi:
- variabili Array (simili), dove
.Count
stamperà il numero di elementi. - Variabili inesistenti, dove
.Count
emetterà "0". - Variabili dichiarate, dove
.Count
emetterà "1". - Variabili integrate, dove
.Count
emetterà "1".
I casi 2, 3 e 4 non hanno alcun senso per me (ancora). Che cosa sta succedendo qui? Dove è documentato? Come funziona la proprietà .Count
?
Wow, una risposta piuttosto diversa rispetto alle altre due da @DavidBrabant e Paul. Apprezzo entrambi gli sforzi, non sono sicuro di essere adeguatamente qualificato per decidere quale risposta accettare. Dovrò verificare il lavoro domani se vedo una differenza simile tra V2 e V3. Grazie per il tuo tempo! – Jeroen
Sono lo sviluppatore del team PowerShell che ha implementato questo, ignorando così i ricordi difettosi, la mia risposta è autorevole come si può ottenere. –
Attenzione che la modalità ** strict ** genera ancora un errore come nota Jason! Quello mi ha fatto grattarmi la testa ... –