gpt4 book ai didi

powershell - 脚本完成后有两个变量,但是当我通过管道传输到 SELECT 对象时,只有第一个将数据返回到控制台

转载 作者:行者123 更新时间:2023-12-05 02:39:13 25 4
gpt4 key购买 nike

我正在尝试使用 WMI 查询多个服务器,但我并不总是可以访问这些服务器。

代码如下。 las,它向控制台返回“访问被拒绝”,但我似乎无法摆脱它。好吧。

但是,我正在捕获我无法连接到的服务器,以便我可以告诉其他人查看它们或请求访问。

但是当我运行代码时,它只返回第一个服务器列表;即使 $failed_servers 有值,也不会返回任何内容。如果我告诉两者都通过管道传输到 ogv,则会弹出两个窗口。

为什么“$variable|select”都不起作用?如果我删除 $failed_servers 上的选择,它就会显示出来,尽管它紧挨着成功的服务器。这还可以,但不是很好。

$list = ("servera","serverb","serverc")
$failed_servers = @()
$final = foreach ($server_instance in $list)
{
$errors=@()
gwmi -query "select * from win32_service where name like '%SQLSERVER%'" -cn $server_instance -ErrorVariable +errors -ErrorAction SilentlyContinue
if ($errors.Count -gt 0) {$failed_servers += $server_instance
}
}

$final|select pscomputername, name, startmode, state |where {$_.pscomputername -ne $null}

$failed_servers |select @{N='Failed Servers'; E={$_}}

最佳答案

您遇到的只是显示问题:

  • 您的 Select-Object调用生成具有 4 或更少属性 的输出对象,其类型没有与之关联的显式格式化数据(如 Get-FormatData 所报告)。

  • 这会导致 PowerShell 的显示输出 formatting system通过 Format-Table 隐式渲染它们cmdlet。

  • Format-Table 使用的显示列是根据第一个对象的属性锁定 Format-Table 接收。

  • 因此,您的第二个 Select-Object 调用,其输出对象不共享任何属性第一个有效地产生无可见输出 - 但是,对象被发送到成功输出流并且可用于程序化处理

一个简单的演示:

& {
# This locks in Month and Year as the display columns of the output table.
Get-Date | Select-Object Month, Year
# This command's output will effectively be invisible,
# because the property set Name, Attributes does not overlap with
# Month, Year
Get-Item \ | Select-Object Name, Attributes
}

输出看起来像这样——注意第二条语句的输出实际上是不可见的(除了一个额外的空行):

Month Year
----- ----
9 2021


请注意,该问题甚至会影响输出不同类型对象(其类型没有关联的格式化数据)的单个语句;例如:
(Get-Date | Select-Object Year),(Get-Item\| Select-Object Name)


解决方法:

  • 应用|上面命令的 Format-List 使所有对象可见,但显然改变了显示格式。

  • Intra-script 您可以通过管道将每个 Select-Object 管道传输到 Out-Host 以强制即时、特定于管道的格式,但是 - 考虑到结果直接发送到主机而不是成功输出流 - 这种技术排除了进一步的程序化处理


future 可能的改进:

GitHub issue #7871如果输出对象实际上变得不可见,建议至少发出一个警告

关于powershell - 脚本完成后有两个变量,但是当我通过管道传输到 SELECT 对象时,只有第一个将数据返回到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69200863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com