Powershell_3
powershell_3 管道:连接命令
这章其实讲来讲去的就一个意思,在原生的“-参数”以外,可以进行一些额外的操作,例如“ | explorer-files c:\temp”就可以导出文件到C盘的temp文件夹
另外可以做一下类似四则运算的控制,例如先括号后外边,然后总的再来一个大的框架的执行。
另外就是执行导出的命令不同,导出或者导入的信息也不一样,对比出来的结果也不一样
示例练习
1.导出当前进程到xml文件,并在另一台机器导入
1 | # 1.导出当前进程到xml文件 |
结果显示

对比不不同机器的进程
1 | #对比不同的机器的进程 |
结果显示

通过对比我们可以看出来,第一个里面有但是第二个里面没有的用小于号表示,第二个里面有的但是第一个里面没有的用大于号表示。有点像excel里面的vlookup。
比较 “ | out-file “和 “| export-files”的区别
在PowerShell中,“| out-file” 是一个命令,用于将管道(|)传递过来的数据流重定向写入到一个文件中。当你想要将命令执行的结果保存到一个文本文件时,会经常用到 Out-File 命令。例如:
Powershell
Get-Process | Out-File -FilePath “process_list.txt”
而“| export-files”并不是PowerShell的内置命令或cmdlet。在标准PowerShell环境中,并没有名为“export-files”的命令。
如果你看到或使用了类似“export-files”的命令,那可能是某个自定义脚本或第三方模块提供的功能,它可能提供了一种特定格式的数据导出方式,比如导出为CSV、JSON或其他格式。但在原生PowerShell中,若要进行类似操作,通常会使用如 Export-Csv、Export-Clixml 或 Export-PSSession 这样的cmdlet来导出数据到特定格式的文件中。
总结:
Out-File 主要是将输出的内容以文本形式保存到指定文件。
“| export-files” 并非PowerShell标准命令,若存在可能是自定义或第三方模块提供的用于导出数据的功能。在标准PowerShell中应使用具体的导出cmdlet来完成类似任务。
练习

练习答案
1.创建两个类,但是不同的文本文件,使用diff对比他们
1 | #创建文件1 |

2.在控制台运行“get-service | export-csv services.csv | out-file”会发生什么?
1 |
|

3.除了获取一个或多个服务及以管道方式传输到”stop-service”之外,“stop-service”服务还提供了其他什么方式让你指定服务或停止服务?有什么方式可以在不使用“get-service”的前提下停止一个服务?
1 | #查询stop-service命令的参数 |

4.如何创建一个竖线分割符文件替代一个都好分隔符(CSV)文件?你可以依旧使用“export-CSV”命令,但是应该使用什么参数?
1 | get-service | export-csv c:\temp\services.csv -delimiter "|" |

这里需要使用管理员来运行powershell,使用参数“-delimiter”来控制使用竖线分割符
5.可以在已导出的CSV文件头部忽略#命令行吗?这一行通常包含了类型信息,但是如果你想从一个特定文件中获取并忽略时要怎么做?
1 | #使用带有-notypeinformation参数的export-csv命令。 |

6.“export-clixml”和“export-csv”都可以通过创建并覆盖文件来修改系统,你可以用什么参数来阻止他们覆盖现有文件?还有什么参数可以在你输出文件前提醒并请求确认?
1 | #阻止导出文件覆盖现有文件 |


7.windows维护少数局部配置,包括一个默认分隔符列表。在美国系统中,分隔符是逗号。你如何让“export-csv”使用当前系统默认的分隔符而不是逗号?
1 | #使用当前系统默认的分隔符 |
