Warum funktioniert die $ hash.key-Syntax nicht innerhalb der ExpandString-Methode?

8

Das folgende PowerShell-Skript veranschaulicht das Problem:

%Vor%

Wer weiß, warum die $hash.key -Syntax überall, aber innerhalb einer expliziten Erweiterung funktioniert? Kann das behoben werden, oder muss ich es saugen und mit der $hash[''key''] Syntax leben?

    
Myrddin Emrys 23.07.2012, 02:30
quelle

3 Antworten

4

Ich benutze diese Methode, da dieser Fehler in v4 (nicht in v5) existiert

%Vor%

Verwendung für Ihr Beispiel:

%Vor%     
majkinetor 12.03.2015 09:04
quelle
1

Die ExpandString API ist nicht genau für die Verwendung mit PowerShell-Skripten gedacht, sondern wurde für C # -Code hinzugefügt. Es ist immer noch ein Fehler, dass Ihr Beispiel nicht funktioniert (und ich denke, es wurde in V4 behoben), aber es bedeutet, dass es eine Problemumgehung gibt - eine, die ich für den allgemeinen Gebrauch empfehle.

Doppelklicken Sie Strings effektiv (aber nicht wörtlich), rufen Sie ExpandString auf. Also sollte folgendes gleich sein:

%Vor%     
Jason Shirk 23.09.2013 03:09
quelle
1

Ich habe versucht, Text zu speichern, der den Benutzer in einer Textdatei auffordert. Ich wollte Variablen in der Textdatei haben können, die von meinem Skript erweitert werden.

Meine Einstellungen sind in einem PSCustomObject namens $ profile gespeichert und in meinem Text versuchte ich so etwas wie:

%Vor%

und dann von meinem Skript habe ich versucht zu tun:

%Vor%

was mich natürlich mit dem Fehler

zurückließ
  

Ausnahme, die "ExpandString" mit "1" Argument (en) aufruft: "Objekt   Referenz nicht auf eine Instanz eines Objekts gesetzt. "

Endlich fand ich heraus, dass ich nur die PSCustomObject-Werte speichern wollte, die ich in normalen alten Variablen haben wollte, ändere die Textdatei, um diese anstelle der object.property-Version zu verwenden, und alles funktionierte gut:

%Vor%

Und im Text habe ich mich in

geändert
  

Hallo $ First $ Last !!!

    
Mike Cheel 05.12.2014 15:45
quelle