日星网 windows 中文论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 54|回复: 0

Powershell环境变量

[复制链接]
发表于 2020-8-15 13:43:07 | 显示全部楼层 |阅读模式
传统的控制台一般没有象Powershell这么高级的变量系统。它们都是依赖于机器本身的环境变量,进行操作 。环境变量对于powershell显得很重要,因为它涵盖了许多操作系统的细节信息。此外,powershell中的变量只存在于powershell内部的会话中,一旦powershell关闭,这些变量就会自生自灭。但是如果环境变量被更新了,它会继续保存在操作系统中,即使其它程序也可以调用它。

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

  1. PS> $env:windir
  2. C:\Windows
  3. PS> $env:ProgramFiles
  4. C:\Program Files
复制代码

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

  1. PS> "My computer name $env:COMPUTERNAME"
  2. My computer name MYHome-test-01
复制代码

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

  1. PS> ls env:
  2. Name                           Value
  3. ----                           -----
  4. ALLUSERSPROFILE                C:\ProgramData
  5. APPDATA                        C:\User\sv-test\Home\AppData\Roaming
  6. CommonProgramFiles             C:\Program Files\Common Files
  7. COMPUTERNAME                   MYHome-test-01
  8. ComSpec                        C:\Windows\system32\cmd.exe
  9. FP_NO_HOST_CHECK               NO
  10. HOMEDRIVE                      C:
  11. HOMEPATH                       Users\v-test\Home
复制代码

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

  1. PS> $env:TestVar1="This is my environment variable"
  2. PS> $env:TestVar2="Hollow, environment variable"
  3. PS> ls env:Test*

  4. Name                           Value
  5. ----                           -----
  6. TestVar1                       This is my environment variable
  7. TestVar2                       Hollow, environment variable
复制代码

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

  1. PS> del env:windir
  2. PS> $env:windir
  3. PS>
复制代码

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

  1. PS> $env:OS
  2. Windows_NT
  3. PS>  $env:OS="Redhat Linux"
  4. PS> $env:OS
  5. Redhat Linux
复制代码

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

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

  1. PS> md .myscript

  2.     Directory:

  3. Mode                LastWriteTime     Length Name
  4. ----                -------------     ------ ----
  5. d----        2011/11/29     18:20            myscript

  6. PS> cd .myscript
  7. PSmyscript> "write-host 'Hollow , Powershell'" > hollow.ps1
  8. PSmyscript> .hollow.ps1
  9. Hollow , Powershell
  10. PSmyscript> cd ..
  11. PS> $env:Path+=";C:PowerShellmyscript"
  12. PS> hollow.ps1
  13. Hollow , Powershell
  14. PS> hollow
  15. Hollow , Powershell
复制代码

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

  1. PS> [environment]::SetEnvironmentvariable("Path", ";c:\powershellscript", "User")
  2. PS> [environment]::GetEnvironmentvariable("Path", "User")
  3. ;c:\powershellscript
复制代码
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

手机版|小黑屋|日星网

GMT, 2020-9-26 06:17 AM , Processed in 0.016071 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表