欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PowerShell入门教程之创建和使用配置文件实例

程序员文章站 2022-06-25 10:17:12
在命令行中定义别名、变量和函数,只是将它们添加在当前powershell的会话中。退出会话后,这些更改就会丢失。想要在以后的会话中也能使用它们,就要将它们定义在配置文件中。...

在命令行中定义别名、变量和函数,只是将它们添加在当前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交互式命令行的效率是有目共睹的,但对于想要精确控制变量定义、模块导入的脚本来说,可能是个隐患。所以,哪些内容应该写入配置文件,请慎重考虑。