据我个人所知,windows下的cmd shell除了能够通过修改系统参数来对其中的环境变量进行改变外,其环境的可自定义性相对来说很困难,而在Linux环境中,可以通过修改/etc目录下的某些配置文件来达到配置shell环境的目的。也许这也是某些人诟病cmd shell功能不强的
原因之一。
  而目前这种状况在windows powershell中得到了改善,可以说PS中提供的自定义环境的功能基本可以和linux环境相比较;今天我们来看看如何在PS中来自定义shell环境; 首先来看几个概念。
1、脚本
  在cmd、Bash等shell中,脚本可以简单的理解为一系列将要按照顺序执行的命令的集合。在windows中以前就支持很多种脚本,例如:
bat脚本、VB脚本、Java脚本、WMI脚本,windows为这些脚本提供一个执行宿主环境,通常称为WSH(Windows script host)。 而且还可以通过扩展一些三方的工具来执行功能更加强大的脚本,例如Python、Perl等。
  PS也支持脚本的概念,PS脚本是一系列将要按照顺序执行的cmdlet的集合;在windows中脚本文件的扩展名是psl。
2、执行策略
  顾名思义,执行策略就是指可执行文件在启动执行过程中需要遵守的规则;在PS中执行策略决定脚本文件是否能执行,如果脚本能执行,执行策略还决定执行的脚本是否需要经过数字签名验证,同时还决定是否能加载脚本配置文件。
2、1 查看执行策略
  在PS中通过cmdlet get-executionpolicies 来查看PS脚本的执行策略。如下所示:
Exp:
  PS C:\Users\vol_20120330> get-executionpolicy
  RemoteSigned

  上面的执行结果表示:当前的脚本执行策略是RemoteSigned。 前面提到过PS有种执行策略,这里不再解释;但是还可以通过下面的cmdlet来获取相关的信息:
  get-help about_execution_policies

Exp:

PS C:\Users\vol_20120330> get-help about_execution_policies
主题
about_Execution_Policies 简短说明
说明 Windows PowerShell 执行策略,并介绍如何对它们进行管理。 详细说明
使用 Windows PowerShell 执行策略,可以确定 Windows PowerShell
加载配置文件和运行脚本的条件。 可以为本地计算机、当前用户或特定会话设置执行策略。也可使用组策略设置
为计算机和用户设置执行策略。 用于本地计算机和当前用户的执行策略存储在注册表中。无需在 Windows PowerShell
配置文件中设置执行策略。用于特定会话的执行策略仅存储在内存中,会话关闭时,
该执行策略将丢失。 执行策略并不是限制用户操作的安全系统。例如,当无法运行脚本时,
用户可通过在命令行中键入脚本内容而轻松规避某个策略。执行策略的
真正用途是帮助用户设置一些基本规则,并防止用户无意中违反这些规则。 WINDOWS POWERSHELL 执行策略
------------------------------------- Windows PowerShell 执行策略如下: "Restricted"是默认策略。 Restricted
- 默认执行策略。 - 允许单个命令运行,但不能运行脚本。 - 阻止所有脚本文件的运行,包括格式和配置文件 (.ps1xml)、模块脚本文件 (.psm1)
和 Windows PowerShell 配置文件 (.ps1)。 AllSigned
- 可以运行脚本。 - 要求所有脚本和配置文件由可信发布者签名,包括在本地计算机上编写的脚本。 - 在运行来自尚未分类为可信或不可信发布者的脚本之前进行提示。 - 运行来自 Internet 以外的源的未签名脚本及已签名但有恶意的脚本存在风险。 RemoteSigned
- 可以运行脚本。 - 要求可信发布者对从 Internet(包括电子邮件和即时消息程序)下载的脚本和配置文件
进行数字签名。 - 不要求对已经运行和已在本地计算机编写的脚本(不是从 Internet 下载的脚本)进行数
字签名。 - 面临运行已签名但有恶意的脚本带来的风险。 Unrestricted
- 可以运行未签名脚本。(面临运行恶意脚本所带来的风险。) - 在运行从 Internet 下载的脚本和配置文件之前警告用户。 Bypass
- 不阻止任何执行项,不显示警告和提示。 - 此执行策略设计用于两种配置:一种是 Windows PowerShell 脚本内置于一个较大的
应用程序中;一种是 Windows PowerShell 成为拥有自身安全模型的某个程序的基础。 Undefined
- 当前作用域中未设置执行策略。 - 如果所有作用域中的执行策略为 Undefined,则有效执行策略为 Restricted,该策略
是默认执行策略。

  通过上面的命令可知, 默认的执行策略是restricted; 就是不允许执行脚本; 而我前面获取的执行策略配置信息,是通过下面的cmdlet来实现的:

Exp:

  set-executionpolicy

set-executionpolicy remotesigned

具体的设置方法可以自己获取帮助。

  我们知道,在当前会话中设置一些函数、别名和变量后,如果退出当前会话,那么这些设置将不再有效;而设置执行策略与这不同,因为执行策略信息保存在windows

的注册表信息里面, 这样当退出当前会话后,修改的执行策略信息仍将有效,即使卸载然后再重新安装PS,还将保持原来的设置不变。

3、配置文件

  PS环境默认有4个配置文件,下面一一进行介绍.

3、1  针对所有用户,影响所有shell的配置文件

  这个配置文件存放在:   %windir%\system32\windowspowershell\v1.0\profile.psl

  修改这个配置文件将影响所有的用户,以及所有的shell。

3、2  针对所有用户,只影响Windows Powershell的配置文件

  这个配置文件保存在:  %windir%\system32\windowspowershell\v1.0\microsoft.powershell_pfrofile.psl

  修改这个配置文件将影响所有的用户,但只针对windows Powershell有效。

3、3  针对当前用户,影响所有shell的用户配置文件

  这个配置文件保存在: %userprofile%\my documents\windowspowershell\v1.0\profile.psl

  修改这个配置文件只对当前用户有效,但是会影响所有的shell

3、4  针对当前用户,只影响PS的用户配置文件

  这个配置文件保存在: %userprofile%\my documents\windowspowershell\v1.0\microsoft.poweshel_profile.psl

修改这个配置文件只对当前用户有效,并且只影响PS。

  估计,大家会记得我在前面的文章中,就修改过这个配置文件。其路径就是: $path变量存储的路径。

3、5  配置文件路径

  这么多配置文件,那么在当前会话中到底哪个起作用呢?

这个问题的答案就是: 只有与$path 变量中存储路径相同的配置文件才起作用; 包括路径和文件名。

4、创建配置文件

  我们知道,在linux环境下,位于/etc 目录下的配置文件大部分系统自生成的;而在PS中,配置文件不是自动生成的,而需要用户手动创建。因此为了自定义PS的环境

就需要我们自己创建相关的配置文件;下面我们介绍如何创建配置文件。

  在PS环境中,我们通过  new-item  cmdlet来创建配置文件。如下所示:

Exp:

  new-item   -path   %env:windir%\system32\windowspowershell\v1.0\profile.psl   -itemtype file  -force

  通过上面的命令,我们就创建一个影响所有用户和所有shell的用户配置文件;我们可以通过notepad或者PS ISE IDE环境来编辑这个配置文件,我个人推荐使用IDE环境

来编辑配置文件(虽然,很多时候,有些人不太支持用IDE环境来学习编程,但我个人认为,我们可以通过CLI形式来深入学习,但是实际开发中还是用IDE效率高)。

5、检测配置文件是否存在

  我们有时候不知道,在某个计算机上是否存在配置文件,如果直接的创建配置文件,可能将系统中原有的配置文件给覆盖掉,因此在创建之前有必要检测一下是否存在配置

文件。

  当然可以通过一层层的打开文件夹来查看,但是有没有更简单的方法呢? 答案是: 这个可以有,真可以有。

  在PS中我们通过 test-path cmdlet来检测是否存在配置文件。

Exp:

test-path  $profile

当存在$profile 配置文件时,这个命令返回 TRUE ;当不存在$profile 配置文件时,这个命令返回 FALSE.

注意: 在ISE环境中使用这个命令和在PS中使用时得到的命令可能不一样。

6、Powershell中基本概念

6、1 标准参数

  在传统的shell命令中,各个命令的使用的参数不同,不具有一致性,而在PS中,提供了一套标准的参数,这样有利于学习和使用cmdlet。

在PS中使用参数时,必须在参数前面加上 “-” 符号,表示后面的标识符为一个参数;例如:get-help  -name   get-item ;其中name是参数,但是在使用的

时候必须加上“-”; 表示这是一个参数。

6、2 帮助参数

  所有cmdlet使用 ? 参数来指示需要输出帮助信息,但是不执行该cmdlet

6、3 通用参数

  windows powershell提供一些通用参数,由于这些参数是由PS的解释引擎控制,因此当cmdlet实现这些参数是,都将具有相同的行为方式。通用参数包括

whatif、confirm、verbose、debug、warn、erroraction、errorvarible、outvariable和outbuffer。

6、4 建议参数

  PS核心的cmdlet对类似的参数使用标准名称,这些参数名称虽然是可选的,但是使用建议参数将有利于cmdlet开发的标准化。建议参数包括:Force、exclude、

include、passthre、path和casesensitive。

7、小结

  目前接触的都是一些基础内容,需要慢慢的体会;以后慢慢将讲解一些关于WMI管理的内容。

PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念的更多相关文章

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

    欢迎转载本系列文章:转载请注明出处:www.cnblogs.com/volcanol 自从微软推出.Net以来,微软旗下的windows体系就发生了很大的变化,首先是操作系统的界面的变化,例如vist ...

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

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

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

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

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

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

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

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

  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. android 之 百度地图

    简介 百度地图Android定位SDK为基于移动客户端开发LBS应用提供基础定位能力. 功能介绍 功能介绍: 地图展示:包括2D图.卫星图.3D图地图展示. 地图操作:提供控制平移.缩放.底图旋转.变 ...

  2. 深入浅出Node.js (10) - 测试

    10.1 单元测试 10.1.1 单元测试的意义 10.1.2 单元测试介绍 10.1.3 工程化与自动化 10.1.4 小结 10.2 性能测试 10.2.1 基准测试 10.2.2 压力测试 10 ...

  3. Codeforce 215 div1

    C 把每个qi看成点,则问题转化为:求一个最大的k,遍历k个点的完全图需要的最小步数+1不超过n, (这里+1的原因是把起点加进去) 讨论k的奇偶: k为奇数,每个点度数为偶数,这是一个欧拉回路,步数 ...

  4. c语言结构体5之匿名结构体

    注意: 1匿名结构体不会出现重合 重命名的情况 2有名结构体 名称不能相同 也就是不能重名 //匿名结构体不会出现重名的情况 struct //无名结构体 { ]; ]; int num; };//不 ...

  5. 编程之美2015初赛第一场 hihoCoder #1156 : 彩色的树(染色问题)

    #1156 : 彩色的树 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定一棵n个节点的树,节点编号为1, , …, n.树中有n - 1条边,任意两个节点间恰好有一条 ...

  6. mysql 中文乱码的解决方法

    添加或修改my.ini 配置文件,设置编码字符为utf8 ,默认为latin1,见红色字体 [mysql]# 设置mysql客户端默认字符集default-character-set=utf8 [my ...

  7. QListWidget方式显示缩略图

    最近在工作中经常遇到了一个问题就是把把文件夹中的图片全部以缩略图的形式显示出来,刚开始的时候一头雾水,不知道怎么办,经过在网上查资料,发现QListWidget控件可以实现图片的缩略图显示,但是不知道 ...

  8. css中的段落样式及背景

    一.段落样式 css中关于段落的样式主要有行高,缩进,段落对齐,文字间距,文字溢出,段落换行等.它们的具体语法如下: line-height : normal | length text-indent ...

  9. HDU2206 IP的计算 【经典题】

    IP的计算 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  10. getInitParameter()

      getInitParameter()方法是在GenericServlet接口中新定义的一个方法,用来调用初始化在web.xml中存放的参量.在web.xml配置文件中一个servlet中参量的初始 ...