转至:http://www.cnblogs.com/ceachy/archive/2013/03/01/PowerShell_Profile.html

  在命令行中定义别名、变量和函数,只是将它们添加在当前PowerShell的会话中。退出会话后,这些更改就会丢失。想要在以后的会话中也能使用它们,就要将它们定义在配置文件中。

配置文件

  PowerShell的配置文件,不像Windows操作系统中那样使用.ini文件,也不像多数应用程序那样使用XML文件。PowerShell的配置文件都是些普通的PowerShell脚本文件。需要注意的是,这些配置文件的文件名是固定、不能更改的。并且它们受到脚本执行策略的约束,就是说在默认情况下,也就是脚本执行策略为Restricted的时候,这些配置文件也不能被执行,也就是无效的。

配置文件详细

  影响PowerShell命令行的配置文件总共4个,它们的名字分别存贮在变量$PROFILE.AllUsersAllHosts、 $PROFILE.AllUsersCurrentHost、$PROFILE.CurrentUserAllHosts和$PROFILE.CurrentUserCurrentHost(可简写为$PROFILE)中。它们的作用范围分别为“所有用户所有Shell”、“所有用户当前Shell”、“当前用户所有Shell”和“当前用户当前Shell”。以上配置文件按加载顺序给出,如果有冲突项,后者覆盖前者。

  需要说明一下,“用户”的概念跟计算机中的用户概念相同;这里的“Shell”或者叫“主机程序”,是指Shell分类,而非打开的一个个PowerShell示例(会话)。我们常见的Shell种类有两种,PowerShell命令行和PowerShell ISE环境。其余还有那些Shell或者主机类型,我没仔细考究。

PowerShell ISE的配置文件

  PowerShell ISE也是我们常用的PowerShell环境,它也有4个配置文件。其中两个影响所有主机或者Shell的配置文件是与PowerShell命令行共用的,影响当前主机程序或者Shell的,则有专门的配置文件。这些配置文件的全名(包括路径)也存储在$Profile的属性中,属性名跟在PowerShell命令行中的一致,但是属性值不同,反映的是ISE的配置文件名信息。

定义配置文件

  配置文件虽然名称已经确定,但它们不会随PowerShell安装自动生成,而是需要使用者在需要的时候自己创建。它们的创建过程跟一般脚本的创建过程一样。关于脚本文件的详细信息,可参见“PowerShell入门(八):函数、脚本、作用域”。但请务必保证自己创建的配置文件的路径和文件名(包括扩展名.ps1)都要跟系统定义的完全一致,否则无效。

  四个配置文件的定义方式完全相同,下面以影响当前用户当前Shell的配置文件为例,说明定义配置文件的过程:

  1、创建配置文件

  任何创建文本文件的方式,在这里都适用。但请注意文件的扩展名必须是.ps1。简单起见,我们使用命令类创建,命令如下:

New-Item -ItemType file -Path $PROFILE  -Force

  2、编辑配置文件

  用记事本或者任意文本编辑器打开配置文件,添加你的配置项。这些配置项可以实定义别名、变量、函数,也可以运行命令,用点“.”获取来源,导入模块等。下面是定义变量和用点“.”获取来源的示例。(假设我有一个脚本文件,名字叫myScript.ps1,里边定义了一个函数HelloWorld())

$greet = "Hello Luke!"

. .\myScript.ps1

将以上内容输入配置文件,保存、关闭。

  3、验证配置文件

  打开一个新的PowerShell命令行,输入$greet,回车,结果显示Hello Luke!;输入HelloWorld,回车,结果显示Hellow, World!。打开PowerShell ISE,输入$greet,回车,啥也没有;输入HelloWorld,显示未能找到命令的错误。哈哈,验证通过。

结语

  配置文件既为公司或者项目组统一PowerShell环境提供了简易的方案——为所有工作机提供相同的影响所有用户所有Shell的配置文件,也为程序员的个性化要求提供了方法——自己定义影响当前用户当前Shell的配置文件。此外,配置文件提高PowerShell交互式命令行的效率是有目共睹的,但对于想要精确控制变量定义、模块导入的脚本来说,可能是个隐患。所以,哪些内容应该写入配置文件,请慎重考虑。

【转】PowerShell入门(十):使用配置文件的更多相关文章

  1. 【转】PowerShell入门(十二):编写PowerShell管理单元和二进制模块

    转至:http://www.cnblogs.com/ceachy/archive/2013/03/13/PowerShell_SnapIn.html PowerShell一开始就提出利用管理单元来实现 ...

  2. powershell入门教程-v0.3版

    powershell入门教程-v0.3版 来源 https://www.itsvse.com/thread-3650-1-1.html 参考 http://www.cnblogs.com/piapia ...

  3. Android入门(十二)SQLite事务、升级数据库

    原文链接:http://www.orlion.ga/610/ 一.事务 SQLite支持事务,看一下Android如何使用事务:比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可 ...

  4. C#基础入门 十

    C#基础入门 十 Windows应用程序的界面设计 Form.cs:窗体文件,一般用于存放程序员为窗体编写的代码: Form.Designer.cs:窗体设计文件,其中的代码是由VS自动生成的,一般不 ...

  5. Spring入门(十四):Spring MVC控制器的2种测试方法

    作为一名研发人员,不管你愿不愿意对自己的代码进行测试,都得承认测试对于研发质量保证的重要性,这也就是为什么每个公司的技术部都需要质量控制部的原因,因为越早的发现代码的bug,成本越低,比如说,Dev环 ...

  6. 网络编程懒人入门(十):一泡尿的时间,快速读懂QUIC协议

    1.TCP协议到底怎么了? 现时的互联网应用中,Web平台(准确地说是基于HTTP及其延伸协议的客户端/服务器应用)的数据传输都基于 TCP 协议. 但TCP 协议在创建连接之前需要进行三次握手(如下 ...

  7. 【转】PowerShell入门(三):如何快速地掌握PowerShell?

    转至:http://www.cnblogs.com/ceachy/archive/2013/02/01/HowToLearnPowerShell.html 如何快速地掌握PowerShell呢?总的来 ...

  8. PowerShell入门

    最近需要写个Windows的脚本,以前一直使用cmd.exe来写批处理脚本,这次接触到了PowerShell,准备把学习过程中学到的知识点整理在这里: 相关文章: 1.https://www.cnbl ...

  9. Spring_day01--课程安排_Spring概念_IOC操作&IOC底层原理&入门案例_配置文件没有提示问题

    Spring_day01 Spring课程安排 今天内容介绍 Spring概念 Spring的ioc操作 IOC底层原理 IOC入门案例 配置文件没有提示问题 Spring的bean管理(xml方式) ...

随机推荐

  1. Javascript的shift()和push(),unshift()和pop()方法简介

    栈方法: Javascript为数组专门提供了push()和pop()方法,以便实现类似栈的行为.来看下面的例子: var colors=new Array();       //创建一个数组 var ...

  2. initWithCoder: 与initWithFrame:的区别

    从nib中加载对象实例时,init:或initWithFrame:都不会调用.而是调用initWithCoder:怎么理解:   有时候,知道initWithFrame方法如何用,但是么有弄明白ini ...

  3. [转]RMAN检测数据库坏块

    backup validate check logical database; select * from v$database_block_corruption; RMAN> backup v ...

  4. Sprint会议记录(第五组)

    会议时间:12/8 下午14:00 会议地点:宿舍 会议进程: *首先我们讨论了实验第一个Sprint1要实现的功能:排球规则分析.比赛详细过程.比赛人物分析, *之后对是任务的认领, *最后每个人对 ...

  5. Java学习记录-Jdk包简单介绍

    java.applet Java语言编写的一些小应用程序 java.awt AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交 ...

  6. 下载更新文件后,调用安装器自动安装apk文件

    在更新操作时,下载新apk之后,往往需要自动安装新apk,用以下代码即可安装下载在本地的apk文件(apkFile) Intent intent = new Intent(); intent.setA ...

  7. Objective-c防止数组越界而崩溃(全局效果)

    数组越界其实是很基本的问题,但是解决起来除了count的判断,还有每个调用的时候都要去判断一遍 对于不明确的数据总会有崩溃的风险 然而 每次调用都判断 那是太累了 so ..runtime&c ...

  8. Electronic oscillator

    https://en.wikipedia.org/wiki/Electronic_oscillator An electronic oscillator is an electronic circui ...

  9. easyui datagrid 编辑模式详解

       一,建立编辑器 从api得知,扩展一种新的编辑器类型,需要提供以上几个方法.项目中正好需要一个checkbox 类型编辑器,但在easyui中并没提供这样的编辑器,那我们可以通过扩展编辑器来解决 ...

  10. ansible 安装

    1.简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署. ...