1. Powershell环境变量

传统的控制台一般没有象Powershell这么高级的变量系统。它们都是依赖于机器本身的环境变量,进行操作 。环境变量对于powershell显得很重要,因为它涵盖了许多操作系统的细节信息。此外,powershell中的变量只存在于powershell内部的会话中,一旦powershell关闭,这些变量就会自生自灭。但是如果环境变量被更新了,它会继续保存在操作系统中,即使其它程序也可以调用它。

读取特殊的环境变量:

通过环境变量读取Windows操作系统的安装路径,和默认应用程序的安装路径。

通过$env:,这就提示powershell忽略基本的variable:驱动器,而是去环境变量env:驱动器中寻找变量。为了和其它变量保持一致,powershell环境变量也可以象其它变量那样使用。比如你可以把它插入到文本中。

查找环境变量:

创建新的环境变量:

不用担心创建了环境变量会一直存在,其实$env:中的环境变量只是机器环境变量的一个副本,即使你更改了它,下一次重新打开时,又会恢复如初。(.NET方法更新环境变量除外)

我们可以将受信任的文件夹列表追加到环境变量的末尾,这样就可以直接通过相对路径执行这些文件下的文件或者脚本,甚至省略扩展名都可以。

 

环境变量更新生效

上述对于环境变量的操作只会影响当前powershell会话,并没有更新在机器上。

.NET方法[environment]::SetEnvironmentvariable操作可以立刻生效。

下面的例子对当前用户设置环境变量,经测试,重新打开powershell仍然存在

[environment]::SetEnvironmentvariable("Path", ";c:powershellscript", "User")

[environment]::GetEnvironmentvariable("Path", "User")

 

  1. Powershell驱动器变量

Powershell中所有不是我们自己的定义的变量都属于驱动器变量(比如环境变量),它的前缀只是提供给我们一个可以访问信息的虚拟驱动器.。例如env:windir,象env:驱动器上的一个"文件",我们通过$访问它,就会返回"文件"的内容。

直接访问文件路径:

通过驱动器直接访问文件路径,也支持物理驱动器,必须把文件路径放在封闭的大括号中,因为正常的文件路径包含两个特殊字符":"和"",有可能会被powershell解释器误解。

上述的例子有一个限制,就是${$env:HOMEDRIVE/Powershellping.bat}不能识别,原因是$后花括号中的路径必须是具体的路径,而不能带返回值。

解决方法:

Invoke-Expression "`${$env:HOMEDRIVE/Powershell/ping.bat}"

因为反引号"`"放在$前,会把$解析成普通字符,解释器会继续去解析第二个$,发现env:HOMEDRIVE,将其替换成c,到此 Invoke-Expression的参数就变成了${C:/Powershell/ping.bat},继续执行这个表达式就可以了。

查看Powershell支持的驱动器,可以使用Get-PSDrive查看。

Name

Root

Description

A

A:

 

Alias

 

Drive containing a view of the aliases stored in session state.

C

C:

 

cert

 

X509 Certificate Provider

E

E:

 

Env

 

The drive containing a view of the environment variables for the process.

Function

 

The drive containing a view of the functions stored in session state.

HKCU

HKEY_CURRENT_USER

The software settings for the current user.

HKLM

HKEY_LOCAL_MACHINE

The configuration settings for the local machine.

Variable

 

The drive containing a view of those variables stored in session state.

WSMan

 

Root of WsMan Config Storage.

PSDrive中的大多都支持直接路径访问,例如可以通过函数路径,访问一个函数的具体实现。

 

特殊的变量:子表达式

由 $+圆括号+表达式 构成的变量属于子表达式变量,这样的变量会先计算表达式,然后把表达式的值返回。

例如 变量$(3+6),可以简写成(3+6),甚至可以简写成3+6。子表达式变量也可以嵌套在文本中,例如"result=$(3+6)"。

在处理对象的属性时,会大量的用到表达式变量。例如:

 

 

 

 

 

 

[Windows Powershell]-学习笔记(6)的更多相关文章

  1. [Windows Powershell]-学习笔记(5)

    Powershell自动化变量 Powershell 自动化变量 是那些一旦打开Powershell就会自动加载的变量,或者说是运行是变量. 这些变量一般存放的内容包括 用户信息:例如用户的根目录$h ...

  2. [Windows Powershell]-学习笔记(2)

    数学运算 我们可以把powershell当成一个计算器.如键入命令行那样输入数学表达式,回车,powershell会自动计算并把结果输出.常用的加减乘除模(+,-,*,/,%)运算和小括号表达式都支持 ...

  3. [Windows Powershell]-学习笔记(4)

    Powershell 定义变量 在powershell中变量名均是以美元符"$"开始,剩余字符可以是数字.字母.下划线的任意字符,并且powershell变量名大小写不敏感($a和 ...

  4. [Windows Powershell]-学习笔记(3)

    Powershell 通过函数扩展别名 在powershell中设置别名的确方便快捷,但是在设置别名的过程中并设置参数的相关信息,尽管别名会自动识别参数,但是如何把经常使用的参数默认设定在别名里面呢? ...

  5. [Windows Powershell]-学习笔记(1)

      Powershell 快捷键 Powershell的快捷键和cmd,linux中的shell,都比较像.   ALT+F7     清除命令的历史记录 PgUp PgDn     显示当前会话的第 ...

  6. Windows PowerShell 学习之——Cmdlet处理生命周期

    这一次介绍一下Cmdlet处理过程的生命周期 总共分为六个部分 1.概述 2. 命令行输入绑定参数(parameters) 3. 开始指令处理 4. 接受管道输入绑定参数 5. 处理记录 6. 处理记 ...

  7. Powershell学习笔记:(二)、基础知识

    从Window7以后,WIndows系统都自带了Windows PowerShell. 自带版本如下 WIndow7  2.0 WIndow8   3.0 Window8.1      4.0 Win ...

  8. Powershell学习笔记:(一)、初识Powershell

    什么是Powershell? MSDN上的说明是:PowerShell 是构建于 .NET 上基于任务的命令行 shell 和脚本语言. PowerShell 可帮助系统管理员和高级用户快速自动执行用 ...

  9. windows powershell学习

    PowerShell,从名字可以知道,他首先是一个shell,shell的意思就是和Linux的bash等一样.和原来的cmd一样就是在里边敲命令(可执行文件)使用: 而Power就意味他是一个功能强 ...

随机推荐

  1. 借用smtp.qq.com发邮件

    至于sentmail和postfix的配置有多么麻烦学生在这里就不多废话了...反正是配置了N个小时,最终弄的头晕眼花也没弄好... 下面的方法可以让你完全摆脱这两个工具...当然,你要是想做邮件服务 ...

  2. mysql插入多行数据

    表结构如图:

  3. redis是如何存储对象和集合的

    在项目中,缓存以及mq消息队列可以说是不可或缺的2个重要技术.前者主要是为了减轻数据库压力,大幅度提升性能.后者主要是为了提高用户的体验度,我理解的是再后端做的一个ajax请求(异步),并且像ribb ...

  4. Window发声函数Beep、MessageBeep

     C++ Code  1234567891011   WINBASEAPI BOOL WINAPI Beep(__in DWORD dwFreq,      __in DWORD dwDuration ...

  5. iOS面试题--网络--如何处理多个网络请求的并发的情况

    如何处理多个网络请求的并发的情况 一.概念 1.并发 当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配 ...

  6. phpcms v9表单实现问答咨询功能

    本文转自别人 phpcms v9的留言板插件可以安装留言板,做问答咨询,那样的话有很多东西需要修改,也有人发现phpcms v9有个表单向导功能,只能留言,不能回复,今天仿站网:新源网络工作室告诉大家 ...

  7. android RelativeLayout属性和布局实例

    // 相对于给定ID控件 android:layout_above 将该控件的底部置于给定ID的控件之上; android:layout_below 将该控件的底部置于给定ID的控件之下; andro ...

  8. struts2中s:iterator 标签的使用详解 及 OGNL用法

    简单的demo: s:iterator 标签有3个属性:value:被迭代的集合id   :指定集合里面的元素的idstatus 迭代元素的索引 1:jsp页面定义元素写法 数组或list <s ...

  9. js 一些基础知识

    数据类型: 作用域 每个函数都有自己的执行环境,执行环境定义了变量有权访问的其他数据,决定了他们各自的行为. 每个执行环境都有一个与之关联的变量对象(variable object),环境中定义的所有 ...

  10. Storm-源码分析-Topology Submit-Nimbus

    Nimbus Server Nimbus server, 首先从启动命令开始, 同样是使用storm命令"storm nimbus"来启动 看下源码, 此处和上面client不同, ...