私は最近Windows 10にアップグレードしました。ナイフコマンドを実行すると、非常に奇妙な/面倒な問題に気付いています。シェフ - Powershell出力
私はPowerShellコンソールでこれを実行します。
$nodes = knife node list
$nodes
の値が$null
で、私のすべてのノードではなく$nodes
変数でキャプチャして保存されているのコンソールウィンドウに表示されます。 Powershell ISEから同じコマンドを実行すると、$nodes
の値に自分のノードリストが含まれている場所で期待通りの機能を果たします。
私はPowerShellコンソールセッションはRubyインタプリタからの出力が、PowerShellのISEセッションをキャプチャすることができない場所にすることができます起こっている...すべて同じ結果で、
$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
をいくつかのバリエーションを試してみました!
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
シェフのPowerShellモジュールととせずにしようとしました:Import-Module Chef
同じ結果を。
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
が今ここにキッカーだ...私はちょうどそれを成し遂げるためにISEを使用しますが、このコマンド:
$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;}'
はしていないノードのリストを返す、PowerShellコンソールで完璧に動作します過去14日間にチェックインしました。私がISEで実行すると、(この条件を満たす人が少なくとも10人いるとは限りませんが)単一ノードが返されません。
誰でもまだこのための解決策を打ち出していますか?私のナイフフーはこの刺激によって真剣に邪魔されています。 – NeoAcheron
まだ解決策はありません。問題は出て行くようだ。 Powershell ISE&Consoleで上記のナイフコマンドをもう一度実行できます。何が変わったのか分かりません。 –
変数 'knife node list'を指定せずにコマンドを実行すると、期待どおりに動作しますか?また、次の[gist](https://gist.github.com/Persistent13/afc29d324ef1b6068e1990ea6c52c4d9)を試して、 '$ p.StandardOutput.ReadToEnd()'セクションに期待される出力が含まれているかどうかを確認できますか? – Persistent13