2017-02-24 43 views
1

我是PowerShell的新手,并尝试为各种任务编写一些Exchange Online模块化脚本。我正在处理的模型是有一个控制脚本,用于调用其他参数化脚本来执行可重用函数。PowerShell返回PSSession对象

我已经写了一个连接脚本,但是当我将PSSession对象返回给我的命令脚本时,我无法导入会话,它以某种方式转换为对象。

我应该如何在我的脚本中共享此会话?

控制脚本:

$session = .\Connection.ps1 -user [email protected] 
Import-PSSession $session 

连接脚本(摘要):

Param (
[string]$userparam 
) 
$UserCredential = Get-Credential -userName $userparam 
$Exch = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection 
return $Exch 

回答

2

首先,这种情况正在发生,因为当你运行一个脚本在其自己的范围内运行。您将获得作为对象的返回值,但它不再是“活的”,因为它的创建范围不存在。

其次,这听起来很像what you really want is a module。将这些作品作为功能写入,而不是脚本,然后将它们作为模块写入单个程序包。

这样做也可以解决您的范围问题,但优点很多。

+0

听起来像是对我的计划。如果结果合适,我会给这个尝试并标记为答案! –

+0

再次感谢您的帮助,@ briantist。 –