Doms
Doms

Reputation: 113

powershell add objects via -outvariable +variable in a function

I am running in an imported session window. Not sure if that matters.

I am trying to add a few variable values to an array in a function.

$Session = New-PsSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://emailserver/powershell/" -Authentication Kerberos
Import-PsSession $Session -allowclobber
Add-PsSnapin Microsoft.SharePoint.PowerShell

$group1 = "Accounting"
$group2 = "HR"

function AddUsersToGroups {
  Write-output $Group1 -outvariable +Adgroups
  Write-output $Group2 -outvariable +Adgroups
}

When I highlight and run the lines from a Powershell ISE they work fine and create the Variable $AdGroups and the combined data is in there.

But when I run the function all I see is the output and no variable gets created.

PS C:\Windows\system32> AddUserToGroups
Group1
Group2

Kinda Stumped. I tried to create a variable $AdGroups = @() as the first line but it fails also.

Upvotes: 1

Views: 1214

Answers (1)

manojlds
manojlds

Reputation: 301527

Not sure exactly what you are trying to achieve, but the AdGroups variable will be available only in the scope of the AddUsersToGroups function.

One way of solving this would be add the script: scope, like below:

Function AddUsersToGroups{
  Write-output $Group1 -outvariable +script:Adgroups
  Write-output $Group2 -outvariable +script:Adgroups
}

Now you should be able to access $Adgroups outside after the function is called.

Upvotes: 2

Related Questions