Powershell 学习: 管道: 连接命令

Powershell 通过管道(pipeline),把命令互相连接起来,管道把一个命令的输出作为另一个命令的输入,以此联合起来运行。

1. 输出结果到 CSV 文件

    如: get-process | Export-Csv procs.csv

该命令会将电脑的进程信息保存到一个名为 procs.csv 的文件中。

找到该文件并用记事本打开,第一行是以# 开头的内容,代表文件中包含的信息类型。

第二行是列名,我们会发现列有很多,比我们在控制台中看到的多了很多列,是因为内容太多,shell不可能把所有的信息都显示在控制台,它使用微软提供的配置文件,只将一些重要的信息显示出来。

如果你需要将到处的信息再在控制台中显示出来,只需要使用: Import-Csv procs.csv 即可

2, 输出结果到XML文件

如: Get-Process | Export-Clixml procsxml.xml

此用法与导入到csv文件类似。

扫描二维码关注公众号,回复: 3018606 查看本文章

3. 对比文件

Compare-object 命令 (alias: diff)用于把两个结果集组合在一起进行对比。例如,你在两台不同的机器上运行了get-process 命令,你可以把参照计算机的结果放在左边(-ReferenceObject),右边放差异计算机(-DifferentObject),运行命令即可查看他们的差异。

例如,diff -ReferenceObject (Import-Clixml .\JiajiaLogXML.xml) -DifferenceObject .\ShawLog.xml

我将我本机的部分应用程序日志(ShawLog.xml)来和同事的(JiajiaLogXML.xml)进行对比, 查看他们之间的差异,括号子啊powershell中用于控制执行顺序,上边的例子中,强行将Import命令先与diff命令执行,然后再将两者结果进行对比,

4. 管道传输到文件或打印机

通常情况下,powershell 会将输出的东西显示在我们的电脑屏幕上,但是其实我们可以修改其输出的位置,你可以将输出保存在文件中,如上的 csv, xml 等, 当然,你也可以直接将其打印出来。

例如: get-EventLog -LogName Application  -Newest 10 | Out-Printer

 另外,通过Get-Command out* 命令你会发现还有很多其他的out-cmdlets 命令,可以通过help 命令来获取帮助,查这些命令到底如何使用。

4. 转换成HTML

用Powershell 可以通过管道将结果生成HTML,ConvertTo-HTML 命令可以生成结良好,通用的html数据,并且可以在任何浏览器中打开。 当然转换出来的只是原始数据,并没有什么格式,如果需要,可以使用CSS 来定制样式。如: Get-Service | ConvertTo-Html。 
不过你会发现在 convertTo 命令后边并没有跟文件名,输出结果就直接在屏幕中显示出来了,因为这个命令只负责转换,并不负责保存。 如果你想要保存命令,就要再使用其他命令进行保存,打印或其他输出方式。 如: Get-Service | ConvertTo-Html | Out-File shawservices.html

另外, Powershell 还有很多其他的 convetTo 命令。

这些convertTo cmdles 和 ConvertTo-Html 命令是一样的,他们并不在磁盘上创建文件,他们只负责转换,如果你想要保存这些文件,那你就需要再使用管道命令来保存这些文件。

补充说明;

有人会觉得 export-csv 和 convertTo-csv 这两个cmdlets看起来功能是一样的。其实在某些使用场景中,你可能并不想保存这些文件, 比如你想直接把转换号的数据传输到web服务等,那你这个时候就需要使用后者而不是前者了。

5. 使用Cmdlets 修改系统:终止进程和停止服务

例如:  Get-Process -Name Calculator | Stop-Process 该命令可以正在运行的计算器

   

猜你喜欢

转载自blog.csdn.net/weixin_42545594/article/details/81287294