这是小技巧文章,所以文章不长。但原创唯一,非常重要。我搜了下,还真没有人发 powershell怎样 【命令行 参数 绑定】,所以我决定写成博客。

搜索关键字如下:

powershell 命令行 参数 绑定

powershell 传入 参数

powershell 传递 参数

powershell CmdletBinding

powershell 命令行 参数 绑定 传入 传递 parameter CmdletBinding

powershell 传教士 原创文章。始于 2016-09-26 允许转载,但必须保留名字和出处,否则追究法律责任

---【写文章初衷】---

powershell 前人写了几篇powershell传值的帖子,但那些都是讲$args的。而我这篇主要讲CmdletBinding的。大家不可不知。

---【powershell 脚本的 命令行参数绑定】---

问:什么是$args传值法?

答:我把它称为【参数位置传值法】。 $args 是一个对象数组。数组中的值,分别为 【第一个参数】,【第二个参数】,【第三个参数】

设命令行为:

ps>a脚本1.ps1 参数1 参数2 参数3

那么 $args[0] 的值为【参数1】, $args[1] 的值为【参数2】, $args[2] 的值为【参数3】,

我个人喜欢这种传值方法。因为写起来用起来简单。 但是有个缺点,位置固定。

问:什么是CmdletBinding传值法?

答:我把它称为【给脚本内部变量名】传值法。 这种传值法适合于传递多个参数值,并且参数值的位置随机。

设命令行为:

ps>b脚本2.ps1 -嫦娥姐姐刚走_国庆节就要来了_十一吃点啥好呢 “攒钱等双十一剁手中”  -中国的英文单词是什么 ‘china’

那么脚本应该这样写:

[CmdletBinding()]
Param(
[string]$嫦娥姐姐刚走_国庆节就要来了_十一吃点啥好呢,
#脚本命令行参数绑定例子 powershell传教士 制作 分享
[string]$中国的英文单词是什么,
[string]$aAaa = 'k',
[Int32]$数字 = 17
) $a = 'xxx' + $嫦娥姐姐刚走_国庆节就要来了_十一吃点啥好呢 + 'yyy'
write-host $a write-host $中国的英文单词是什么

---【powershell 函数 的命令行绑定】---

函数的命令行绑定,也是一样,请看代码:a.psm1

function aaa
{
[CmdletBinding()]
Param(
[string]$今天好心情_老熊请吃,
#脚本命令行参数绑定例子 powershell传教士 制作 分享
[int32]$a = 123
) write-host "老熊今天请吃 ? $今天好心情_老熊请吃 !!!"
Write-Host $a
}

a.psm1使用方法:

import-module d:\xxx\a.psm1

aaa      -今天好心情_老熊请吃        'ji'

返回:

老熊今天请吃 ? ji !!!

123

---【脚本的知识点】---

1 必须在Param前面加上一行 “ [CmdletBinding()] ”,才能用【给脚本内部变量名传值法】。同时$args变量将为空。即这两种传值方法鱼与熊掌不可兼得。

2 powershell命令行 支持:单引号,双引号,中文的单引号,中文的双引号。(linux版的powershell也完全支持这些)

3 powershell脚本 支持:中文变量名,中文参数名。(linux版的powershell也完全支持这些)

4 tab补全:

4.1 输入b,然后打【tab键】,即可补全出【b脚本2.ps1】。

4.2 出现【b脚本2.ps1】后,输入【空格】,然后打【-】,然后打【tab键】,即可补全出【嫦娥姐姐刚走_国庆节就要来了_十一吃点啥好呢】。当然英文也能补全出来。

5 【给脚本内部变量名传值法】,【$args参数位置传值法】。这两种传值方法,支持从powershell 2.0到最新版 powershell 5.1。

-完-

powershell脚本,命令行参数传值,并绑定变量的例子的更多相关文章

  1. PowerShell并发控制-命令行参数之四问

    传教士问: win下如何 获取进程命令行,及命令行参数? 传教士答: 可以用这个powershell命令(实际上是wmi查询): (get-wmiobject -query "select ...

  2. shell脚本命令行参数里的空白符

    看一个小脚本 #!/bin/bash #demonstarting the shift command count= while [ -n "$1" ] ; do echo &qu ...

  3. .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

    较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参 ...

  4. Linux进程-命令行参数和环境列表

    命令行参数 在C中,main函数有很多的变种,比如 main(), int main(), int main(int argc, char *argv[]), int main(int argc, c ...

  5. optparse--强大的命令行参数处理包

    optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. optparse的简单示例: from optparse import OptionPa ...

  6. 【Shell脚本学习8】Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运 ...

  7. kettle文件自动化部署(shell脚本执行):命令行参数传入

    shell脚本中调用kitchen 和 pan去执行,job和transformation文件.分 windows和 dos系统两种. 举个简单的小例子 shell脚本: export JAVA_HO ...

  8. [深入Maven源代码]maven绑定命令行参数到具体插件

    maven的插件 我们知道Maven具体构建动作都是由插件执行的,maven本身只是提供一个框架,这样就提供了高度可定制化的功能,我们用maven命令执行比如mvn clean package这样的命 ...

  9. Python 处理脚本的命令行参数(二):使用click

    安装click pip install click 使用步骤 使用@click.command() 装饰一个函数,使之成为命令行接口 使用@click.option() 等装饰函数,为其添加命令行选项 ...

随机推荐

  1. 用java PreparedStatement就不用担心sql注入了吗?

    先感慨下,好久没写博客了,一是工作太忙,二是身体不太给力,好在终于查清病因了,趁着今天闲下来,迫不及待与读者交流,最后忠告一句:身体是活着的本钱! 言归正传,对java有了解的同学基本上都体验过JDB ...

  2. Objective-C 工厂模式(上) -- 简单工厂模式

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...

  3. 如何转型成为SQL Server DBA

        本篇PPT是我在2015 MVP OPEN Day Comunity Camp上分享的课程.之所以选择这个主题是因为有很多人曾经问过这方面的问题,而与之相关的主题却少之又少,因此我希望将自己的 ...

  4. ECMAScript

    在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象(Object)和函数对象(Function). 一般而言,通过new Function产生的对象是函数对象,其他对 ...

  5. Triangle - Delaunay Triangulator

    Triangle - Delaunay Triangulator  eryar@163.com Abstract. Triangle is a 2D quality mesh generator an ...

  6. 前端学PHP之数组函数

    × 目录 [1]键值操作 [2]记数[3]回调函数[4]组合[5]栈和队列[6]顺序 前面的话 PHP中的数组功能非常强大,数组处理函数有着强大.灵活.高效的特点.PHP5提供了近100个操作数组的系 ...

  7. Activity四种启动模式

    转载博客:http://blog.csdn.net/shinay/article/details/7898492 Activity启动方式有四种,分别是:standardsingleTopsingle ...

  8. 克隆您的Git代码库和添加源文件

    内容正在建设中 标签:Bitbucket

  9. C# 对象锁

    现在有一种场景,服务端将一个任务派发给10个客户端执行,所有客户端执行完后,整个任务才算执行完. 每个客户端执行完后,通过http发送一个完成的消息给服务端,服务端发送邮件通知给用户. 当10个客户端 ...

  10. android 如何获取手机的图片、视频、音乐

    在android 开发中,很多时候,我们会需要调用到用户本机的照片.视频或者是音乐让用户选择,来进行我们APP对应的操作. button.setOnClickListener(new OnClickL ...