2017-05-21 2 views
-1

enter image description hereKann jemand den Grund dafür erklären?

Dies ist mein Code sowohl $test und $strstring sind Arrays mit Strings gefüllt (wie Sie aus dem Screenshot sehen), aber das Programm zeigt Object[] für $test und String[] für $strlist, aber die Saiten sind identisch, so was ist die Ursache für "falsches" Ergebnis?

$list = Get-WmiObject -Class Win32_Product | ft -HideTableHeaders Name | 
     Out-String 
$list = $list.Split("`r") 
$test = gc C:\Windows\System32\test.txt 

wo $test über $list | Set-Content test.txt erhalten wird.

+0

die Ausgabe von 'Ist '- {0} -' -f $ test [1]' und ' '- {0} -' -f $ strlist [1] 'identisch? Ist die Ausgabe von '[char []] $ test [1] | % {[int] $ _} 'und' [char []] $ strlist [1] | % {[int] $ _} 'identisch? –

+0

Ja und ja, aber der GetHashed Code ist anders für sie (ich googelte ein bisschen und fand heraus, dass für gleiche String-Werte ihre Hash-Codes das gleiche Recht haben müssen?) – Raf

+0

wahrscheinlich ist eines der Zeichen nicht das gleiche ist das andere (sieht der hoooman genau gleich aus)? – 4c74356b41

Antwort

0

Die Art und Weise, wie Sie dieses Objekt erstellen, ist nicht korrekt, Sie verlassen sich auf die Ausgabe von format-table und teilen dann durch `r, wodurch ein Zeichen entfernt wird. Das bedeutet, dass zwei Strings nicht gleich sind. Siehe Länge.

Ein Weg, es zu tun ist:

$list= (get-wmiobject -Class win32_product).name 
$list | set-content d:\temp\test.txt 
$test= gc d:\temp\test.txt 

$list[0] -like $test[0] 
+0

Vielen Dank – Raf

Verwandte Themen