转换功能无法正常工作

时间:2013-10-26 20:05:54

标签: powershell

所以我正在参加一个PowerShell课程,我正在尝试创建一个将脚转换成米的脚本。这是我到目前为止,但它没有正常工作。我一直在修补它大约一个小时,但不能让它正常运作。

Write-Host Hey there. This is an easy script that will convert Feet to Meters - ForegroundColor Cyan -BackgroundColor Magenta
PAUSE;
Function script:converttometers($feet)
{
    "$feet feet equals $($feet*.31) Meters"
} #end Converttometers

Converttometers -feet $feet(Read-Host)

我无法从读取主机获取输入。不想出于某种原因使用它= /

1 个答案:

答案 0 :(得分:1)

尝试按照以下方式调用您的函数:

ConvertToMeters -feet (Read-Host -prompt "Enter feet")

另请注意,当您使用Write-Host向控制台写入消息并且未引用该字符串时,PowerShell将删除多余的空格和逗号。如果你必须小心-,因为Powershell可能会尝试将以下文本解释为参数。随后我建议只使用引号:

Write-Host 'Hey there. This is an easy script that will convert Feet to Meters' -ForegroundColor Cyan -BackgroundColor Magenta
这是一种可怕的色彩组合。 : - )

你遇到的另一个问题是因为$ feet是一个字符串而不是一个数字。试试这样:

Write-Host 'Hey there. This is an easy script that will convert Feet to Meters' -Fore Cyan -Back Magenta 
PAUSE 

Function ConverTo-Meters($feet) { 
    "$feet equals $(.31*$feet) meters" 
} 

ConvertTo-Meters -feet (Read-host -prompt "Enter Feet")

另一种解决方法是指定$ feet的类型:

Function Converttometers([double]$feet) { ... }

现在的方式,PowerShell正在使用一个功能,你可以在其中取一个字符串并重复它,例如:

"a" * 4 # outputs aaaa

由于你指定了小于1的.31,你得到一个空字符串,例如:。

("10" * .31).length # outputs 0
相关问题