0. PowerShell是什么?


Windows PowerShell是专为系统管理员设计的新的Windows命令行外壳程序(以前的是DOS黑窗口外壳程序)。该外壳程序包含交互式提示和脚本环境,两者既可独立使用也可组合使用。

【解读】:

  1. 什么是交互式提示?交互式提示就像打开一个cmd窗口,在里面执行一个ping命令一样,它会动态地输出结果。也可以像执行ftp命令那样,有一个上下文环境(context),可以交互。
  2. 什么是脚本环境?就像写VBScript脚本那样,以文件形式把PowerShell的程序语句写下来,然后利用PowerShell来执行整个脚本文件。顺便说一句,批处理也可以理解为一个脚本环境。PowerShell脚本文件的扩展名为.ps1,语言支持循环、条件、流控制和变量赋值等语言结构。

与接受和返回文本的大多数外壳程序不同,Windows PowerShell是在.NET公共语言运行时(CLR)和.NET Framework基础上构建的,它接受和返回.NET对象。环境中的这一根本更改带来了管理和配置Windows的权限工具和方法。

【解读】:这个很有意思,一个对象化的脚本环境不奇怪,但一个对象化的交互式环境确实是一个全新的理念。

Windows PowerShell引入了cmdlet概念,这是内置到外壳程序中的一个简单的单一功能命令行工具。可以分别使用每个cmdlet,但是组合使用这些简单的工具执行复杂任务时才能发挥其强大的作用。Windows PowerShell包含了一百多个基本的核心cmdlet,您可以编写自己的cmdlet并与其他用户共享它们。

【解读】:

  1. 这和原来Windows的外壳程序自带dir、cd、copy、del这些内置命令差不多,只不过它是可以模块化添加和删除的。PowerShell自带了大量的cmdlet,我们也可以自己编写和分发;
  2. 可以通过名称格式来识别cmdlet——由短划线分割的动词和名词,如Get-Help、Get-Process和Start-Service。另外,有Start-Service就有Stop-Service、Restart-Service。这里,Windows系统不区分命令大小写的一贯作风被得以继承;
  3. 每个cmdlet的作用都很简单,如Get类cmdlet仅检索数据,Set类cmdlet仅建立或更改数据,Format类cmdlet仅设置数据格式,Out类cmdlet仅将输出定向到指定的目标。所以,应注意怎么组合使用;
  4. 每个cmdlet都有一个帮助文件,可以通过键入Get-Help <cmdlet名称> -Detailed来访问它。如果只要查看简单的信息就不要Detailed这个参数。如果要查看更全面的技术信息,可将Detailed改为Full。也可以使用Help <cmdlet名称> 或者直接使用 <cmdlet名称> -?获得简单帮助信息。Get-Help *可显示所有PowerShell命令,Get-Help Get-*可显示所有以Get开头的命令。试着完整地阅读Get-Help Start-Service -Full会有PowerShell有一个震撼的认识;
  5. 很多cmdlet有内置的别名,如Get-Service的别名就是gsv;
  6. Get-Command可列出所有的cmdlet。

Windows PowerShell为您提供了对计算机上文件系统的访问。使用Windows PowerShell提供的程序,您还可以访问其它数据存储区,如注册表和数字签名整书存储区,这与访问文件系统一样容易。

【解读】:它的强项在于文件系统、注册表、数字证书等。随着对Windows PowerShell的深入学习,您会接触到更多、更强大的功能。

可以在Windows PowerShell中运行Windows命令行程序,并可以在外壳程序中启动具有图形用户界面的Windows程序(如记事本和计算器)。还可以捕获程序生成的文本,并在外壳程序中使用该文本。

【解读】:

  1. 在Windows的cmd .exe中可以执行的外部程序,如net .exe、xcopy .exe等均可以在PowerShell中正常使用(注:由于本论坛的缺陷,不能写有不含空格的.exe名称,请将这里的.exe前的空格删去);
  2. cmd .exe本身也可以在PowerShell中使用;
  3. cmd .exe自带的内置命令也可以在PowerShell中使用,如dir c:;
  4. 在PowerShell中运行services.msc一样可以打开服务面板;
  5. 可以打开像Notepad这样的图形界面的Windows程序。

———— 本文摘自百度文库,有格式上的调整和个别文字的修改