1

所以我正在学习一个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)

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

4

1 回答 1

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
于 2013-10-26T23:39:32.553 回答