根据本地主机名设置特定的变量

时间:2019-06-07 04:01:33

标签: powershell hostname

我一直都在寻找,但是我却找不到如何做到的。我想根据计算机的本地主机名设置一个特定的变量。

例如,如果本地计算机名称为COMPUTER1,则设置此变量。如果本地计算机名称是COMPUTER2,则设置此变量。否则,写入主机“错误”并退出。

我已经加密了密码文件,这些密码文件仅在创建它们的计算机上起作用。所以我想根据我使用的机器使用一个密码文件。

这是我要使用的密码变量,基于我正在使用的计算机:

$Pass = Get-Content "C:\Creds.txt" | ConvertTo-SecureString

3 个答案:

答案 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