根据输出更改变量

Changing a variable based on output

下午好, 首先我想说我是 PS 的新手,如果我的方法冗长或不准确,我真的很抱歉。

我有一个计算机名列表,这些计算机名声明为我的同事提供给我的单个变量:

$Jon = "Abc1234"
$Mike = "Abc6789"

然后我询问用户是否要将文件发送到另一台 PC :

$Targetuser = Read-Host 'Who would you like to send it to?'

我想要将上面的输出更改为主机名,但我不确定如何执行此操作。 本质上,如果输出是 Mike,将 $targetuser 变量更改为 $Abc6789

提前致谢

动态命名变量几乎总是一个坏主意。相反,使用字典类型,如哈希表:

# Define user->host dictionary
$Hostnames = @{
  Jon  = "Abc1234"
  Mike = "Abc6789"
}

# Ask user for target user
$TargetUser = Read-Host 'Who would you like to send it to?'

# Keep asking until the enter an actual user name
while(-not $Hostnames.ContainsKey($TargetUser)){
  Write-Host "No hostname found for user '${targetUser}'!"
  Write-Host "Choose one of:"
  Write-Host ($Hostnames.Keys -join "`n")
  $TargetUser = Read-Host 'Who would you like to send it to?'
} 

# Get the associated hostname
$TargetHost = $Hostnames[$TargetUser]

# copy file to $TargetHost