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

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

PowerShell_零基础自学课程_1_初识PowerShell的更多相关文章

  1. PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念

    PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念 据我个人所知,windows下的cmd shell除了能够通过修改系统参数来对其中的环境变量 ...

  2. PowerShell_零基础自学课程_3_如何利用Powershell ISE调试PS脚本

    微软在推出PS的同时,没有忘记其一贯的作风,什么东东都弄一个IDE环境,这不微软没有忘记给PS也来一个IDE的环境, 通过这个IDE环境,可以建立psl文件,可以调试psl文件. 1.IDE界面 我们 ...

  3. PowerShell_零基础自学课程_8_高级主题:WMI对象和COM组件

    本系列文章从最初的初识开始,基本上可以完成一些简单的系统管理了,为了更方便的管理系统,同时为了更好的发掘系统的性能,就需要用到系统提供 的一些高级特性,在Windows Server系列的OS中,如果 ...

  4. PowerShell_零基础自学课程_6_PS中获取帮助信息详解、管道、格式化输

    前些文章陆续的说了一些关于这些主题,但是讨论的都不够深入,今天我们深入的了解一下获取帮助信息.管道以及格式化输出的内容. 一.获取帮助信息 在PS中获取帮助信息,最常用的有: -? .get-comm ...

  5. PowerShell_零基础自学课程_9_高级主题:静态类和类的操作

    上次我们说到了,wmi对象和com组件,今天我们继续来看PS中对象的相关内容.主要说一下静态对象和对象的基本操作. 一.静态对象 在PS中有一类特殊的对象,我们不能同过这些类创建新的对象,这些类是不能 ...

  6. PowerShell_零基础自学课程_2_Powershell与Cmd以及Unix/Linux Shell

    上篇文章我说道,windows为了改变用户对其console界面的诟病,于是就从windows   vista开始,计划要改变这种局面,于是就有 了Powershell的出现. 1.兼容shell命令 ...

  7. 月薪12k的零基础自学前端必备手册

    随着互联网的深入发展,前端开发工程师一跃成为市场上非常抢手的人才.很多同学,包括以前做UI的.Java的.或者对于IT完全零基础的同学都想学习前端.下图是网上流传甚广的一张前端学习思维导图,很多初学者 ...

  8. 2019年最新超级有趣好玩的html+css网页布局课程,前端入门基础,html5+css3零基础入门课程-黑马程序员pink老师精心录制

    大家好,我是黑马程序员pink老师!! 本次视频是前端零基础入门的课程,pink老师采取有趣好玩讲法,带你快乐的学习枯燥的html+css知识,学完之后让你能快速布局pc端页面.代码也可以讲的好玩有趣 ...

  9. 零基础自学用Python 3开发网络爬虫

    原文出处: Jecvay Notes (@Jecvay) 由于本学期好多神都选了Cisco网络课, 而我这等弱渣没选, 去蹭了一节发现讲的内容虽然我不懂但是还是无爱. 我想既然都本科就出来工作还是按照 ...

随机推荐

  1. 【Xamarin For IOS 开发需要的安装文件】

    官网安装文件下载: http://download.xamarin.com/XamarinforMac/Mac/xamarin.mac-2.0.1.64.pkghttp://download.xama ...

  2. Android之断点续传下载

    今天学习了Android开发中比较难的一个环节,就是断点续传下载,很多人看到这个标题就感觉头大,的确,如果没有良好的逻辑思维,这块的确很难搞明白.下面我就将自己学到的知识和一些见解写下供那些在这个环节 ...

  3. 管理Undo数据

    SQL> select sum(bytes),status from dba_undo_extents group by status; SUM(BYTES) STATUS ---------- ...

  4. 3D打印论坛

    3D打印论坛:http://www.3done.cn http://www.03dp.com www.qjxxw.net/ http://www.3ddayin.net http://oa.zol.c ...

  5. 2014.6.14模拟赛【bzoj1592】[Usaco2008 Feb]Making the Grade 路面修整

    Description FJ打算好好修一下农场中某条凹凸不平的土路.按奶牛们的要求,修好后的路面高度应当单调上升或单调下降,也就是说,高度上升与高度下降的路段不能同时出现在修好的路中. 整条路被分成了 ...

  6. poj3641:伪素数检测

    知道miller robin 素数测试中的伪素数定义就可以很容易解决,详见总结帖 #include <iostream> #include<stdio.h> #include& ...

  7. inconvertible types; cannot cast 'android.supoort.v4.app.Fragment' to 'com.example.sevenun.littledemo.fragment.NewsTitleFragment'

    inconvertible types; cannot cast 'android.supoort.v4.app.Fragment' to 'com.example.sevenun.littledem ...

  8. 传智播客 Html基础知识学习笔记2

    一.<select>标签 用来创建类似于WinForm中的ComboBox(下拉列表)或者LisBox 如果size大于1就是LisBox,否则就是ComboBox; <select ...

  9. WPF与输入法冲突研究之二:汉字输入法会导致WPF程序的崩溃!

    如果是输入非汉字的数据信息,可以添加一下内容: xmlns:input="clr-namespace:System.Windows.Input;assembly=PresentationCo ...

  10. Android开发学习之Intent具体解释

    Intent简单介绍和具体解释:           Intent:协助应用间的交互与通信,Intent负责相应用中一次操作的动作.动作涉及的数据.附加数据进行描写叙述.               ...