管道有一个很好的比喻”棒球手”,它其实就是将信息从一端投递到另一端接收。
一 先举几个例子说明吧:
1利用管道停止zabbix服务(可以看到我这里也用了通配符,但这不是一个好的习惯,除非你确认匹配的就是你要的服务。所以在做管道之前首先要需要确认一下通配符匹配的信息,否则可能酿成不好的后果)
2 将获取的服务导出到一个CSV文件。
3 将获取的服务导出到一个XML文件。
4当然也可以导入
导入的功能我在以前写过好多现实管理当中的例子:
二 通过以上的举例大家已经对管道有了一个初步的了解。但大家是不是始终有一个疑问,管道到底为我们传递了什么东西。好接下来就是一个NB的东东了 get-member。
1接着举例还是get-services,可以看到他得属性和传递的参数:
2 这些参数有什么用呢。我们看一眼:
3 说以上这些只是为了下面这种情况。我知道了以上的功能,兴致勃勃的想通过管道获取域内所有计算机的bios信息。
但是却返回了一堆错误信息,这太郁闷了:
这是什么原因导致的呢。哼哼这点很重要打起精神来。
首先我们通过看一眼管道符左面命令的属性,可以看到是ADComputer。
其次我们通过get-help看一眼管道符右面命令的byvalue属性(这个属性显示是否接收参数)。却没有搜到关于ADComputer信息。
然后回头看一眼成功的get-service的命令,先看一眼get-memer属性
然后再看一眼stop-service的详细帮助信息。发现了关于“servicecontroller”byvalue信息。
这下我们知道了 ,管道能否成功需要有一个前提。管道符左边的属性必须符合右边命令的接收参数。
太郁闷了!!!难道我们就不能实现我们上边的想法了么?当然不是。我们仔细研究一下:
首先在看一眼get-wmiobject的帮助信息(看!!!get-help又派上了用场)他居然支持-computername参数,然后接字符串!
其次再看一眼get-adcomputer这个命令,可以看到能够做为上面“-computername”参数的只有Name属性。
好那我们怎么能将Name属性提取出来呢?有两种方法:
1使用select
2 使用%{$_.加参数}方法(这种方法在以前的博客里也有参考)
3 确定一些获取到的这些是否为字符串。哈哈有戏!!!
4 让我们应用它吧!好了成功了爽!!!
Powershell的管道功能就介绍到这里了!!!
接下来就是关于Session和大规模自动化介绍了很期待吧哈哈哈!