Установить конкретные переменные на основе локального имени хоста - PullRequest
0 голосов
/ 07 июня 2019

Я искал повсюду, но не могу найти, как это сделать.Я хотел бы установить конкретную переменную на основе локального имени хоста моего компьютера.

Например, если имя локального компьютера - COMPUTER1, задайте эту переменную.Если имя локального компьютера - COMPUTER2, установите эту переменную.В противном случае запишите "Ошибка" и завершите работу.

У меня есть зашифрованные файлы паролей, которые работают только на машинах, на которых они были созданы.Поэтому я хочу использовать один из файлов паролей в зависимости от того, какую машину я использую.

Вот переменная пароля, которую я хочу использовать в зависимости от компьютера, с которого я работаю:

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

Ответы [ 3 ]

0 голосов
/ 07 июня 2019

Одним из способов является использование переключателя для этого:

$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
0 голосов
/ 07 июня 2019

это звучит как хороший пример использования таблицы соответствия / хэш-таблицы.[ ухмылка ] как-то так ...

$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   
0 голосов
/ 07 июня 2019

Это должно помочь вам.

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 для проверки имени среды вашего компьютера, в противном случае ошибка и выход

...