Cat*_*c27 6 powershell environment-variables
因此,解释我的问题的最简单方法是向您展示我正在尝试做的事情的简化版本:
PS C:\> $a = 'hello'
PS C:\> $a
hello
PS C:\> $b = '$a world!'
PS C:\> $b
$a world!
Run Code Online (Sandbox Code Playgroud)
现在我真正想要的是调用 $b 来返回 'hello world!' 但我显然不能像这样在花药变量中调用变量。有没有人有任何建议或解决方法?我觉得我只是在这里遗漏了一些明显的东西。
编辑:我正在尝试做的更准确的版本:
PS C:\> $selHost = (get-content c:\scripts\hosts.txt)[0]
PS C:\> $selhost
spr-it-minion
PS C:\> $a = (get-content c:\scripts\config.txt)[1]
PS C:\> $a
$selhost Is Offline!
PS C:\> $b = "$a"
PS C:\> $b
$selhost Is Offline!
Run Code Online (Sandbox Code Playgroud)
所以我从hosts.txt 中取出第一行并将其设置为$selhost,即'spr-it-minion'。然后我从 config.txt 中拉出第二行,它只是字符串 '$selhost is offline!' 希望当我调用 $a 时,我得到“spr-it-minion 离线!” 我不知道该怎么做。
编辑二:分别修改hosts.txt和config.txt的内容。
主机.txt:
spr-it-minion
spr-saflok
spr-crosby
spr-vmhost01
spr-vmhost02
spr-vmhost03
Run Code Online (Sandbox Code Playgroud)
配置文件:
172.31.1.124
$selhost Is Offline!
$selhost Is Offline!
example@company.com
example2@company.com
Run Code Online (Sandbox Code Playgroud)
编辑 III:如果你们有兴趣的话,可以将Pastebin 粘贴到我的实际脚本中。
第 15 行:我将 $alertSubject 设置为字符串“$selhost is offline!” 没有引号或任何东西。
第 82 行:我使用 $alertSubject 作为电子邮件警报的主题行,希望它包含的变量将其值表示为:“spr-it-minion 离线!” 但是当我收到电子邮件或尝试在脚本中的任何位置写入主机 $alertSubject 时,它只会说“$selhost 离线!”
在 PowerShell 中定义变量时,单引号 ( ') 表示您需要字符串的文字版本。"如果要允许变量扩展,请使用双引号 ( ):
PS C:\> $a = "hello"
PS C:\> $a
hello
PS C:\> $b = "$a world!"
PS C:\> $b
hello world!
Run Code Online (Sandbox Code Playgroud)
更多信息:
评论后编辑:
对于您从文件中提取行的示例,这有点棘手,因为它将行作为文字字符串提取。
最简单的方法 (IMO) 是使用Replace方法;就像是:
$selHost = (get-content c:\scripts\hosts.txt)[0]
$a = ((get-content c:\scripts\config.txt)[1]).replace('$selhost', $selHost)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23693 次 |
| 最近记录: |