powershell - 如何添加值包含 $ 符号的变量?
问题描述
再会,
我有一段代码连接到 ESXi 服务器并检索一些信息。现在我有一个问题,我在很多不同的 ESXi 上远程运行它。这意味着我的密码是脚本中的一个变量 ($env:ESXPassword) .. 但是问题就在这里。当密码中有美元符号时,它会将密码的一部分视为变量,但是当我将其放在单引号中或使用任何其他建议时.. 它不再将 $env:ESXPassword 视为变量,它不会注入正确的密码。我无法将密码本身放入脚本中,因为它只是根据我通过我的 MSP 软件远程运行它的客户而改变。
我希望我只是错过了一些非常明显/合乎逻辑的东西。
到目前为止,我尝试过: - 单引号 - 使用反引号等转义字符对其进行转义 - 让它从文本文件中读取密码(就像测试一样,因为这显然不够安全)
遗憾的是,没有一个选项奏效。
$secureStringPwd = $env:ESXPassword | ConvertTo-SecureString -AsPlainText -Force
$user = $env:ESXUser
$creds = New-Object System.Management.Automation.PSCredential -ArgumentList $user, $secureStringPwd
Connect-VIServer -Server $env:ESXName -Protocol https -Credential $creds
当它使用 $ 符号输入密码时,它会照此输入。例如 Pa$word 它会给出 $word 不包含任何信息的错误,并说明密码“Pa”是错误的。
我当然希望它看到 Pa$word 作为密码并允许它连接。
编辑:编辑掉一些不需要的引号,从 AdminOfThings 的评论中可以看出
解决方案
根据与此变量交互的应用程序/可执行文件,转义序列可能会有所不同。PowerShell 转义字符是反引号。如有必要,您可以在代码需要变量内容之前进行字符串替换。以下将替换$
PowerShell 转义等效项`$
:
$env:ESXPassword.Replace('$','`$')
推荐阅读
- jenkins - Jenkins管道卡在构建工作上
- python - 链接:致命错误 LNK1104:无法打开文件“python37_d.lib”
- python - KivyMd 屏幕不变
- java - 如何将 X 和 Y 转换为 lat 和 long
- sql - 实施部分付款表
- node.js - 我无法在 jhipster 中构建 webpack prod
- python - 为什么熊猫散点图方法会引发警告?
- amazon-cloudwatch - 带有字符串的 AWS Log Insights 查询包含
- reactjs - 我如何更新商店页面加载第一次反应挂钩?
- ios - 为 Swift 5 自动定义的 pausesLocationUpdatesAutomatically 在哪里?