Powershell 4 - Powershell 的好用之处: 从结果中去某一字段
Powershell 一个简单的命令就能够直接查看很多内容。
比如
Get-Service: 查看所有的服务状态
Get-Process: 查看所有的进程
而且你可以直接定义一个变量,把结果保存在其中。比如:
$Services = Get-Service
如果想在结果中取某一列的结果也非常简单。
我们先看 Get-Service:
PS C:\> Get-Service
Status Name DisplayName
------ ---- -----------
Running AdobeARMservice Adobe Acrobat Update Service
Stopped AdobeFlashPlaye... Adobe Flash Player Update Service
Running AeLookupSvc Application Experience
Stopped ALG Application Layer Gateway Service
Stopped AppIDSvc Application Identity
... ...
可以看到结果有3列。这三列你可以直接得到:
(Get-Service).Name (注:不是 Get-Service.Name)
上面这个直接列出所有的 Service 名称。如下
PS C:\> (Get-Service).Name
AdobeARMservice
AdobeFlashPlayerUpdateSvc
AeLookupSvc
ALG
AppIDSvc
... ...
总的来说你可以直接使用 header 的任何一列 (Status/Name/DisplayName),就可以了。
读取文件也实在简单:
Get-Content C:\aa.txt
Powershell 也同样可以使用 For 循环:
$contents = Get-Content c:\SQA.reg
for ($i = 0; $i -le $contents.count ; $i ++ )
{
Write-Host ("*******" + $contents[$i])
}
另外 $_ 也在 Foreach-Object -Process 经常组合使用, 代表当的变量。比如:
$contents = Get-Service;
$contents | ForEach-Object -Process{
if ($_.name -match "^Net*")
{
Write-Host ($_.name);
}
}
结果:
Net Driver HPZ12
Netlogon
Netman
NetMsmqActivator
NetPipeActivator
netprofm
NetTcpActivator
NetTcpPortSharing
大小写转换也很简单:
cls
$var1 = " abcd ";
$var2 = "hello world 1234 !";
$var1.ToUpper();
$var2.ToUpper();
$var1.Trim();
结果:
ABCD
HELLO WORLD 1234 !
abcd
排序:
(dir).Name | sort
上面命令直接对 dir 的结果的 Name 列进行排序
(dir).Name | sort -Descending
上面是反排序
上面只是简单排序。有的时候, 你可能要根据一列的结果,排序另一列。这个时候 sort 就不行了。怎么办? Sort-Object 搞定!
比如, 当前目录 dir 的话结果如下:
PS C:\temp> dir
目录: C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 8/1/2015 1:33 AM 221 allen.ps1
-a--- 11/1/2015 1:39 AM 578 GetExecutionResultFromTera.csv
-a--- 8/7/2015 10:29 AM 38250 InstallFFOnly.ps1
-a--- 11/27/2015 8:55 AM 107 LibAntiPrtSc_ERROR.log
我们想要按照最后修改时间来倒序列出文件,一句命令搞定:
dir c:\temp | Sort-Object LastWriteTime -Descending;
结果:
目录: C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/27/2015 8:55 AM 107 LibAntiPrtSc_ERROR.log
-a--- 11/1/2015 1:39 AM 578 GetExecutionResultFromTera.csv
-a--- 8/7/2015 10:29 AM 38250 InstallFFOnly.ps1
-a--- 8/1/2015 1:33 AM 221 allen.ps1
只想列出名字?很简单:
(dir c:\temp | Sort-Object LastWriteTime -Descending).Name;
结果:
LibAntiPrtSc_ERROR.log
GetExecutionResultFromTera.csv
InstallFFOnly.ps1
allen.ps1
简直是太 easy 了!
浙公网安备 33010602011771号