函数跟变量一样也是有作用域的:Global、Script、Local、Private

Global:作用于整个PowerShell会话,只要PowerShell会话不结束,被Global修饰的变量和函数都是可用的。

Script:仅作用于脚本执行期间,一旦脚本执行完毕,脚本中被Script修饰的变量和函数都不在可用。

Local:默认作用域,变量在当前和嵌套的作用域中可见,复制操作语法能在当前的local作用域中修改变量值。

Private:最严格的作用域,变量仅在当前作用域有效。通过这个关键字,可以在子脚本块中隐藏变量。

声明全局函数:

function global:test
{
param($x,$y)
$x * $y
}

执行函数:

test 2 3

test -y 2 -x 3

该全局函数在通过invoke-command在远程计算机执行的时候,不会被识别。

function ab
{
param($a,$b)
$c=$a-$b
return $c
}

$a=10
$b=20

通过如下方法也可以执行函数
& $function:ab 5 8

查看本机已定义函数:
dir functions:

将本地带有参数的函数,在远程机器上执行:

方法一:

 function ab
{
param($a,$b)
$c=$a+$b
return $c
} $a=10
$b=20
invoke-command -computername 172.16.129.62 -Credential $cred -scriptblock ${function:ab} -ArgumentList $a,$b

这样的话,scriptblock中没有办法再加入其他语句执行。

只能先在scriptblock中定义函数,就是在远程计算机定义好函数后再进行调用,如下:

  invoke-command -computername 172.16.129.62 -Credential $cred -scriptblock { param ($a,$b)
function ab
{
param($a,$b)
$c=$a-$b
return $c
}
ab $a $b
}-ArgumentList $a,$b

param($a,$b) [或者Function FunctionName($a,$b)] 中的变量是按顺序来接收的,-ArgumentList部分第一个变量即为$a,第二个为$b。如果-ArgumentList部分中的$a在后,$b在前,则$b的值就是第一个传入的变量,$a的值是第二个传入的变量。

-ArgumentList中的$a,$b实际上与param中的 $a,$b 没有任何关系。

方法二:

 function localFunc($name,$age){
write-host “name=$name,age=$age”
} function Get-FuncDef($name)
{
$func="Function:\$name"
if(Test-Path $func)
{
return 'function {0} {{ {1} }}' -f $name,(dir $func).Definition
}
} Invoke-command -ComputerName localhost -ScriptBlock {
param($funcDef,$name,$age)
Invoke-Expression $funcDef
localFunc -name $name -age $age
} -ArgumentList (Get-FuncDef localFunc),'xiaoxiaoJiao',30

方法二来自于:http://www.pstips.net/question/2634.html

函数(Function)作用域 / 远程函数执行的更多相关文章

  1. js函数与作用域,了解函数基本概念

    通过js基础语法了解到js的值包含数字,字符串和布尔值;js运算符分为算数,赋值,比较和逻辑运算符;js的流程控制包含条件判断if,switch选择;循环for while:下面js的函数及作用域,学 ...

  2. javascript 函数和作用域(函数,this)(六)

    重点. 一.函数 1.函数介绍 函数是一块JavaScript代码,被定义一次,但可执行和调用多次.JS中的函数也是对象,所以JS函数可以像其他对象那样操作和传递,所以我们也常叫JS中的函数为函数对象 ...

  3. 函数嵌套>作用域>闭包函数

    一:函数对象 函数是第一类对象,即表示函数可以当做数据传递 可以被引用:把函数内存地址赋值给一个变量名,仍然遵循函数的调用规则. 可以被当做参数传递:传递的是函数的运行的结果#可以当做返回值 把函数作 ...

  4. Python的程序结构[4] -> 函数/Function[2] -> 匿名函数

    匿名函数 / Anonymous Function 匿名函数是一种不需要绑定函数名的函数 (i.e. functions that are not bound to a name).匿名函数通过 la ...

  5. js中自执行函数(function(){})()和(function(){}())区别

    方式一,调用函数,得到返回值.强制函数直接量执行再返回一个引用,引用在去调用执行方式二,调用函数,得到返回值.强制运算符使函数调用执行(function(){})(); 是 把函数当作表达式解析,然后 ...

  6. 深入理解,函数声明、函数表达式、匿名函数、立即执行函数、window.onload的区别.

    一.函数声明.函数表达式.匿名函数1.函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 2.函数表达式 var fnNam ...

  7. JavaScript函数及作用域

    知识内容: 1.JavaScript函数 2.JavaScript全局函数及特殊函数 3.JavaScript作用域 4.本节练习 参考资料:<JavaScript高级程序设计> 一.Ja ...

  8. 函数----Function对象

    函数---Function对象 一 .  函数的书写 函数 : 就是将一些语句进行封装,然后通过调用的形式,执行这些语句. 函数的作用 : ● 将大量重复的语句写在函数里,以后需要这些语句的时候,可以 ...

  9. C语言中变量和函数的作用域和链接属性

    C语言中变量和函数的作用域和链接属性 作用域 代码块作用域: 代码块指的是使用"{}"包围起来的部分. 在代码块中定义的变量,代码块之外是不能访问的. 代码块嵌套之后的变量作用域, ...

随机推荐

  1. 编码问题 关于hibernate jdbc数据库连接在xml配置与在properties文件配置的差异

    在properties中,&字符不需要转义,因此在连接数据库的时候使用编码的地方直接使用&即可: driverClass=com.mysql.jdbc.Driver jdbcUrl=j ...

  2. 严重: The web application [] registered the JDBC driver 错误

    近日发现启动tomcat的时候报如下警告: -- :: org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc 严重: The ...

  3. easyui源码翻译1.32--SearchBox(搜索框)

    前言 使用$.fn.searchbox.defaults重写默认值对象.下载该插件翻译源码 搜索框提示用户需要输入搜索的值.它可以结合一个菜单,允许用户选择不同的搜索类别.在用户按下回车键或点击组件右 ...

  4. [codility]Array-closest-ascenders

    http://codility.com/demo/take-sample-test/pi2012 又是一道单调栈的题目.首先这道题目n^2是最朴素的做法.继续优化,因为和顺序有关就不好排序.然后,看到 ...

  5. Innodb加载数据字典 && flush tables

    测试了两个case,属于之前blog的遗留问题: innodb如何加载数据字典 flush tables都做了什么操作 先来看下innodb加载数据字典: 首次使用:select * from tt; ...

  6. BZOJ_1622_[Usaco2008_Open]_Word_Power_名字的能量_(字符匹配_暴力)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1622 给出多个文本串和模式串,求每个文本串中有多少模式串. 分析 直接暴力... #inclu ...

  7. POJ_3061_Subsequence_(尺取法)

    描述 http://poj.org/problem?id=3061 给定长度为n的数列整数以及整数S.求出总和不小于S的连续子序列的长度的最小值,如果解不存在输出0. Subsequence Time ...

  8. Spring概述--1

    1.1.1  Spring是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发.应用程序是由 ...

  9. EventHandlerList z

    写一个类时,有时候会在同一个类上添加很多事件,事件很多的话,是不容易管理的,.NET提供的EventHandlerList可以辅助多个事件的管 理,但不方便的地方是,它不是类型安全的,缺少类型安全,多 ...

  10. [King.yue]Grid列赋值文本,隐藏Value

    例:public string InputFormat 加扩展属性:public string InputFormatText 构造函数中根据Key取到Value的值: var data = Data ...