PowerShell函数参数指定数据类型实例

本文介绍在PowerShell创建自定义函数时,为必选参数设置强类型有什么好处,应该如何设置。

为了提高必选参数的安全性,PowerShell函数定义的最佳实践告诉我们,要为必选参数设置强类型。这是为什么呢,我们来看一个例子。

代码如下:

function Test-Me {
    param
    (
        [Parameter(Mandatory=$true, HelpMessage='Enter number of EUROs!')]
        $Euro
    )
    $Dollar = $Euro * 1.4
    $Dollar
}

上面这个例子是接收用户输入一个欧元值,然后,输出美元值。相当于是在两个货币之间做了一下换算。实际执行的效果让人很吃惊,且看:

代码如下:

PS> Test-Me -Euro 100
140
PS> Test-Me
cmdlet Test-Me at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
Euro: 100
100

这里测试了两次,第一个测试没有问题:100*1.4=140。但第二个测试就蛋疼了,怎么100*1.4还等于100呢?其实是这样的,输入的100被当作了一个字符串,而不是一个数字。所以一个字符串乘以1.4,就相当于把这个字符串重复1.4次,四舍五入,那就是重复1次,那还是原样,所以你知道这个100怎么来的了吧?

好了,这就是我们说的安全性。不为必选参数设置强类型不安全!我们来将其设置为Double类型。

代码如下:

function Test-Me {
    param
    (
        [Parameter(Mandatory=$true, HelpMessage='Enter number of EUROs!')]
        [Double]
        $Euro
    )
    $Dollar = $Euro * 1.4
    $Dollar
}

大家可以试试这段代码还会不会出现之前的问题了。因为这里加了一个[double]的指令,起到了一个强制数据类型的作用。

关于为PowerShell函数必选参数设置强类型,本文就介绍这么多,希望对您有所帮助,谢谢!

(0)

相关推荐

  • PowerShell函数参数设置成自动识别数据类型的例子

    本文介绍PowerShell自定义函数中使用参数集时,怎么设置系统自动识别参数的数据类型. 识别参数类型的一个好处就是,在使用参数集时,不需要每次都指定参数名称了. 请看下面这个Test-Binding函数.这个PowerShell函数在设置参数集的时候,为参数集中的第一个参数设置了数据类型,这样在调用函数时,就可以自动判断一个参数值它应该赋给哪个参数了. 复制代码 代码如下: function Test-Binding {     [CmdletBinding(DefaultParameter

  • PowerShell函数参数指定数据类型实例

    本文介绍在PowerShell创建自定义函数时,为必选参数设置强类型有什么好处,应该如何设置. 为了提高必选参数的安全性,PowerShell函数定义的最佳实践告诉我们,要为必选参数设置强类型.这是为什么呢,我们来看一个例子. 复制代码 代码如下: function Test-Me {     param     (         [Parameter(Mandatory=$true, HelpMessage='Enter number of EUROs!')]         $Euro  

  • PowerShell函数参数设置为即可选又必选的方法

    本文介绍PowerShell自定义函数中使用参数集时,可以将同一个参数既设置为可选,又设置为必选. 好吧,小编承认,这个话题有点无聊,但确实还是有点有趣,不妨看一看啦. 在PowerShell中,我们有可能有这样的需求,如果只需要输入某个参数时,这个参数是可选的.但如果还要输入别的参数,那这个参数就变成必选的了.那么这种需求如何来满足呢?那就是本文的意义所在了. 复制代码 代码如下: function Connect-Somewhere {     [CmdletBinding(DefaultP

  • PowerShell函数参数用星号隐藏的方法

    本文介绍在PowerShell中创建函数时,如何让函数的参数输入值的时候自动变成星号. 什么叫自动变成星号呢?举个例子,我们在登录一个邮箱时,输入用户时看到的是明文的,但我们在输入密码时,看到的是一个个增加的星号.在使用PowerShell自定义函数时,如何设置才能让输入密码之类的参数时,自己用星号掩盖呢?且往下看. 复制代码 代码如下: function Test-Password {     param     (     [Parameter(Mandatory=$true)]     $

  • PowerShell函数参数使用智能提示功能例子

    本文介绍在自定义PowerShell函数时,如何设置函数可以智能提示参数值.参数值的智能提示这个功能是在PowerShell 3.0中出现的新功能. 在PowerShell 3.0版本中,出现了一项新的功能,那就是参数值的智能提示.当然,不是随便在哪里都会智能提示参数值,而是只能在ISE中.当然,所谓的ISE就是PowerShell自带的一个集成开发环境. 那么,我们自己在开发一个PowerShell函数时,我们应该怎么设置才能让我们的函数在ISE中也能智能提示参数的值呢?看看下面这个例子. 复

  • PowerShell定义函数参数的2种方法和传参方法实例

    本文介绍PowerShell自定义函数定义参数的两种方法,一种是将参数列表放到函数名之后,就跟其它语言定义函数参数一样:另一种则是PowerShell独有的方式,那就是使用param关键词. 先来看看第一种定义参数的方式--将参数列表放到函数名之后 举个例子先看看: 复制代码 代码如下: function Test-Function($参数名1='默认参数值1', $参数名2='默认参数值2') {     Write-Host "参数1=$参数名1,参数2=$参数名2"; } 这种方

  • PowerShell函数指定返回值类型实例

    本文介绍在自定义PowerShell函数时,如何设置返回值的数据类型.PowerShell函数的返回值可以有类型,也可以没有类型,跟输入参数相似.     定义PowerShell函数的返回值类型,要使用OutputType这个指令.将这个指令放到param指令之前即可实现对返回值类型的定义. 复制代码 代码如下: function Test-IntelliSense {     [OutputType('System.DateTime')]     param()     return Get

  • PowerShell函数中接收管道参数实例

    本文介绍在自定义PowerShell函数时,如何设置函数通过管道(Pipeline)接收输入参数. 先看一个例子,用管道作为输入参数的函数: 复制代码 代码如下: function Test-Pipeline {     param(         [Parameter(ValueFromPipeline=$true)]         $InputObject     )     process     {         "Working with $InputObject"  

  • PowerShell函数中的开关参数介绍和创建实例

    本文介绍什么是开关参数,在PowerShell自定义函数中,如何创建开关参数并使用开关参数的值. 什么叫开关参数呢?举个例子,技术男一般都知道有一个网络命令叫"Ping",我们可以使用"ping www.jb51.net"这样一个命令来检查本地计算机到www.jb51.net这个网站所在的服务器网络是否连通.这个命令会从本地发送4个数据包到www.jb51.net服务器,并显示每个数据包是否收到了反馈结果.如果我正在重启www.jb51.net这台服务器,那么pin

  • PowerShell函数中使用$PSBoundParameters获取输入参数列表实例

    本文介绍在自定义PowerShell函数时,有一个$PSBoundParameters的变量可以获取到输入参数列表.获取输入参入列表对我们进行功能调试有很大的帮助. 当我们在执行一个函数时,可以使用输入参数的值,但我在PowerShell中,参数有的是必选,有的是可选,那么我们怎么知道用户真实的输入了哪些参数呢? 在PowerShell函数中,有一个全局变量$PSBoundParameters,它是一个Hash表,里面保存了所有的输入参数和输入参数的值.通过输出这个变量,我们就可以看到所有的输入

随机推荐