Chef - Powershell 输出
Chef - Powershell Output
我最近升级到 Windows 10,当 运行ning knife 命令时,我注意到一个非常 strange/annoying 的问题。
当我在 powershell 控制台中 运行 时:
$nodes = knife node list
$nodes
的值为 $null
并且我的所有节点都列在控制台 window 中,而不是被捕获并存储在 $nodes
变量中。当我 运行 来自 Powershell ISE 的相同命令时,它按预期运行,其中 $nodes
的值包含我的节点列表。
我尝试了几种变体,结果都是一样的...
$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
我的 powershell 控制台会话无法捕获来自 ruby 解释器但 powershell ise 会话可以的输出,这是怎么回事!?
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
尝试使用和不使用 chef 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 控制台中完美运行,return列出过去 14 天内未签入的节点。当我在 ISE 中 运行 它时,它不是 return 单个节点(即使我知道至少有 10 个节点满足此条件)。
尝试删除作为 ChefDK 的一部分安装的 chef 模块。这就是为我解决这个问题的原因。
Remove-Module chef
我最近升级到 Windows 10,当 运行ning knife 命令时,我注意到一个非常 strange/annoying 的问题。
当我在 powershell 控制台中 运行 时:
$nodes = knife node list
$nodes
的值为 $null
并且我的所有节点都列在控制台 window 中,而不是被捕获并存储在 $nodes
变量中。当我 运行 来自 Powershell ISE 的相同命令时,它按预期运行,其中 $nodes
的值包含我的节点列表。
我尝试了几种变体,结果都是一样的...
$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
我的 powershell 控制台会话无法捕获来自 ruby 解释器但 powershell ise 会话可以的输出,这是怎么回事!?
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
尝试使用和不使用 chef 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 控制台中完美运行,return列出过去 14 天内未签入的节点。当我在 ISE 中 运行 它时,它不是 return 单个节点(即使我知道至少有 10 个节点满足此条件)。
尝试删除作为 ChefDK 的一部分安装的 chef 模块。这就是为我解决这个问题的原因。
Remove-Module chef