• PowerShell_零基础自学课程_1_初识PowerShell


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

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

      

       

  • 相关阅读:
    软件项目开发典型风险一览
    删除数据库所有表数据
    今天愚人节,教大家一个真正的最强整人方法
    潘正磊谈微软研发团队管理之道(下)
    追MM与23种设计模式
    22个所见即所得在线 Web 编辑器
    神奇的js代码,图片全都飞起来了
    字体 小 中 大
    使用ODP.NET连接Oracle数据库一个OracleCommand运行多条SQL语句的方法
    删除SQL数据库中所有的表
  • 原文地址:https://www.cnblogs.com/volcanol/p/2441437.html
Copyright © 2020-2023  润新知