所以我正在参加一个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)
我无法从读取主机获取输入。不想出于某种原因使用它= /
答案 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