Powershell的几点基础知识
一、Powershell脚本不能执行的问题
如果Powershell脚本不能执行,那可能的原因就是执行策略没有设置,执行策略有四种:
1、受限(Restricted) 试图运行脚本时会有错误信息,计算机默认是这个,所以不能执行Powershell脚本。
2、签名(Allsigned) 只能运行包含数字签名的脚本,当遇到未知签名脚本时,会询问是否信任该开发商。
3、远程签名(RemoteSigned) 运行大多数脚本不提示,但要求源自Internet的脚本包含数字签名。
4、不受限制的(Unrestricted) 不需要任何脚本包含数字签名,但会警告来自互联网的脚本。
所以解决这个问题就需要设置执行策略,代码样例如下:
Set-ExecutionPolicy RemoteSigned
二、调用第三方的cmdlet
在Powershell中,把包含扩展cmdlet的扩展程序称为snapin,调用第三方的cmdlet就要先安装对应的snapin,安装步骤如下:
1、获取snapin的执行文件,在这里介绍一个网址:http://www.codeplex.com/PowerShellCX,这里可以找到一些snapin希望可以让你找到自己想用的。
2、这步就是安装snapin,进入c:\Windows\Microsoft.NET\Framework64\V2.0.50727目录下执行以下代码,这里以AppVSnapin为例:
InstallUtil.exe -i c:\AppVSnapin\AppVSnapin.dll
3、通过以上步骤就已经安装了snapin,下面就得确认是否成功安装,使用以下命令,这条命令显示的是所有手动安装的snapin的信息:
Get-PSSnapin -Registered
三、管道符‘|’的作用
管道符在Powershell的作用就是将前面命令的输出传入下一个命令当做输入,以下面例子为例:
Get-Process | Where-Object {$_.WorkSet -gt 500kb} | Sort-Object -Descending Name
第一个管道符前面的Get-Process命令将自己的输出通过管道符传给后面的Where-Object命令,where-Object在前面输出基础上筛选出WorkSet大于500kb的进程信息,顺带一提$_这个符号代表当前输入。第二个管道符也是一样,这个管道符将前面的输出转为Sort-Object的输入进行处理。