使用 PowerShell 命令操作环境变量

一般我们添加环境变量都是 右键此电脑->属性->高级系统设置->环境变量 通过鼠标来操作的。
但除此以外,我们还可以通过 PowerShell 来用命令行添加环境变量。

PowerShell 提供了几种不同的方法来使用和管理环境变量。

  • 变量语法
  • 环境提供程序和项 cmdlet
  • .NET System.Environment 类

阅读前须知:在本文中 方法一 和 方法二 设置的环境变量是临时的,重启系统后会失效。



显示环境变量的值

  1. 方法一:变量语法

    $Env:<variable-name>
    

    image-20230302104200143

  2. 方法二:环境提供程序和项 cmdlet

    Get-Item -Path Env:\<variable-name>
    

    image-20230302104302748

  3. 方法三:.NET System.Environment 类

    GetEnvironmentVariable 有两个参数,第一个是变量名,第二个是指定范围(用户变量、系统变量),默认是用户变量。

    若要查看或设置系统变量,需要以管理员身份运行 PowerShell。

    [Environment]::GetEnvironmentVariable('<variable-name>')
    [Environment]::GetEnvironmentVariable('<variable-name>', 'User')
    [Environment]::GetEnvironmentVariable('<variable-name>', 'Machine') # 需要以管理员身份运行 PowerShell
    

    image-20230302105014885



创建和更新环境变量的值

  1. 方法一:变量语法

    $Env:<variable-name> = "<new-value>"
    

  1. 方法二:环境提供程序和项 cmdlet

    New-Item -Path Env:\Foo -Value 'Bar'
    # 或者 
    Set-Item -Path Env:\Foo2 -Value 'BAR'
    

  2. 方法三:.NET System.Environment 类

    [Environment]::SetEnvironmentVariable('<variable-name>','<new-value>')
    


    推荐:将环境变量添加到系统的 PATH 中

    [Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";<new-value>", "Machine") # 添加到系统变量的 PATH
    

    image-20230302105434105



删除环境变量

由于环境变量不能为空字符串,因此将环境变量设置为 $null 或空字符串会将其删除。

  1. 方法一:变量语法

    $Env:<variable-name> = ''
    

  1. 方法二:环境提供程序和项 cmdlet

    Remove-Item -Path Env:\<variable-name> -Verbose
    

  1. 方法三:.NET System.Environment 类

    [Environment]::SetEnvironmentVariable('<variable-name>','')
    

参考文章

微软官方说明文档

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 PowerShell 中,可以使用 `Select-String` 命令来实现类似于 Unix `sed` 命令的功能。以下是一些例子: 1. 将文件中的某个字符串替换为另一个字符串: ```powershell (Get-Content file.txt) | ForEach-Object { $_ -replace 'old_string', 'new_string' } | Set-Content file.txt ``` 其中,`file.txt` 是要处理的文件名,`old_string` 是要替换的字符串,`new_string` 是替换后的字符串。 2. 删除文件中的某个字符串: ```powershell (Get-Content file.txt) | ForEach-Object { $_ -replace 'string_to_delete', '' } | Set-Content file.txt ``` 其中,`string_to_delete` 是要删除的字符串。 3. 在文件中的某个位置插入一行内容: ```powershell (Get-Content file.txt) | ForEach-Object { $_; if ($_ -match 'insert_after_this_line') { 'new_line_to_insert' } } | Set-Content file.txt ``` 其中,`insert_after_this_line` 是要在其后面插入新行的那一行的字符串,`new_line_to_insert` 是要插入的新行的内容。 注意,在 PowerShell 中,管道符 `|` 的作用类似于 Unix 中的管道符,可以将前一个命令的输出作为后一个命令的输入。而在 Unix 中,`sed` 命令通常用于文本流的过滤和转换,可以直接从标准输入或者文件中读取数据,并将处理结果输出到标准输出或者文件中。因此,在 PowerShell 中,需要先读取文件内容,然后对其进行处理,最后再将处理结果写入文件。 ### 回答2: PowerShell是一种功能强大的脚本语言和命令行工具,用于管理和自动化Windows操作系统。它包含了许多内置命令和功能,其中没有直接的sed命令。sed命令是在类Unix系统中常用的流编辑器,用于处理文本文件。 虽然PowerShell没有内置的sed命令,但可以使用其他命令和功能来实现类似的功能。以下是一些可以在PowerShell中替代sed命令的常用方法: 1. 使用正则表达式替换:PowerShell中的 `-replace` 运算符可以使用正则表达式来替换文本。例如,可以使用以下命令替换文本文件中的所有"foo"为"bar": ```powershell (Get-Content file.txt) -replace 'foo', 'bar' | Set-Content file.txt ``` 2. 使用`Select-String`命令:`Select-String`命令可以找到字符串匹配的文本行,并可以使用`-replace`参数进行替换。以下命令将文件中的"foo"替换为"bar": ```powershell (Get-Content file.txt) | ForEach-Object { $_ -replace 'foo', 'bar' } | Set-Content file.txt ``` 3. 使用`Get-Content`和`Set-Content`命令:如果不需要基于正则表达式进行替换,可以使用`Get-Content`读取文件内容,然后使用`Set-Content`写回修改后的内容。以下命令将文件中的"foo"替换为"bar": ```powershell $content = Get-Content file.txt $content = $content -replace 'foo', 'bar' $content | Set-Content file.txt ``` 总之,PowerShell可以使用一些内置的命令和功能来达到类似于sed命令的功能。它提供了灵活性和强大的文本处理能力,使得在Windows环境下进行文本处理变得更加容易和便捷。 ### 回答3: Powershell中的sed命令是用来在文本中执行模式匹配和替换操作的工具。Sed是一个强大的文本处理工具,可以通过正则表达式匹配和替换文本中的内容。 在Powershell中,可以使用`-replace`操作符来实现类似sed命令的功能。`-replace`操作符可以接受一个正则表达式模式和一个替换字符串,从而实现对文本的替换。以下是一个简单的示例: ```powershell $content = "Hello, World!" $newContent = $content -replace "Hello", "Hi" Write-Output $newContent ``` 以上示例中,我们将`$content`变量中的内容从`Hello`替换为`Hi`,然后通过`Write-Output`输出新的内容。运行该脚本,将会输出`Hi, World!`。 除了简单的替换,`-replace`操作符还支持正则表达式的使用,可以通过正则表达式进行模式匹配和替换。例如,我们可以使用正则表达式来匹配名字中的所有数字并替换为空字符串: ```powershell $name = "John123Doe" $newName = $name -replace '\d', '' Write-Output $newName ``` 以上示例中,我们使用`'\d'`的正则表达式模式匹配字符串`John123Doe`中的所有数字,并将其替换为空字符串。运行该脚本,将会输出`JohnDoe`。 因此,虽然Powershell中没有一个直接等效于sed命令命令,但使用`-replace`操作符可以实现类似的功能,实现文本的模式匹配和替换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值