volcanol的工控博客
Email : lilinly225@126.com 索要资料加QQ 点击进入 或 点击左侧的资料分享专用帖

volcanol ---- View OF Linux Can Appreciate Nature OF Linux

天行健,君子以自强不息

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  欢迎转载本系列文章;转载请注明出处: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

 

 

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

  

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2012-04-10 22:32  volcanol  阅读(23728)  评论(2编辑  收藏  举报
volcanol ----View OF Linux Can Appreciate Nature OF Linux。