Ich habe vor kurzem auf Windows 10 aktualisiert und ich bemerke ein sehr seltsames/nerviges Problem beim Ausführen von Messerbefehlen.Chef - Powershell Ausgabe
Wenn ich laufen diese in der Powershell-Konsole:
$nodes = knife node list
Der Wert von $nodes
ist $null
und alle meine Knoten im Konsolenfenster, anstatt dass sie gefangen genommen und in der $nodes
Variable gespeichert aufgeführt. Wenn ich denselben Befehl von Powershell ISE aus ausführen, funktioniert es wie erwartet, wo die Werte $nodes
meine Knotenliste enthält.
Ich habe mehrere Varianten ausprobiert, die alle mit dem gleichen Ergebnis ...
$nodes = & knife node list
$nodes = Invoke-Expression -Command 'knife node list'
$nodes = $(Invoke-Expression -Command 'knife node list')
$nodes = & knife node list 2>&1
$nodes = & knife node list 3>&1
$nodes = & knife node list 4>&1
Was auf, wo meine Powershell-Konsole-Sitzung wird die Ausgabe von den Ruby-Interpreter aber Powershell ISE-Sitzung nicht erfassen kann !?
Name Value
---- -----
PSVersion 5.0.10586.122
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.10586.122
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Versuchte mit und ohne Koch Powermodul: Import-Module Chef
gleichen Ergebnis.
PS C:\Users\nhudacin> chef -v
Chef Development Kit Version: 0.12.0
chef-client version: 12.8.1
berks version: 4.3.0
kitchen version: 1.6.0
Jetzt ist hier der Kicker ... Ich würde ISE nur verwenden, um es getan, aber dieser Befehl:
$nodes = knife exec -E 'b = Time.now.to_i;a = (b - (336*60*60)).to_i;printf "%-40s %-23s\n", "Name", "Last Check-In";search(:node, "ohai_time:[0 TO #{a}]") { |n| checkIn = Time.at(n["ohai_time"]).strftime("%F %R"); printf "%-40s %-23s\n", n.name, checkIn;}'
funktioniert perfekt in Powershell-Konsole, eine Liste von Knoten zurückkehrt, die nicht hat innerhalb der letzten 14 Tage eingecheckt. Wenn ich es in ISE ausführe, gibt es keinen einzigen Knoten zurück (obwohl ich weiß, dass es mindestens 10 gibt, die dieses Kriterium erfüllen).
Hat jemand kommen noch mit einer Lösung für dieses auf? Mein Messer-Fu wird durch diese Irritation ernsthaft behindert. – NeoAcheron
Noch keine Lösung. Das Problem scheint zu kommen und zu gehen. Ich kann die obigen Messerbefehle in Powershell ISE & Console erneut ausführen. Keine Ahnung was sich geändert hat. –
Wenn Sie den Befehl ohne die Variable Messerknotenliste ausführen, funktioniert es wie erwartet? Könnten Sie auch Folgendes versuchen [gist] (https://gist.github.com/Persistent13/afc29d324ef1b6068e1990ea6c52c4d9) und sehen, ob der Abschnitt '$ p.StandardOutput.ReadToEnd()' auch die erwartete Ausgabe enthält? – Persistent13