PowerShell 入门

PowerShell 入门 

一 PowerShell 介绍
PowerShell即开发代号为Monad的命令行外壳和脚本系统管理工具。 PowerShell是微软公司于2006年第四季度正式发布的, 它的出现标志着 微软公司向服务器领域迈出了重要的一步, 拉近了与Unix、 Linux等操作系统的距离。 PowerShell的前身命名为Monad, 在2006年4月25日正式发布beta版时更名为PowerShell,PowerShell是一款基于对象的shell, 建立在.Net框架之上, 目前支持.Net Framework 2.0. 能够运行在Windows XP SP2, Windows Vista, Windows 2003操作系统上。 能够同时支持WMI, COM, ADO.NET, ADSI等已有的Windows管理模型。

二 下载和安装
目前最新版本为:Windows PowerShell 2.0 Community Technology Preview (CTP)
http://www.microsoft.com/downloads/details.aspx?familyid=60deac2b-975b-41e6-9fa0-c2fd6aa6bc89&displaylang=en
下载PowerShell_Setup_x86.msi 首先要下载补丁包WS-Management v1.1安装后,才能正常安装PowerShell_Setup_x86.msi。

并下载补丁包 WS-Management v1.1
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=845289ca-16cc-4c73-8934-dd46b5ed1d33

三 执行方式
可以利用以下三种方式执行 Windows PowerShell:
位于『开始 / 所有程序』的『Windows PowerShell』快捷方式。
在『开始 / 运行』的『运行』命令窗输入 powershell。
在任何『命令提示字符』窗口的命令提示符号输入 powershell。

四 概念介绍

1 cmdlet
cmdlet是 Windows PowerShell 的指令,这相当于 DOS 或其它 shell 的内建指令。
cmdlet 的发音方式是 command-let。cmdlet 名称的格式都是以连字符号隔开的一对动词和名词,并且通常都是单数名词。例如可以在线查询 cmdlet 用法的 cmdlet 即为 get-help。cmdlet 名称的动词部分大致有 get、set、add、remove 等等。
注:Windows PowerShell 的操作与 DOS 相同,输入的字母都不分大小写。

2 管道
管道操作符 (|)
PowerShell中的的管道与传统环境中的管道有所不同。
在传统环境中,一个命令的结果作为一个单一的结果集被返回,也就是说整个结果集必须在任何信息传递到管道之前生成;第一个结果与最后一个结果是同时返回的。
但是在PowerShell中,所有的结果是按照管道的顺序连续产生的。一旦一个命令返回一个
结果,它就会把它传递到管道上,而该结果就立刻可以被管道上的下一个命令使用。


五 使用技巧

1 管道
#此命令显示正在运行的服务
get-service | where-object {$_.Status -eq "Running"}
或者gsv | where{$_.status -eq 'running'}
#可以加Select-Object 过滤属性
Get-Service | Where-Object{$_.Status -eq 'Running'} | Select-Object Displayname

2 格式化语句的输出
#以表格输出当前进程
 Get-Process | Format-Table
#以列表输出当前进程
 Get-Process | Format-Table
#以宽表的格式显示当前进程
 Get-Process | Format-Wide
 
3 控制语句的输出
#输出到指定文件
  Get-Process powershell | Format-List | Out-File  -FilePath D:/guoqiang/ps.txt
#追加文本 
 Get-Process powershell | Format-List | Out-File  -FilePath D:/guoqiang/ps.txt -append 


4 排序语句的输出
#降序排序
 Get-ChildItem C:/windows | Where-Object{$_.Length -gt 50000} | Sort-Object -property Length -descending
 
5 如何处理PowerShell的长语句
当命令以管道符合(|)结尾时,将进入“多行模式”,出现多行提示符“>>”,直至执行两次回车键才返回正常的提示符;
例如:
PS C:/> Get-Service |
>> Where-Object{$_.status -eq 'running'} |
>> Select-Object displayname
>>

DisplayName
-----------
Windows Audio
Background Intelligent Transfer Service

如果不是以(|)结尾,会报错;则要加反勾号(`)结尾告诉PowerShell要延续到下一行。
PS C:/> Get-Service |
>> Where-Object{$_.status -eq 'running'}
>> | Select-Object name
>>
An empty pipe element is not permitted.
At line:3 char:2
+ | <<<<  Select-Object name
PS C:/> Get-Service |
>> Where-Object{$_.status -eq 'running'} `
>> | Select-Object name
>>

Name
----
AudioSrv
BITS

如果想手工终止一个语句,在结尾加上(;)即可;
 

六 常用命令
1  get-help
别名:help
功能:
可以在线查询所有的 Windows PowerShell 指令和说明文件。
举例:
#列出所有的主题,包括指令和概念。
get-help *
#列出所有的主题,包括指令和概念,而且显示满整个窗口就暂停。
get-help * | more
#列出所有别名 并输出到文件中
 Get-Help * | Select-Object Name,synopsis | Out-File -FilePath D:/guoqiang/alias.txt
 
2 Set-Location
别名:cd
功能:
举例:
PS C:/> Get-ChildItem C:/


3 Get-Alias
别名:gal
功能:
举例:
PS C:/> Get-Alias | Select-Object name,definition

4 Get-Command
别名:gcm
功能:获取命令清单
举例:
PS C:/> Get-Command Get*


5 Set-Content
别名:sc
功能:向文件中写入数据
举例:
PS C:/> Set-Content D:/guoqiang/test.txt -value "http://blog.csdn.net/guoqiang1983"


6 Get-Content
别名:gc
功能:从文件中读取内容
举例:
PS C:/> Get-Content D:/guoqiang/test.txt
http://blog.csdn.net/guoqiang1983
PS C:/>

7 Set-ExecutionPolicy
别名:
功能:设置PowerShell脚本运行功能
    * Restricted,默认设置,不允许运行任何脚本。
    * AllSigned,仅运行受信任脚本(稍后会详细介绍)。
    * RemoteSigned,运行本地脚本,不管这些脚本是否受信任;如果是从 Internet 下载的脚本,则必须是受信任的脚本才能够运行。
    * Unrestricted,允许运行所有脚本,甚至是不受信任的脚本。
举例:
PS C:/> Set-ExecutionPolicy RemoteSigned

8 Set-PSDebug
别名:
功能:设置调试条件
举例:
PS C:/> Set-PSDebug -step
PS C:/> Get-Process

Continue with this operation?
   1+  <<<< Get-Process
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):

9 Get-Process
别名:
功能:查看进程
举例:
PS C:/> Get-Process

10 Get-EventLog
别名:
功能:获取日志记录
举例:
PS C:/> Get-EventLog -newest 10 -logname system

 
11 get-service
功能:取得本地计算机上的服务.
举例:
#此命令显示正在运行的服务
get-service | where-object {$_.Status -eq "Running"}


七 学习PowerShell资源
1 TechNet Magazine: Windows PowerShell
http://technet.microsoft.com/zh-cn/magazine/cc135920.aspx


 

原文地址:https://www.cnblogs.com/dbasys/p/2127570.html