2013-10-26 227 views
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) 

我很难让它从read-host获取输入。想不使用它的一些原因=/

回答

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") 

你能解决这个问题的另一种方法是指定的$的脚型如:

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

你现在的样子,PowerShell是使用功能,您可以一个字符串,并重复了如:

"a" * 4 # outputs aaaa 

既然你指定0.31小于一个,你会得到一个空字符串作为结果,如:

("10" * .31).length # outputs 0 
+0

感谢您的建议,我很感激! 但是,我仍然没有得到脚本正常运行=/ 这是目前的脚本,但我已经尝试了可能30个不同的组合,我仍然无法让它识别($脚* .31)的一些原因。它只是出来“13英尺等于__米”其始终空白=/ – cloudnyn3

+0

写主机'嘿那里。这是一个简单的脚本,将英尺转换为米 - ForegroundColor青色-BackgroundColor品红 PAUSE 功能Converttometers($英尺) { “$脚脚等于$($英尺* 0.31)米” } Converttometers -feet(Read-host -prompt“Enter Feet”) – cloudnyn3

+0

非常感谢您的解释!这非常有帮助。我讨厌通过问你这么多问题来成为一种负担。添加[double]参数是什么使得这个脚本能够工作?我使用了你制作的脚本并添加了双参数。现在它工作了!为什么只有当我添加特定参数时才起作用? – cloudnyn3