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. 在linux系统中出现u盘问题 的相关解决方法

    1.显示unknown filesystem type .exfat 可以通过该方法解决: 安装exfat-fuse: 在终端中以管理员身份运行 sudo apt-get install exfat- ...

  2. OpenDialog文件多选

    procedure TForm1.OpenFileListClick(Sender: TObject); var openDialog: TOpenDialog; I: Integer; begin ...

  3. Acrobat Pro DC 2019 mac中文版(pdf编辑器)

    为大家准备了最新版本的Adobe Acrobat Pro DC 2019 for Mac,这是Adobe官方推出的pdf编辑器,acrobat pro dc 2019破解版可以轻松将扫描件.图像.网页 ...

  4. 最好还是用#pragma once

    最好还是用#pragma once  https://www.cnblogs.com/techdreaming/p/4921780.html

  5. 来测试下你的Java编程能力

    上篇整理了下后面准备更系统化写的Java编程进阶的思路,如果仅看里面的词,很多同学会觉得都懂,但我真心觉得没有多少人是真懂的,所以简单的想了一些题目,感兴趣的同学们可以来做做看,看看自己的Java编程 ...

  6. linux运维需要掌握什么知识?linux运维学习路线

    linux运维需要掌握什么知识?这个问题算是老生常谈了,但是本人认为知道需要掌握什么知识不是重点,重点是我们需要知道运维是做什么的?再来根据工作需求去讨论需要学习什么知识才是正途,须知知识是学不完的, ...

  7. Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    很长的报错,截取   ERROR c.a.d.p.DruidDataSource - discard connection   com.mysql.jdbc.exceptions.jdbc4.Comm ...

  8. Linux系统下的网络配置

    一.修改配置文件,重启后设置不丢失 [Red Hat Linux/CentOS] 使用ifconfig查看使用的网口: [root@localhost /]# ifconfig 修改对应网口配置文件: ...

  9. jquery on()方法重复绑定解决方法

    最近再一次项目中发现 不刷新页面的情况下使用on()方法绑定事件会出现重复执行的问题,意思就是说点击一次会绑定一次...点击n次会绑定n次,执行起来是以你绑定的次数为准,绑定了n次就会执行n次 解决办 ...

  10. asp.net无限递归

    private void button1_Click(object sender, EventArgs e) { DialogResult dialogResult = folderBrowserDi ...