PowerShell入门教程之函数、脚本、作用域介绍

 更新时间:2014年10月14日 09:28:10   作者:Luke Zhang  
这篇文章主要介绍了PowerShell入门教程之函数、脚本、作用域介绍,本文所讲内容都是PowerShell的基础知识,需要的朋友可以参考下

脚本所体现的是PowerShell的编程特性,是任务自动化的基础。函数是比脚本粒度更细的代码复用单元,可以定义在命令行中或者脚本中。作用域就是变量和函数的作用范围,是执行上下文的划分。

函数

  函数就是命名的命令列表,与一般编程语言中的函数概念具有相同的范畴。函数中不但可以有简单命令,还可以有控制流程的命令,如if、while、switch等。函数可以有匿名参数或者命名参数列表。命令参数列表可以用大括号或者Param关键字定义。匿名函数可以使用$Args变量来访问。函数也可接收来自管道的对象作为输入,管道对象可以通过$input变量类访问。

  在脚本中定义的函数,可以定义在#require命令和Param关键字之后的任何位置,但要定义在调用之前。还有,自定义的函数不会自动运行,需要被明确调用。可以使用filter或者function定义函数,用filter关键字定义的函数比较简单,而使用function关键字定义的函数可以有更加复杂的功能。

  简单函数定义示例如下:

复制代码 代码如下:

function SayHello
{
   "Hello"
}

函数调用方法与使用Cmdlet方法相似,输入SayHello,并回车。则结果为Hello。

脚本

  脚本就是将一些命令存贮到文件文件中,并将该文本文件的扩展名设置为.ps1。脚本中除了可以使用常用cmdlet,控制流程的命令外,还可以定义和调用自定义函数,调用方法与调用cmdlet方法类似。

  脚本也可以有参数,既可以是命名参数也可以是匿名参数。在参数的使用上,脚本与函数非常相似。

  另外,PowerShell的脚本执行策略默认不允许执行任何脚本文件,修改执行策略可执行如下命令:Set-ExecutionPolicy RemoteSigned。需要谨记的是,修改执行策略会带来安全隐患,修改执行策略之前请三思。

简单脚本d:\greet.ps1示例如下

复制代码 代码如下:

Param([String] somebody)
 
function Greet([String] name)
{
    "Hello $name"
}
 
echo "Call function Greet ..."
Greet $somebody

脚本调用方法如下:
复制代码 代码如下:

d:\greet.ps1 "Luke"


复制代码 代码如下:

.\greet.ps1 "Luke"

以上脚本的执行结果是,“Hello Luke”。

作用域

  按类型分,有两种作用域:global(全局作用域)和script(脚本作用域)。启动PowerShell命令行后,所有命令行命令在全局作用域中运行。而脚本上下文在script作用域中运行,运行结束后脚本中定义的变量和函数不在可见。这是因为在脚本中定义的变量和函数默认位于script作用域中。当然也可以显示定义变量和函数的作用域,比如function global:fun1 (){…}。这样以来,脚本执行完之后,fun1还能够在全局作用域中执行。

  按轴关系分,可以有父作用域、本地作用域(当前作用域)和子作用域。这些不是新的作用域类型,而是作用域之间的相对关系。子作用域还可以有子作用域,这个层次可以很深。

  除了可以将脚本中的变量和函数定义在全局作用域中,还可以使用点".”获取来源,将一个普通脚本在本地作用域中执行,执行完毕退出脚本后,所有在脚本中定义的变量和函数,在本地作用域中继续可用。

  使用点".”获取来源示例如下:

复制代码 代码如下:

. d:\greet.ps1 "Luke"

或者
复制代码 代码如下:

. .\greet.ps1 "Luke"

即点".”,空格,然后是一般脚本执行方式。

结语

  函数、脚本和作用域,每个概念要说得详细都得要很大的篇幅。这里只简单说明它们的概念、彼此间的关系以及简单的用法。让读者有个大概的印象,能够拿来就用。

相关文章

  • PowerShell管道入门必看篇(管道例子大全)

    PowerShell管道入门必看篇(管道例子大全)

    下面小编就为大家带来一篇PowerShell管道入门必看篇(管道例子大全)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Powershell小技巧之非相同域或信任域也能远程

    Powershell小技巧之非相同域或信任域也能远程

    这篇文章主要介绍了使用Powershell在非相同域或信任域也能远程的方法以及如何设置powershell远程处理的方法,需要的朋友可以参考下
    2014-10-10
  • PowerShell中把相对路径转换为绝对路径的2个方法

    PowerShell中把相对路径转换为绝对路径的2个方法

    这篇文章主要介绍了PowerShell中把相对路径转换为绝对路径的2个方法,并对他的区别做了讲解,需要的朋友可以参考下
    2014-08-08
  • PowerShell查看进程的所属用户

    PowerShell查看进程的所属用户

    这篇文章主要介绍了PowerShell查看进程的所属用户,即查询一个进程的拥有者是哪个用户,需要的朋友可以参考下
    2014-12-12
  • Powershell中显示隐藏文件的方法

    Powershell中显示隐藏文件的方法

    这篇文章主要介绍了Powershell中显示隐藏文件的方法,本文使用是是Get-ChildItem检索文件,加上-Hidden参数就可以显示隐藏文件了,需要的朋友可以参考下
    2015-01-01
  • Windows Powershell 变量的类型和强类型

    Windows Powershell 变量的类型和强类型

    这篇文章主要介绍了Windows Powershell 变量的类型和强类型,以及使用示例,需要的朋友可以参考下
    2014-09-09
  • PowerShell中获取Windows系统序列号的脚本分享

    PowerShell中获取Windows系统序列号的脚本分享

    这篇文章主要介绍了PowerShell中获取Windows系统序列号的脚本分享,本文方法是读取注册表中的信息,然后处理成序列号输出,需要的朋友可以参考下
    2014-11-11
  • Windows Powershell使用管道

    Windows Powershell使用管道

    在Windows PowerShell中到处都会用到管道。尽管在屏幕上会看到文本,但Windows PowerShell并不通过管道在命令之间传递文本。它实际上通过管道传递对象。用于管道的表示法与其他shell中所使用的表示法十分类似,因此乍一看可能不会明显察觉到PowerShell引入了新功能
    2014-09-09
  • Powershell小技巧之使用-F方法带入数据

    Powershell小技巧之使用-F方法带入数据

    这篇文章主要介绍了Powershell的一个使用-F方法带入数据的小技巧,非常的简单,也很易懂,记录一下分享给大家
    2014-09-09
  • PowerShell中实现混淆密码示例

    PowerShell中实现混淆密码示例

    这篇文章主要介绍了PowerShell中实现混淆密码示例,本文给出了混淆密码的例子和使用混淆后的密码例子,需要的朋友可以参考下
    2015-03-03

最新评论