根据输出更改变量
Changing a variable based on output
下午好,
首先我想说我是 PS 的新手,如果我的方法冗长或不准确,我真的很抱歉。
我有一个计算机名列表,这些计算机名声明为我的同事提供给我的单个变量:
$Jon = "Abc1234"
$Mike = "Abc6789"
- 另外 10 个主机名
然后我询问用户是否要将文件发送到另一台 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
下午好, 首先我想说我是 PS 的新手,如果我的方法冗长或不准确,我真的很抱歉。
我有一个计算机名列表,这些计算机名声明为我的同事提供给我的单个变量:
$Jon = "Abc1234"
$Mike = "Abc6789"
- 另外 10 个主机名
然后我询问用户是否要将文件发送到另一台 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