0

下午好,我只想说我对 PS 完全陌生,如果我的方法冗长或不准确,我深表歉意。

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

$Jon = "Abc1234"
$Mike = "Abc6789"
  • 另外 10 个主机名

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

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

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

提前致谢

4

1 回答 1

1

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

# 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
于 2021-05-25T13:58:36.163 回答