Powershell对象作为参数

时间:2013-12-02 18:36:02

标签: object powershell exchange-server

我在准备一些基于PS的有用脚本时遇到了一些问题。

我尝试制作将从Active Directory和Exchange(用户/邮箱)收集数据的脚本,然后这些数据将在脚本的其他部分处理(例如在某些功能中)

function toProcess($userObj, $mailboxObj)
{
  echo $userObj.enabled #the output is null
}

$users = get-adusers -Filter * -properties *
foreach($user in $users)
{
  $guid = $user.objectGuid.toString()
  if($user.mail -ne $null)
  {
    $mailbox = get-mailbox $guid | select-object *
    if($mailbox -ne $null)
    {
       toProcess($user, $mailbox)
    }       
  }
}

当只为onProcess()分配一个参数($ user)时,函数会正确执行并显示account的状态。当我分配两个对象时,值变为null。 怎么了?

我使用的是powershell 2.0

1 个答案:

答案 0 :(得分:3)

调用PowerShell函数时,参数由空格分隔,不需要括号。

你的函数调用应该是这样的。

toProcess $user $mailbox

通过在变量之间放置逗号,您创建的是一个对象数组的参数。