欢迎转载本系列文章;转载请注明出处:www.cnblogs.com/volcanol

自从微软推出.Net以来,微软旗下的windows体系就发生了很大的变化,首先是操作系统的界面的变化,例如vista与XP的界面变化,

其次是一些应用的变化,例如在XP下就没有Aero桌面效果,而在Win7下就有Aero桌面效果(本人没有用过vista,不知道有没有Aero的效果)。

但这些都是用户直观的感受,除了这些还有更深层次的变化,如C++的CLR和CLI、以及一些时下非常流行的技术(像WPF、WCF还有什么

WorkFlow等等,这些我都不懂,只听说过这些);这里介绍的是这些变化外的另外一个变化: console shell的变化。

XP下面主要的脚本有:vbscript、javascript和batchfile批处理;这些功能均很强大,并且很多时候都有一些意想不到的效果;例如我前

两天弄的那个去除代码前导数字的批处理。而在vista之后,微软为windows开发了一个全新的console shell——PowerShell。

一、PowerShell的功能

  1、与标准的windows命令和应用程序兼容

  2、全新的命令格式:cmdlets

  3、支持对象/面向对象

  4、适合管理员应用

  5、多语言支持

  6、发现功能:Get-Command、Get-Help、Get-Member命令

二、启动PowerShell

  1、cmd -——> powershell

  2、start ——>All Program ——>附件——>Windows PowerShell——>Windows PowerShell  

启动后界面如下所示:

三  Powershell基础

3、1  如何执行程序/命令

1) 直接输入命令或者程序名称以执行程序或命令

Exp:

Program.exe     arguments

ScriptName.psl     arguments

batchfilename.bat/cmd     arguments

2) 运行命令中包含空格的命令,需要用单引号将命令括起来,同时在命令前面加: & 符号; 这在Powershell中称为调用操作

(Invoke  Operator)

Exp:

&  ‘C:\Program Files\Program\Program.exe’   arguments

3)运行当前目录或者路径下的命令或者程序

  这一点,Powershell借鉴了Linux/Unix的经验, 当在powershell中执行非系统路径下的程序或者命令时,必须明确的指定命令

或者程序的路径。

运行当前目录或者路径下的命令或者程序通过在命令前面加上:“   .\    ”来实现。

Exp:

.\program.exe   arguments

4) 运行当前目录或者路径下,命令或者程序名包含空格的程序或者命令, 则结合规则2)和规则3)来执行。

Exp:

&  ‘.\show  system infomation.pls’

5)  Powershell中的特殊点

我们知道在cmd提示符下,双引号用于实现访问带空格的命令或者路径下的命令,而在Powershell中双引号有特殊的用途:

表示字符串。

Exp:

如果我们在PS的命令提示符下输入: “hello ” + “world”  则输出:

hello world

即在PS中双引号沿用了C语言的规范。

6) 在任意路径下输入powershell的内置cmdlet均可以执行,而不需要加上 .\ 或者& 等特殊控制符号。

Exp:

Get-Process

输入上述命令则实现cmd中tasklist的功能。

3、2  cmdlet

  powershell中内置的命令称为cmdlets;cmdlet实现具有以下特点:

  1)统一的命令形式

  2)支持管道功能

  3)输出易于管理的对象,支持面向对象的概念

3、3  自定义powershell提示符和命令别名

  Powershell的出现,弥补了windows先天不足的console shell功能,在powershell中借鉴了很多bash shell  或其他linux/unix shell

的经验; 自定义命令的别名就是其中一个。

在powershell中有一个内置的变量: $profile;这个变量指示了powershell用户自定义配置文件。可以在powershell中输入 $profile

来查看这个变量的内容:

PS C:\Users\vol_20120330> $profile
  C:\Users\vol_20120330\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.
  ps1
  PS C:\Users\vol_20120330>

  通过下面的命令来创建新的用户配置文件脚本文件:

new-item  -type file  force  $profile

  用户的自定义powershell环境配置文件通过$profile文件来引用, 可以通过下面的命令来打开然后编辑这个配置文件:

notepad    $profile

通过下面的命令来获取配置文件: $profile 的信息

Exp:

get-item  $profile

  get-item 这个命令获取配置文件的一般信息。同样可以通过下面的命令来获取$profile的信息:

Get-childitem  $PROFILE

  下面我们通过一个实例来修改powershell的命令提示符形式;首先通过notepade $profile 打开用户配置脚本文件,然后输入以下信息:

Function  Prompt
{
     
    "PS [$env:COMPUTERNAME]>volcanol>"
  
}

  这样我们的命令提示符就会变成下面的样式:

PS [vol_20120305]volcanol>"    

  注意我的电脑的名称为: vol_20120305

3、4  powershell的安全执行策略

  默认情况下,powershell不允许执行脚本文件,上面的用户配置文件也包括在内;如果不修改powershell的安全执行策略,则上面的用户

配置文件是不能执行的。这里不插图了,读者可以自己实验。

  下面先简单的介绍一下如何修改powershell的安全执行策略。

1)以管理员的身份打开powershell的提示符窗口

  2)输入下面的命令:

set-executionpolicy   remotesigned

  3) 然后重新以管理的员的身份启动powershell;然后就可以看到ps的提示符编程了自定义的形式。

或者可以不退出ps; 而是执行一次 $profile  用户配置脚本即可。

3、5  自定义命令别名

  通过在用户配置脚本文件中自定义命令别名可以提高脚本的编辑效率,因为ps的命令比cmd命令长多了,例如

cd命令现在用set-location命令替代了;dir命令用get-childitem命令替代了。

通过:   set-alias 命令来设置命令别名。

set-alias   new     new-objector

Exp:  设置IE浏览器启动命令的别名。

set-alias   iexplorer  'c:\program files\internet explorer\iexplorer.exe'

  这样就可以在powershell中用 iexplorer命令来启动IE浏览器了。当然这需要重启Powershell或者执行一次用户配置文件脚本。

3、6  查找命令

  在用cmd的时候,我们有这样的经验,有时候不知道用什么命令来实现所需要的功能,这时我们就或利用help命令来大体的搜索一下;

然后看是否有我们需要的命令。在powershell中这一过程同样被支持,我们可以搜索命令;这通过 Get-Command 来实现。

1) 获取全部的可使用的命令,输入以下命令

get-command

  2)获取指定命令的帮助信息

get-command     command_name

  例如:  get-command   get-process

3)利用通配符进行搜索

powershell支持通配符搜索,这一功能的完美支持,完全可以媲美linux下的正则表达式。

get-command     *char*

  当仅有 * 号进行搜索时相当于: get-command

get-command   *

  例如搜索命令中带有txt的命令:   get-command   *txt*

5)带参数的搜索

  在powershell中利用get-command搜索的时候可以带选项参数,-verb和-noun;  其中-verb选项用来搜索带指定动词的命令,而-noun

选项则用来搜索带指定名词的命令。命令格式如下:

get-command   -verb   verb_name
 
 
get-command   -noun   noun_name

  例如搜索带动词get的命令:  get-command   -verb   get

搜索带名词service的命令:  get-command   -noun  service

3.7  cmdlets——一致的命令接口模式

  powershell采用一种称为cmdlets的命令接口模式,所有的命令都遵循这样的命令模式:

动词-名词

  如:get-command    命令, get就是动词,而command就是名词

get-process        命令,get是动词,而process是名词

get-eventlog       命令, get是动词,而eventlog是名词。

cmdlets中命令的动词部分取自于一个制定的动词集合,而cmdlet命令的名词部分描述了cmdlet命令要操作的对象。

3.8   获取帮助信息

  在cmd中获取帮助有三种方法:a)  利用help命令, 如 help cd

b)   利用 /?  命令选项,如  cd /?

c) 查看系统帮组信息

在Powershell中则有四种方法:

  a)利用  get-command 命令

  b)利用  get-help  命令

  c) 利用  -? 命令选项

  d)查看系统帮助信息

  利用get-command命令和利用get-help命令获取命令帮助信息是不同的;get-command直接从cmdlet、函数、变量

脚本或者别名中获取信息,而get-help命令则从系统帮助主题文件中获取信息, 通常get-help命令获取的帮助信息比get-command

命令详细。

 1)用get-command命令获取帮助信息:

Exp : 利用get-command  获取get-help帮助信息

get-command    get-help

  如果需要用get-command命令获取较为详细的命令则需用到管道和format-list命令;如下所示:

get-command    command_name  | format-list

 2) 利用get-help命令获取帮助信息:

Exp: 利用get-help 获取自身的帮助信息

get-help   get-help

  利用get-help命令获取帮助信息可以指定命令选项来获取不同详细程度的帮组信息:

a) -detailed 选项 ; 获取特定命令的帮助信息详情;例如:  get-help  -detailed   get-process

b) -full 选项; 获取特定命令的全部帮助信息; 例如:  get-help  -full   set-location

c) -examples 选项;获取特定命令的实例帮助信息; 例如: get-help  -examples   get-childitem

上面就是本次的所有内容,待续。

最新文章

  1. UIAlertController使用
  2. 【小白的CFD之旅】14 实例反思
  3. Angularjs,WebAPI 搭建一个简易权限管理系统 —— 系统业务与实现(三)
  4. Android开发者需要面对的8大挑战
  5. 团队开发——SCRUM报告(一)
  6. 深入研究java.lang.ProcessBuilder类
  7. 获取Excel部分数据并很据项目要求计算适宜性等级综合指数判断该地区的土壤适宜性
  8. C#中的DBNull、Null、""和String.Empty
  9. beta冲刺3/7
  10. shell 环境变量的相关配置文件和配置方法
  11. [译].NET Framework 4.8发布
  12. 【Java并发编程】15、ReentrantLock实现原理深入探究
  13. python console 设立快捷键 学习源码 用到英语
  14. 开发 Swift 和 Objective-C 混编的 Framework
  15. 【转】eclipse运行 Ant报错Could not find the main class: org.eclipse.ant.internal.launching.remote.InternalAntRunner. Program
  16. Docker命令之 search
  17. Visual Studio AI配置环境
  18. Mac下破解intellij IDEA 2018
  19. 你真的了解Fragment的生命周期吗?
  20. redis 学习记录

热门文章

  1. MVC4.0系统开发新手历程(一)
  2. bzoj1143
  3. Temporary failure in name resolution
  4. jQuery 各种选择器 $.()用法
  5. 单片微机原理P4:80C51串口与串行总线拓展
  6. MySQL精粹
  7. Linux基本操作 1-----命令行BASH的基本操作
  8. ZigBee心电传输(二)
  9. [Redux] Generating Containers with connect() from React Redux (VisibleTodoList)
  10. Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)