zoukankan      html  css  js  c++  java
  • [Windows Powershell]-学习笔记(6)

    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)"。

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

     

     

     

     

     

     

  • 相关阅读:
    [HNOI2008]玩具装箱toy(dp+斜率优化)
    hdu 4597 Play Game(记忆化搜索)
    下载文件,ie文件名称乱码问题
    HDU 2138 How many prime numbers
    Codeforces Round #277 (Div. 2)---A. Calculating Function (规律)
    MapReduce-MulitipleOutputs实现自己定义输出到多个文件夹
    EFM8单片机与I2C外设通信
    linux杂谈(十一):LDAPserver的搭建
    Redis命令学习-string类型操作
    Java 实现单链表反序
  • 原文地址:https://www.cnblogs.com/long-gengyun/p/3671272.html
Copyright © 2011-2022 走看看