【转】PowerShell 函数(Function)
转至:http://blog.csdn.net/kk185800961/article/details/49022395
函数基本操作:
[plain] view plain copy
- #创建函数
- Function GetSQLService
- {
- Get-Service -DisplayName "*SQL*"
- }
- #调用函数,直接写函数名
- GetSQLService
- #查看函数定义
- $Function:GetSQLService
- #导出函数定义到文本
- $Function:GetSQLService | Out-File E:\GetSQLService.ps1
- #删除函数
- del Function:GetSQLService
- #查看内部自定义函数:
- dir function: | ft -AutoSize
创建带参数的函数,三种方法(会覆盖同名函数):
[plain] view plain copy
- #创建带参数的函数,三种方法(会覆盖同名函数)
- Function GetSQLService($ServiceName)
- {
- Get-Service -DisplayName "*$ServiceName*"
- }
- Function GetSQLService
- {
- param($ServiceName)
- Get-Service -DisplayName "*$ServiceName*"
- }
- #有默认值的参数
- Function GetSQLService
- {
- param($ServiceName='SQL')
- Get-Service -DisplayName "*$ServiceName*"
- }
- #多个参数
- Function GetSQLService
- {
- param($ServiceName,$KeyWord)
- Get-Service -DisplayName "*$ServiceName*$KeyWord*" | Format-Table -AutoSize
- }
调用函数:
- GetSQLService
- GetSQLService SQL
- GetSQLService -ServiceName SQL
- GetSQLService -KeyWord MSSQLSERVER
- GetSQLService -ServiceName SQL -KeyWord MSSQLSERVER
万能参数,无需声明参数,直接使用内部参数:
- Function GetSQLService
- {
- Get-Service -DisplayName "*$args*"
- }
[plain] view plain copy
- #这里用其他参数名,调用时函数将无法识别参数,不可这样使用。只能用$args
- Function GetSQLService
- {
- Get-Service -DisplayName "*$ServiceName*"
- }
求和函数示例:
- #求和函数,调用函数时参数 $args 可以同时输入多个值。
- Function Add
- {
- $sum=0
- $args | foreach {$sum=$sum+$_}
- $sum
- }
- Add 1 2 3 4 5 6 7 8 9 10
返回多值的函数,也可使用 return 返回,使用 return 后函数将结束返回,后面语句不会执行
- Function Test { "Zero", "One", "Two", "Three" }
- Function Test
- {
- "Zero"
- "One"
- "Two"
- "Three"
- }
- Function Test { "Zero" "One" "Two" "Three" } #这样写错误!
- Function Test
- {
- "Zero"
- "One"
- return "Two"
- "Three"
- }
输出注释,不会作为结果:
- Function Test
- {
- Write-Host "此处为注释不作为结果,但同样会输出"
- "Zero"
- "One"
- return "Two"
- "Three"
- }
- Test
- $Test = Test
隐藏函数内部的错误:
- #函数内部有错误,调用时也返回错误!
- Function Test { Stop-Process -Name "kk123456" }
- #使用参数 $ErrorActionPreference 可隐藏错误
- Function Test
- {
- $ErrorActionPreference="SilentlyContinue"
- Stop-Process -Name "kk123456"
- $ErrorActionPreference="Continue"
- }
管道应用:函数内部处理上一个的结果集:
- Function Test { $input }
- 2,0,1,2 | Test
- Function Test
- {
- Foreach ($element in $input)
- {
- "value: "+$element
- }
- }
- 2,0,1,2 | Test
使用过滤器 Filter(特殊函数)的流模式处理管道数据,避免结果集太大占用过多内存或进程等待太久
[plain] view plain copy
- Filter Test
- {
- Foreach ($element in $input)
- {
- "value: "+$element
- }
- }
- 2,0,1,2 | Test
使用Filter时, $input 每次传递一个元素,不再是整个结果集,因此不必要了,用变量 $_ 替代
- Filter Test{ $_.name }
- Get-Service -DisplayName "*MSSQLSERVER*" | Test
函数在内部 process 也可以处理多结果集:
- Function Test{
- begin{ $i=1 }
- process{
- $_.name
- $i++
- }
- end{}
- }
- Get-Service -DisplayName "*MSSQLSERVER*" | Test
【转】PowerShell 函数(Function)的更多相关文章
- 函数(Function)作用域 / 远程函数执行
函数跟变量一样也是有作用域的:Global.Script.Local.Private Global:作用于整个PowerShell会话,只要PowerShell会话不结束,被Global修饰的变量和函 ...
- Javascript自执行匿名函数(function() { })()的原理分析
匿名函数指没有指定函数名或指针的函数,自执行匿名函数只是其中一种,下文中称这种函数为:自执行函数 下面是一个最常见的自执行函数: // 传统匿名函数 (function() { alert('hell ...
- JavaScript自运行函数(function(){})()的理解
今天打开JQuery源文件(jquery-1.8.3), 看到JQuery的初始化过程是这样的 (function( window, undefined ) { // .... })( window ...
- 深入理解javascript中的立即执行函数(function(){…})()
投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-06-12 我要评论 这篇文章主要介绍了深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是 ...
- javaScript的函数(Function)对象的声明(@包括函数声明和函数表达式)
写作缘由: 平时再用js写函数的时候,一般都是以惯例 function fn () {} 的方式来声明一个函数,在阅读一些优秀插件的时候又不免见到 var fn = function () {} 这种 ...
- Javascript自执行匿名函数(function() { })()的原理浅析
匿名函数就是没有函数名的函数.这篇文章主要介绍了Javascript自执行匿名函数(function() { })()的原理浅析的相关资料,需要的朋友可以参考下 函数是JavaScript中最灵活的一 ...
- Javascript学习之函数(function)
在JS中,Function(函数)类型实际上是对象;每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针. 一 函 ...
- js立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( ))
( function(){…} )() ( function (){…} () ) 是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达 ...
- 深入理解立即执行函数(function(){})();
( function(){-} )()和( function (){-} () )是两种javascript立即执行函数的常见写法,要理解立即执行函数,需要先理解一些函数的基本概念. 1,函数声明,函 ...
随机推荐
- HTML 5 拖放(Drag 和drop)
浏览器支持 Internet Explorer 9.Firefox.Opera 12.Chrome 以及 Safari 5. 1.把标签 draggable 属性设置为 true. 2.向标签添加on ...
- 从DataGridView导出Excel
从DataGridView导出Excel的两种情况,不多说,直接记录代码(新建类,直接引用传入参数). using System; using System.Collections.Generic; ...
- myString操作符重载
写在前面的话: 重载是C++的重要内容,在自定义一个类的时候,需要对类中的方法进行重载,才能方便的实现相应的功能,比如一些运算符,构造,析构函数,一些功能函数等等,而C++语言自带的这些东西只使用于基 ...
- #20145205 《Java程序设计》第10周学习总结
教材学习内容总结 教材学习内容总结 Java的网络编程 •网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. •java.net包中J2SE的API包含有类和接口,它们提供低 ...
- 《大道至简》第一章读后感(java语言伪代码)
中秋放假之际读了建民老师介绍的<大道至简>的第一章,其中以愚公移山的故事形象的介绍向介绍编程的精义.愚公的出现要远远早于计算机发展的历史,甚至早于一些西方国家的文明史.但是,这个故事许是我 ...
- MongoDB数据库的操作,增删改查
在student集合中插入一些数据 db.student.insert({ "学号":10010, "姓名":"德莱文", "年龄 ...
- Final-阶段站立会议6
组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding.n ...
- Urimoo做试卷
Urimoo做试卷 题目描述 SBJ最近收到了n张数学卷子,这些卷子的标号为0-n−1,他不想写这些卷子,于是他的好朋友SCX热心地想要帮他撕掉n−1张卷子.SBJ很高兴,但是SCX说,他撕试卷的顺序 ...
- [软件测试基础2]基于selenium的自动化测试
这次上机我们主要使用Selenium进行自动化测试,首先我们需要下载selenium-java的依赖项. 若使用maven管理项目,则在.pom文件中加入如下依赖项: <dependency&g ...
- 文件名保存为.wsf文件即可分析文件夹中每个文件的行数
<job id="HowManyLines"> <script language="VBScript"> Const ForReadin ...