2016-12-01 7 views
2
Get-WmiObject -Class win32_logicaldisk -Filter 'DeviceID="C:"' 

tut, was ich will,Wie kann die Variable in der Powershell erweitert werden?

$var="C:" 
Get-WmiObject -Class win32_logicaldisk -Filter 'DeviceID="{$var}"' 

nichts tut. Ich habe versucht, die Anführungszeichen zu ändern, Strings und andere 1000 Dinge zu verketten, aber sie haben nicht funktioniert. Warum funktioniert das obige Beispiel nicht und was würde funktionieren?

+0

'-Filter "DeviceID = '$ var'"' (die Anführungszeichen um die Filterzeichenfolge bemerken) –

+0

@ MathiasR.Jessen ein s erwähnt, ich habe versucht, die Zitate umzukehren, es funktioniert nicht – Andrei

+1

Haben Sie es tatsächlich versucht? In Ihrem Beispiel haben Sie '{}' um die Variable gelegt, wodurch die Abfrage sicher nichts zurückgibt. –

Antwort

3

Wenn Sie ein Zeichenfolgenliteral mit (einfache Anführungszeichen) beginnen, erstellen Sie eine wortgetreue Zeichenfolge, dh jedes Zeichen in der Zeichenfolge wird wörtlich interpretiert und variable Verweise und Ausdrücke werden nicht erweitert!

Verwenden ", wenn Sie die Variable erweitert werden sollen:

$var = 'C:' 
Get-WmiObject -Class win32_logicaldisk -Filter "DeviceID='$var'" 

Wenn Variablennamen seltsame Zeichen haben, oder von einem Wortzeichen gefolgt werden, können Sie die Variablennamen mit geschweiften Klammern qualifizieren {} sofort nach der $:

$var = 'C:' 
Get-WmiObject -Class win32_logicaldisk -Filter "DeviceID='${var}'" 
Verwandte Themen