PowerShell是一种命令集,也有自己的语法定义及函数。本文主要介绍如何自定义powershell函数及如何调用,当初在写PowerShell自定义函数的时候查阅了很多资料都没找到如何调用自定义函数,还是无意中从同事以前写的脚本中才知道方式奇特的PowerShell函数调用方式,以此记录下来,以方便后续参考。

PowerShell脚本语言和其他语言一样,powershell自定义函数也是以function打头,申明方式如下:

function(关键字) 函数名 (参数) {代码}

例如定义一个实现两数相加的函数

function Add ($x,$y)
{
$n = $x + $y
Write-Host $n
}

其实自定义函数很容易,只需要知道powershell基本语法就可以了,但是调用自定义函数就没有其他语言方便了,在调用自定义函数之前必须得告诉编译器函数存放的文件地址及名称,这样编译器才知道调用哪里的函数,其实也很容易理解。

具体调用方式如下:

. ($path + "functionDemo.ps1")
Add 2 3

这里$path为函数Add的绝地路径,functionDemo.ps1为函数所在的ps1文件名称,而自定义调用方式也和其他语言函数调用大不相同,格式为 函数名 第一参数 第二参数。请注意中间没有逗号,也没有括号,但是对于非自定义函数则必须使用括号。

如何让powershell知道ps1文件存放的位置绝对位置呢,也就是这里的$path是怎么定义的。

一般我们不会去在ps1文件中写名绝对地址,例如在本例中也就是我们不会给$path赋值为C:\folder,而是让编译器运行本脚本的时候自动得到该文件的绝对地址,这样无论部署的时候将ps1文件放到哪里,都不需要更改任何设置。下面是获得powershell文件的绝对地址代码片段:

$0 = $MyInvocation.MyCommand.Definition
$dp0 = [System.IO.Path]::GetDirectoryName($0) Write-Host $dp0

例子中会打印出执行该文件的文件绝对地址,如:“C:\Documents and Settings\Administrator\Desktop\Installation\installSTP”

这里GetDirectoryName就是非自定义函数,调用方式需要加括号。

PowerShell自定义函数定义及调用的更多相关文章

  1. 利用jQuery扩展接口为jQuery框架定义了两个自定义函数,然后调用这两个函数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. linux shell自定义函数(定义、返回值、变量作用域)介绍

    http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell ...

  3. Linux Shell函数定义与调用

    一.Shell函数定义格式 shell函数定义格式,各部分说明如下: [ function ]等中括号括起来部分----表示可选(即可有可无) your_function_name部分----为函数名 ...

  4. MATLAB循环和函数定义,调用

    格式不要括号,最后有end for 循环变量 = 表达式1:表 2:表 3 表1:初值     表2:步长      表3:终值 求圆周率:π/4=1 - 1/3 + 1/5 -1/7+...+(-1 ...

  5. java mysql自定义函数UDF之调用c函数

    正如sqlite可以定义自定义函数,它是通过API定义c函数的,不像其他,如这里的mysql.sqlite提供原生接口就可以方便的调用其他语言的方法,同样的mysql也支持调用其它语言的方法. goo ...

  6. JavaScript函数定义和调用 变量作用域

     本文是笔者在看廖雪峰老师JavaScript教程时的个人总结   JavaScript中函数定义可以是这样的格式 function 函数名(参数) {     函数体 } 也可以是这样的格式     ...

  7. javascript、jQuery函数定义和调用方法

    一.javascript 1.var aaa=function(){...} var 方式定义的函数,不能先调用函数,后声明,只能先声明函数,然后调用. 2.function aaa(){...} f ...

  8. python 函数定义及调用

    1.什么是函数? 在程序中,函数就是具备某一功能的工具,事先将工具准备好即函数的定义:遇到应用场景拿来就用即函数的调用:函数必须遵循先定义后调用的原则 2.为什么要用函数 不用函数的问题是: 程序冗长 ...

  9. Shell 函数定义与调用

    linux shell 可以用户定义函数,然后在 shell 脚本中可以随便调用. 以一个计算两数之和的函数为例: #! /bin/bash # 函数定义 sum(){ return $(($1+$2 ...

随机推荐

  1. scrapy_redis实现爬虫

    1.scrapy_redis的流程 在scrapy_redis中,所有的带抓取的对象和去重的指纹都存在所有的服务器公用的redis中 所有的服务器公用一个redis中的request对象 所有的req ...

  2. JavaScript中的this所引用的对象和如何改变这个引用

    this是函数内部的一个特殊对象,它引用的是函数执行环境对象.也就是运行是基于函数的执行环境绑定. 1.在网页全局作用域中调用函数时,this引用window var color='black'; f ...

  3. loj2083 优秀的拆分 [NOI2016] SA

    正解:SA 解题报告: 我永远喜欢loj! 显然$AABB$串相当于是由两个$AA$串拼起来的,所以可以先考虑如果求出来了所有$AA$串怎么求答案? 就假如能统计出$st[i]$表示所有以$i$为开头 ...

  4. VUE-004-禁止修改页面显示项,设置el-input,textarea只读方法

    在实际业务需求中,有些内容当初次创建后,即不可再次进行修改变更,因而需要显示的文本内容不允许变更.此时,可通过页面限制防止用户修改. 方法:添加 readonly="true" 或 ...

  5. webapi发布到windows 2012的iis8里 出错

    HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容. 选一个.net版本一致的应用程序池 即可

  6. mac上sed -i 执行失败报错

    比如说我要替换version.txt文件中的version=1.1 为version=1.2,比如test.txt文件内容如下: version=1.1 此时我们会使用sed来替换,如果是涉及比较多的 ...

  7. Oracle debug

    执行慢的使用使用debug环境变量,可以收集详细的日志 rootcrs.pl/roothas.pl执行慢 参考如下文档设置debug环境变量,重现问题并收集详细日志. How to turn on r ...

  8. 自定义bash提示符

    http://adamcavendish.is-programmer.com/posts/35659.html

  9. Vue2leaflet 替换国内地图api,带{z}/{x}/{y}形式的

    参考:https://www.cnblogs.com/gispathfinder/p/9535685.html Vue2leaflet安装后,默认自带的地图URL如下 url:'http://{s}. ...

  10. java中xxe漏洞修复方法

    java中禁止外部实体引用的设置方法不止一种,这样就导致有些开发者修复的时候采用的错误的方法 之所以写这篇文章是有原因的!最早是有朋友在群里发了如下一个pdf, 而当时已经是2019年1月末了,应该不 ...