1. 导入命令
使用 get-command "* import *"
查找出和导入相关的命令,从结果看到只有Import-Clixml
和Import-CSV
两个命令,难道就只有这两个命令可以“导入”内容吗?
当然不是啦,除了Import-Clixml
和Import-CSV
,还可以使用get-content
来将需要导入的内容进行导入。例如你要获取N台计算机的系统信息,这N台计算机名称可以写在txt的列表里面,然后使用get-content
来导入。
关于这三个命令如何使用,请结合get-help xxx -examples
的命令来查看学习即可,如下截图:
2.导出命令
那么导出呢?同样使用get-command "*export*"
查找和导出相关的命令,也只发现Export-Clixml
和Export-CSV
两个命令,此时你是想知道如果导出html怎么办对吧?此时你则可以使用ConvertTo-Html
来将结果导出为html,使用ConvertTo-CSV
将结果导出为CSV。关于这四个命令的用户依旧请使用get-help xxx -examples
来学习。
例子,关于export-CSV
的使用,可以感受一下以下两条命令的效果:
Get-process | export-csv -path e:\processes.csv –NoTypeInformation
Get-process | select-object ProcessName,VM,CPU | export-csv -path e:\processes2.csv –NoTypeInformation
你会发现processes.CSV里面收集到的结果比直接运行get-process显示在屏幕的结果要多很多。
接下来还想要介绍的是另外一个导出的命令out-file
。out-file
等同于>
操作符,out-file -append
等同于>>
操作符,前面一个事覆盖,后面一个是附加。
例子:
$i=0
$Type = "Win32"
$WMI = Get-WmiObject -List | Where-Object {$_.name -Match $Type}
Foreach ($Class in $WMI) {$Class.name; $i++}
3.导出命令使用思考
如果想要将结果导出到CSV怎么办呢?可以有以下几种方法:
-
但是,<pre name="code" class="html">Foreach ($Class in $WMI) { $Class.name >> c:\1.txt; $i++ }
以及$Class.name; $i++>>D:\1.txt
结果都是不一样的,而且是不对的,可以自行测试感受一下效果{"$Class.name" ; $i++}>>D:\1.txt
接-append和不接-append的效果又是不一样的,也可以自行测试感受下效果Foreach ($Class in $WMI) { $Class.name | out-file –filepath e:\win32.csv -append; $i++ }
-
但是呢在这里如果用export-csv来导出,出来的不知道是什么鬼
据说是要先定义一个变量来替换,很复杂的说,有兴趣的童鞋可以自行研究.{$Class.name | export-CSV -path e:\3.csv -NoTypeInformation; $i++}