Exchange 2013 PowerShell创建PowerShell函数
2015-01-31 17:56
375 查看
函数是将一些列命令合并到一个可重用的代码块中,然后我们只需要调用这个函数。函数可以被配置为更改或返回一个或多个可以显示在控制台或输出到一个外部文件的对象。你可以将函数的输出传递給一个变量,或其它命令。在这一节中,我们讲学习下如何创建一个PowerShell函数去创建一个函数,我们需要用到关键字Function,然后紧跟着就是这个函数的名称,然后函数的代码附在大括号{}中。先来看一个示例,这是一个基本的函数,将会在一个列表中显示邮箱的三个属性function Get-MailboxList {param($name)Get-Mailbox $name | fl Name,Alias,ServerName}
第二、 你可以把功能函数保存为一个.ps1文件,然后配置PowerShell配置文件
PowerShell函数可以被写为接受和执行流程管道输入,可以使用三个阶段,分别是:Begin,Process和End块。Begin:在函数的开始,Begin块只运行一次,任何自定义和初始化可以在这里发生Process:这一过程块在每个对象管道运行一次,每个对象,通过管道可以访问到$_automatic变量End: End块在所有Process运行后才处理下面我们使用Process Block创建一个简单的管道函数。Begin Block和End Block是可选的。例如,下面的示例函数将会通过管道返回每个邮箱的名称function Get-MailboxName {process {"Mailbox Name: $($_.Name)"}}我们可以使用Get-Mailbox命令传递信息給函数,每个邮箱的名称将会返回:
运行函数命令:
这个Bebin Block只在开始的时候立即运行一次,而当调用函数命令的时候,开始时间很快被显示出来。在Process Block中,我们使用了$count变量来跟踪处理了多少个对象。而End Block最后才运行,报告总共的处理项目数。在上一个示例中,我们可以看到输出结果很快就显示出来,下面我们演示下处理一个邮箱集合看看:
由于我这里有些邮箱从未登陆过,可能看到如上一些警告信息。但是我们可以看到开始时间和结束时间,以及处理的邮箱数目。
PowerShell函数运行原理
PowerShell函数可以让我们使用一个简单的函数名称运行一序列的命令。我们可以将输入的参数添加到函数中,也可以作为管道输入。这使得我们能够编写自己的可重用的功能函数,运行起来就类似于一个命令。有如下几种方法你可以将功能函数添加到你的Shell会话中。第一、 你可以把功能函数保存为一个.ps1后缀的文件,然后定位到当前文件下跑函数命令第二、 你可以把功能函数保存为一个.ps1文件,然后配置PowerShell配置文件
PowerShell函数可以被写为接受和执行流程管道输入,可以使用三个阶段,分别是:Begin,Process和End块。Begin:在函数的开始,Begin块只运行一次,任何自定义和初始化可以在这里发生Process:这一过程块在每个对象管道运行一次,每个对象,通过管道可以访问到$_automatic变量End: End块在所有Process运行后才处理下面我们使用Process Block创建一个简单的管道函数。Begin Block和End Block是可选的。例如,下面的示例函数将会通过管道返回每个邮箱的名称function Get-MailboxName {process {"Mailbox Name: $($_.Name)"}}我们可以使用Get-Mailbox命令传递信息給函数,每个邮箱的名称将会返回:
PowerShell函数高阶体验
下面我们结合一个实际的例子,结合Get-MailboxStatistics和Set-Mailbox到一个函数中,通过这个函数自动化一些任务用于演示PowerShell函数的功能下面的函数将设置一个邮箱的ProhibitSendReceiveQuota,配置邮箱的name和所需的配额大小。这个函数只会修改当前用户的配额值超过了限制设置邮箱用户。function Set-SendReceiveQuota {param([Parameter(Mandatory=$true,ValueFromPipelineByPropertyName =$true)]$name,[Parameter(Mandatory=$true)]$quota)begin {$count = 0Write-Output "Started: $(Get-Date -format T)"}process {$count += 1$mailboxstatistics = Get-MailboxStatistics $name$total = $mailboxstatistics.TotalItemSize.Value.ToMB()if($total -lt $quota) {Set-Mailbox $name -ProhibitSendReceiveQuota $quota `-UseDatabaseQuotaDefaults $false}}end {Write-Output "Ended: $(Get-Date -format T)"Write-Output "Mailboxes Processed: $count"}}运行函数命令:
这个Bebin Block只在开始的时候立即运行一次,而当调用函数命令的时候,开始时间很快被显示出来。在Process Block中,我们使用了$count变量来跟踪处理了多少个对象。而End Block最后才运行,报告总共的处理项目数。在上一个示例中,我们可以看到输出结果很快就显示出来,下面我们演示下处理一个邮箱集合看看:
由于我这里有些邮箱从未登陆过,可能看到如上一些警告信息。但是我们可以看到开始时间和结束时间,以及处理的邮箱数目。
相关文章推荐
- Exchange 2013 PowerShell创建自定义脚本
- Exchange 2013 PowerShell创建自定义对象
- Exchange 2013 PowerShell遍历ForEach
- Exchange 2013部署系列之(八)邮箱、通讯组创建及规划
- Exchange通过powershell创建帐号的命令
- Exchange 2013 PowerShell数组和哈希表
- Exchange 2013 PowerShell发送SMTP邮件
- Exchange 2013 PowerShell新建&修改&删除邮箱
- 创建FileShare的content source的SharePoint 2013的powershell脚本
- 'The WinRM Shell client cannot process the request' 错误, Exchange 2013 PowerShell
- Exchange 2013的powershell报错的解决办法
- Exchange 2013 PowerShell设定脚本计划任务
- EXCHANGE 2013重新创建仲裁邮箱
- Exchange 2013 管理小技巧一-批量启用邮箱用户-利用Powershell
- Exchange 2013 PowerShell认变量和对象
- Exchange 2013 创建DAG失败 提示”必须为该属性提供值” 推荐
- Exchange 2013使用PowerShell命令显示凭据
- Exchange2013配置-EMS下批量创建用户邮箱
- Exchange 2013 创建新用户
- Powershell管理系列(二)Exchange 2013使用PowerShell远程管理功能