PowerShell 技能连载 - 获取 MAC 制造商列表
Prateek Singh 贡献了一个干净的,CSV 格式的的 MAC 厂商列表。这个列表可以在他的博客 Get-MACVendor using Powershell – Geekeefy 找到。在通过 MAC 地址确定网络设备的厂商时,这个列表十分有用。
您可以用 PowerShell 方便地将它下载到计算机中:
1 | #requires -Version 3.0 |
Prateek Singh 贡献了一个干净的,CSV 格式的的 MAC 厂商列表。这个列表可以在他的博客 Get-MACVendor using Powershell – Geekeefy 找到。在通过 MAC 地址确定网络设备的厂商时,这个列表十分有用。
您可以用 PowerShell 方便地将它下载到计算机中:
1 | #requires -Version 3.0 |
有些时候您可能需要创建非表格形式的,个性化的报表。
对于这种情况, PowerShell 可以连接到 Excel 的对象模型。通过这种方法,您可以操作独立的单元格,读写它们的内容,甚至对它们进行格式化。这给你最大的灵活度。然而,它的缺点是需要大量的编码,因为您需要人工操作每一个单元格。并且,通过 .NET 操作 COM 对象相对比较慢。
以下是起步的代码。它展示了如何连接到 Excel,存取独立的单元格,并应用格式设置:
1 | #requires -Version 2.0 |
当从 CSV 中导入数据到 Excel 时,您无法指定格式,包括字体和颜色等。从 HTML 数据中导入 Excel 则可以包含格式。以下是一个演示创建一个带格式的彩色 Excel 报告是多么容易的例子,假设报表中包含一张表格:
1 | #requires -Version 2.0 |
用 PowerShell 创建一个最简单的 Excel 报表只需要几行代码:将结果导出为 CSV 文件,然后将它作为参数启动 Excel:
1 | #requires -Version 2.0 |
有一些需要注意的事项:
-UseCulture
来使用注册表中设置的分隔符即可。在前一个技能中我们开始将 PowerShell 的结果转换为 HTML 报告。报告内容目前一切正常。要使人加深印象,结果需要做一些设计改进。以下是我们之前的成果:
1 | #requires -Version 2.0 |
要改进它的样式,可以对报告应用 HTML CSS 样式(层叠样式表)。CSS 决定了报告中所有 HTML 元素的样式细节。您可以在 -Head
参数中插入一个 CSS 样式表:
1 | #requires -Version 2.0 |
应用一个样式表之后,报告会一下子变得清新现代起来。
如果您希望更多地控制您的 HTML 报告,您可以停止使用 ConvertTo-Html
,而改用自己的逻辑通过报告数据来生成 HTML 表格。不过这超出了我们快速技能的范畴。
在之前的技能中我们开始将 PowerShell 结果转为 HTML 报告。现在报告的结果接近完成了。我们只需要对某些列标题进行润色和重命名即可。这是上一次的脚本:
1 | #requires -Version 2.0 |
要重命名列标题,请使用之前同样的策略将非字符串内容转换为字符串内容:使用计算属性。所以如果您想将 TimeGenerated
重命名为 Time
,那么可以这样做:
1 | #requires -Version 2.0 |
在前一个技能中我们开始将 PowerShell 的结果转换为 HTML 报告。现在,这份报告需要一些头部和尾部。以下是我们上一个版本的代码:
1 | #requires -Version 2.0 |
要在数据前后加入内容,请使用 -PreContent
和 -PostContent
参数。比如在头部加入机器名,在尾部加入版权信息,请使用以下代码:
1 | #requires -Version 2.0 |
在前一个技能中我们开始使用 PowerShell 来将结果转换为 HTML 报告。目前,我们已经生成了报告,但报告的界面看起来很丑。我们从这里开始:
1 | #requires -Version 2.0 |
当您运行这段代码时,报告显示有一些属性包含非字符串内容。请看 “ReplacementStrings” 列:报告中含有 string[]
,也就是字符串数组类型,而不是真实数据。
要修复这个问题,请使用计算属性,并且将内容转换为可读的文本:
1 | #requires -Version 2.0 |
如您所见,该属性现在能正常显示它的内容了。
要如何将属性内容转换成可读的文本依赖于您的选择。如果将属性通过管道传给 Out-String
,将把转换工作留给 PowerShell 自动完成。如果您希望更精细的控制,而且某个属性包含一个数组,您也可以使用 -join
操作符来连接数组元素。通过这种方式,您可以选择使用哪种分隔符来分割数组元素。以下例子使用逗号分隔:
1 | #requires -Version 2.0 |
要将 PowerShell 的处理结果输出为 HTML 报表,只需要将结果用管道传给 ConvertTo-Html
,然后将结果保存到文件。所以它最基本的使用形式类似如下。它创建一个包含过去 48 小时发生的所有事件系统错误的报表:
1 | #requires -Version 2.0 |
不过,输出的报告可能有点丑,因为包含了许多无用的信息。所以美化的第一步是选择报告中需要的属性。只需要在代码中加入 Select-Object
:
1 | #requires -Version 2.0 |
在 Windows 10 中,当您打开一个 PowerShell 控制体态,只需要按住 CTRL
+ SHIFT
键,然后滚动鼠标滚轮,就可以改变控制台的背景。
要实现这样的功能,请打开控制台的属性窗口,“使用旧版控制台”选项必须勾选。您可以单击控制台标题栏左上角的应用程序图标,然后选择“属性”来打开控制台属性。