当前位置: 移动技术网 > IT编程>脚本编程>Shell > Windows Powershell 环境变量

Windows Powershell 环境变量

2017年12月08日  | 移动技术网IT编程  | 我要评论
传统的控制台一般没有象powershell这么高级的变量系统。它们都是依赖于机器本身的环境变量,进行操作 。环境变量对于powershell显得很重要,因为它涵盖了许多操作

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

读取特殊的环境变量

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

ps> $env:windir
c:\windows
ps> $env:programfiles
c:\program files

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

ps> "my computer name $env:computername"
my computer name myhome-test-01

查找环境变量

powershell把所有环境变量的记录保存在env: 虚拟驱动中,因此可以列出所有环境变量 。一旦查出环境变量的名字就可以使用$env:name 访问了。

ps> ls env:
name              value
----              -----
allusersprofile        c:\programdata
appdata            c:\user\sv-test\home\appdata\roaming
commonprogramfiles       c:\program files\common files
computername          myhome-test-01
comspec            c:\windows\system32\cmd.exe
fp_no_host_check        no
homedrive           c:
homepath            users\v-test\home

创建新的环境变量

创建新环境变量的方法和创建其它变量一样,只需要指定env:虚拟驱动器即可

ps> $env:testvar1="this is my environment variable"
ps> $env:testvar2="hollow, environment variable"
ps> ls env:test*

name              value
----              -----
testvar1            this is my environment variable
testvar2            hollow, environment variable

删除和更新环境变量

在powershell删除和更新环境变量和常规变量一样。例如要删除环境变量中的 windir,

ps> del env:windir
ps> $env:windir
ps>

可以更新环境变量$env:os 为linux redhat。

ps> $env:os
windows_nt
ps> $env:os="redhat linux"
ps> $env:os
redhat linux

这样直接操作环境变量,会不会不安全?事实上很安全,因为$env:中的环境变量只是机器环境变量的一个副本,即使你更改了它,下一次重新打开时,又会恢复如初。(.net方法更新环境变量除外)

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

ps> md .myscript

  directory:

mode        lastwritetime   length name
----        -------------   ------ ----
d----    2011/11/29   18:20      myscript

ps> cd .myscript
psmyscript> "write-host 'hollow , powershell'" > hollow.ps1
psmyscript> .hollow.ps1
hollow , powershell
psmyscript> cd ..
ps> $env:path+=";c:powershellmyscript"
ps> hollow.ps1
hollow , powershell
ps> hollow
hollow , powershell

环境变量更新生效
上述对于环境变量的操作只会影响当前powershell会话,并没有更新在机器上。
.net方法[environment]::setenvironmentvariable操作可以立刻生效。
下面的例子对当前用户设置环境变量,经测试,重新打开powershell仍然存在

ps> [environment]::setenvironmentvariable("path", ";c:\powershellscript", "user")
ps> [environment]::getenvironmentvariable("path", "user")
;c:\powershellscript

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网