当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 7 控制台网格视图

作者:精品下载站 日期:2024-12-14 08:05:53 浏览:14 分类:玩电脑

PowerShell 7 控制台网格视图


昨晚,在研究三角 PowerShell 用户组的演示中,我简要演示了一个名为 Out-ConsoleGridView 的 PowerShell 7 命令。此命令不会在 Windows PowerShell 中运行。如果您还没有考虑过运行 PowerShell 7,也许在了解有关此工具的更多信息后您会重新考虑。

大家都知道 Out-Gridview,它也适用于 PowerShell 7 的更高版本。Out-ConsoleGridview 的别名为 ocgv,它将采用管道输入并将其显示为控制台中的表格。您可以像使用 Out-Gridview 一样过滤和选择对象,但没有单独的显示。输出保留在您的控制台会话中。

您需要在 PowerShell 7 会话中从 PowerShell 库安装模块才能获取此命令。

install-module microsoft.powershell.consoleguitools

该命令非常简单易用。

get-process | Out-ConsoleGridView

[玩转系统] PowerShell 7 控制台网格视图

该 cmdlet 允许您默认选择多个项目并将它们自动传递到管道。 Out-ConsoleGridView 也可以跨平台工作。

[玩转系统] PowerShell 7 控制台网格视图

需要注意的一件事是 cmdlet 从托管应用程序获取其颜色提示。如果您在 Windows 终端内运行 PowerShell,根据您使用的配色方案,您可能会获得不同的体验。

[玩转系统] PowerShell 7 控制台网格视图

据我所知,背景颜色是基于主机决定的“蓝色”。状态栏为“亮黑色”,选择突出显示为“青色”。在 PowerShell 7 中,您可以使用 $PSStyle 查看这些值。

[玩转系统] PowerShell 7 控制台网格视图

根据您的配色方案,您将在 Windows 终端中看到这些值的不同呈现。无法更改 Out-ConsoleGridView 本身使用的配色方案。尽管这是 cmdlet 的 GitHub 存储库中的一个未决问题。您能做的最好的事情就是编辑 Windows 终端 settings.json 文件中配置文件颜色方案的值。

[玩转系统] PowerShell 7 控制台网格视图

与 Out-Gridview 一样,您可以对输出执行额外的过滤。当心。过滤将每个行项目视为一个字符串。过滤无非就是像“co”这样的模式匹配。不过,您可以使用奇特的正则表达式模式。

[玩转系统] PowerShell 7 控制台网格视图

正如我所提到的,您可以使用空格键选择项目,然后按 Enter 键将对象传回 PowerShell 管道。这提供了一些有趣的可能性。这是一个例子。

$events = Import-Csv C:\scripts\company.csv | 
Out-ConsoleGridView -title "Select computers to check" | 
Foreach-Object -Parallel {
    Get-Winevent -LogName System -max 500 -ComputerName $_.computername
}

我将从 CSV 文件导入数据并将其通过管道传输到 Out-ConsoleGridView。

[玩转系统] PowerShell 7 控制台网格视图

选定的对象将传递回管道,我在管道中并行运行 Get-Winevent 命令。我的演示仅使用两台计算机并获取少量事件日志记录。但你可以轻松地扩展它。

然后我可以获取结果并在 Out-ConsoleGridview 中查看它们。

$events | Select-Object -Property Machinename,TimeCreated,LevelDisplayName,Message | 
Out-ConsoleGridView  | Format-List

[玩转系统] PowerShell 7 控制台网格视图

我正在使用过滤器功能来获取错误。我将选择这两个条目并按 Enter 键,这会将结果发送到 Format-List,从而使事件日志记录更易于阅读。

[玩转系统] PowerShell 7 控制台网格视图

还有一个关于添加选择列表中所有项目的方法的问题。目前,您必须手动选择每一项。

我经常使用这个命令。 Out-Gridview 的缺点之一是我无法控制大小,并且通常在我的 44 英寸显示器上,窗口几乎拉伸到显示器的整个宽度。我喜欢将网格视图限制在我的控制台窗口中。

最后要提到的是,您不能在远程会话中使用 Out-ConsoleGridview。但这并不妨碍您使用远程处理并在桌面上运行 Out-ConsoleGridview。

$svc = "dns","adws","kdc","w32time","netlogon"
Invoke-Command { Get-Service $using:svc } -computername dom1,dom2 |
Sort-Object Name | Select-Object Status,Name,DisplayName,StartType,PSComputername | Out-ConsoleGridView -Title "Domain Controller Services" -OutputMode None

[玩转系统] PowerShell 7 控制台网格视图

当然,我鼓励您尝试一下这个命令并亲自尝试一下。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯