【问题标题】:How to input two variables into one command如何在一个命令中输入两个变量
【发布时间】:2018-03-14 06:52:39
【问题描述】:

我被困在这个: 用户需要输入两个计算机名称,我不知道如何将它们转换为一个输入(也许我问错了),但这里是代码

elseif ($usersinput -eq 2) 
{
    $pingingtwopcs = Read-Host -Prompt "what are the names of the pc that >you want to ping? (please enter pc names in the next order with comma : >pc1,pc2)"
    foreach ($pcs in $pingingtwopcs)
    {
        Test-Connection -computername $pcs -Count 1
    }
}

请不要提供解决方案,如果可以请指导我,我会自己解决。

【问题讨论】:

  • Read-Host 将返回一个字符串,而不是两个变量。所以你必须split那个字符串

标签: powershell variables user-input


【解决方案1】:

不要使用Read-Host,这是糟糕的设计,不允许自动化。 而是让用户将 ComputerName(s) 作为字符串或数组提供。

function Write-ComputerName([System.Array]$ComputerName) {
    foreach($oneComputerName in $ComputerName){
        Write-Output $oneComputerName
    }
}

然后一个用户可以传入一个或多个:

Write-ComputerName 'Bob'
Write-ComputerName @('Bob','Alice')

如果您仍然需要根据计算机名称的数量进行自定义逻辑,那么您可以在函数中使用$ComputerName.Count

【讨论】:

  • 但是它会变成一个函数并且表现得像一个 cmdlet,不是吗?
  • 是的。但这是 PowerShell 的要点之一,即拥有一个通用的、定义良好的用户界面,而无需重新发明基本的参数解析/检索逻辑。
  • 我的朋友,我在 power shell 中只有 3 周(这是第三周结束)让我做我的错误,做我理解的事情 :) 在我习惯它之后,我向你保证事情会好很多 :) 谢谢你的帮助 :)
【解决方案2】:

你可以这样做 -

$pingingtwopcs = (Read-Host -Prompt "what are the names of the pc that >you want to ping? (please enter pc names in the next order with comma : >pc1,pc2)").split(',') | ForEach-Object {$_.trim()}

上面的行将接受两个值,由comma 分隔,一次执行。由于Read-Host 接受String 格式的输入,因此您必须使用Split() 方法将它们分开并将其存储在$pingingtwopcs 中。 Trim() 方法将删除输入过程中输入的任何多余空格。

【讨论】:

  • 所以它应该看起来像这样: $pingingtwopcs = (Read-Host -Prompt "你要 ping 的电脑的名称是什么?(请用逗号输入下一个顺序的电脑名称: >pc1,pc2)").split(',') | ForEach-Object {$_.trim()} foreach ($computer in $pingingtwopcs) { Test-Connection -ComputerName $computer -Count 1 soryy 因为某种原因它是这样写的,“>”符号不起作用:\它正在工作~!!@!@#!#@!!!!那么有什么诀窍呢?这东西“.split(',')”?
  • > 符号不起作用?你期待它做什么?无论如何,它包含在double quotes 中,并且只会显示在屏幕上,不会显示其他任何内容。当提示要求您这样做时,您必须输入两个用 comma 分隔的 PC 名称!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
相关资源
最近更新 更多