我正在编写一个脚本,如果我可以将一个数组($arrUserTemplates= $Mailbox1, $Mailbox2, $Mailbox3)传递到一个函数中,那么这个脚本会变得更容易,但是我似乎不能理解它。我使用Param($arrUserTemplates, $Mailbox1, $Mailbox2, $Mailbox3)传递var,但是脚本似乎忽略了它,并且没有传递$arrUserTemplates中的变量。
这可能会重现这个问题(函数很长,里面有一个开关):
$arrUserTemplates= $Mailbox1, $Mailbox2, $Mailbox3
Function CreateMailboxes{
Param($StorePrefix, $Store, $SharedMailboxPass, $StoreEmailOU, $EcommSharedMailboxOU, $DomainController, $arrUserTemplates, $Mailbox1, $Mailbox2, $Mailbox3)
Foreach ($MailboxUser in $arrUserTemplates){
Write-host "arrUserTemplates: $arrUserTeamplates"
}
}
CreateMailboxes $StorePrefix $Store $SharedMailboxPass $StoreEmailOU $EcommSharedMailboxOU $DomainController $arrUserTemplates $Mailbox1 $Mailbox2 $Mailbox3这将返回三次简单的"arrUserTemplates:“。
我使用以下命令来调用它:
CreateMailboxes $StorePrefix $Store $MailboxPass $StoreEmailOU $EcommSharedMailboxOU $DomainController $arrUserTemplates $Mailbox1 $Mailbox2 $Mailbox3
我需要它在$arrUserTemplates的值上通过foreach循环传递变量,因为我将使用这个函数构建的所有东西(其中还包括一个开关)来运行一个新的ADUser:
New-ADUser -Name $MailboxUser -SamAccountName $MailboxUser -UserPrincipalName $UPN `
-DisplayName $DisplayName -Description $Desc -Enabled $True `
-AccountPassword (ConvertTo-SecureString -AsPlainText $MailboxPass -Force) `
-ChangePasswordAtLogon $False -PasswordNeverExpires $PasswordNeverExpires -CannotChangePassword $CannotChangePassword `
-Path $OU -Server $DomainController发布于 2019-12-19 03:06:38
因此,这里的主要问题是在定义$Mailbox1、$Mailbox2和$Mailbox3之后定义$arrUserTemplates。如果您想通过更改引用的变量的值来更改$arrUserTemplates的值,那么这就是关键所在……[ref]类型。如果您首先创建变量,即使具有$null值,也可以在创建数组时将它们指定为引用变量,然后在以后更改变量的值时,数组将反映更改,而无需进一步干预。例如,下面的代码:
$Mailbox1,$Mailbox2,$Mailbox3 = $null
$arrUserTemplates = [ref]$Mailbox1,[ref]$Mailbox2,[ref]$Mailbox3
"arrUserTemplates initial value:"
$arrUserTemplates
$Mailbox1 = 'Mailbox1'
$Mailbox2 = 'Mailbox2'
$Mailbox3 = 'Mailbox3'
"arrUserTemplates final value:"
$arrUserTemplates将创建以下输出:
arrUserTemplates initial value:
Value
-----
arrUserTemplates final value:
Mailbox1
Mailbox2
Mailbox3这表明数组中变量的值是空的,然后在我更改变量之后,数组中的值将被更新以匹配。
https://stackoverflow.com/questions/59365085
复制相似问题