我一直都在寻找,但是我却找不到如何做到的。我想根据计算机的本地主机名设置一个特定的变量。
例如,如果本地计算机名称为COMPUTER1,则设置此变量。如果本地计算机名称是COMPUTER2,则设置此变量。否则,写入主机“错误”并退出。
我已经加密了密码文件,这些密码文件仅在创建它们的计算机上起作用。所以我想根据我使用的机器使用一个密码文件。
这是我要使用的密码变量,基于我正在使用的计算机:
$Pass = Get-Content "C:\Creds.txt" | ConvertTo-SecureString
答案 0 :(得分:0)
这应该可以帮助您。
if(($env:COMPUTERNAME -eq 'COMPUTER1') -or ($env:COMPUTERNAME -eq 'COMPUTER2')) {
$Pass = Get-Content "C:\Creds.txt" | ConvertTo-SecureString
} Else {
Throw "Hostname not valid"
}
一个简单的if / else语句,用于检查计算机的环境名称,否则错误并退出
答案 1 :(得分:0)
一种方法是为此使用Switch case:
$ComputerName = "$env:computername" # GET COMPUTER NAME $filename = $null ; # COMMON VARIABLE FOR FILE NAME switch ($ComputerName) { "COMPUTER1" { $filename = "C:\xyz.txt" } # CASE 1 "COMPUTER2" { $filename = "D:\xyz.txt" } # CASE 2 "COMPUTER3" { $filename = "C:\pass\xyz.txt" } # CASE 3 default {"ERROR"} # DEFAULT CASE ( ERROR ) } # END OF SWITCH CASE $Pass = Get-Content $filename | ConvertTo-SecureString
答案 2 :(得分:0)
这听起来像是查找表/哈希表的好用例。 [咧嘴]是这样的...
$CompFileLookup = @{
LocalHost = 'c:\temp\LocalHost.Key'
$env:COMPUTERNAME = "C:\temp\$($env:ComputerName).key"
'127.0.0.1' = 'c:\temp\127-0-0-1.key'
}
$ComputerNameList = @(
'LocalHost'
'BetterNotBeThere'
$env:COMPUTERNAME
'10.0.0.1'
'127.0.0.1'
)
foreach ($CNL_Item in $ComputerNameList)
{
$FileToUse = $CompFileLookup[$CNL_Item]
if ($FileToUse)
{
$FileToUse
}
else
{
Write-Warning ('No matching computer name found for [ {0} ].' -f $CNL_Item)
}
}
输出...
c:\temp\LocalHost.Key
WARNING: No matching computer name found for [ BetterNotBeThere ].
C:\temp\ZK_01.key
WARNING: No matching computer name found for [ 10.0.0.1 ].
c:\temp\127-0-0-1.key