在使用导入的PowerShell会话时,如何对Live @ EDU(outlook.com)进行身份验证?

时间:2011-03-22 19:02:03

标签: powershell exchange-server-2010 import-module outlook.com

我通过PowerShell连接到Exchange 2010 for Live @ edu。我可以使用标准方法连接就好了。但是,每次下载和导入会话命令似乎都很浪费,特别是因为这不在LAN上。此外,有时候,这些脚本会将数据返回到网页,导入时间似乎也很浪费。

我找到了如何使用Export-PSSession cmdlet导出会话。如果我使用Import-Module导入该导出的模块,除了一个问题外,一切都正常。当我从模块运行cmdlet时,它希望我通过GUI以交互方式设置密码。我真正想要的是我的脚本以非交互方式运行,但是在本地加载模块。

这可能吗?

1 个答案:

答案 0 :(得分:2)

您面临的问题是您需要能够隐式为所有导入的函数设置PSSession。为此,您需要能够运行Set-PSImplicitRemotingSession功能。

不幸的是,该功能未被导出,因此您无法访问它。解决这个问题需要做的就是破解PSM1文件并将该函数添加到$script:ExportModuleMember的末尾。现在,当您导入该模块时,该功能将可用于为所有功能设置PSSession。

以下是您需要运行的PowerShell或脚本才能使用任何导入的模块。

Import-Module "C:\Credentials.psm1"
Import-Module "C:\ExportedPSSession.psm1"
$Cred = Import-Credential -path C:\Cred.xml
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://ps.outlook.com/powershell/" -Authentication Basic -AllowRedirection -Credential $Cred
Set-PSImplicitRemotingSession -PSSession $Session -createdByModule $True
#You can now run any of the imported functions.

Credentials.psm1 小心!任何可以加载xml文件的人现在都可以冒充你了!

function Export-Credential($cred, $path) {    
  $cred = $cred | Select-Object *    
  $cred.password = $cred.Password | ConvertFrom-SecureString
  $obj = New-Object psobject
  $obj | Add-Member -MemberType NoteProperty -Name UserName -Value $cred.username
  $obj | Add-Member -MemberType NoteProperty -Name Password -Value $cred.password
  $obj | Export-Clixml $path
}

function Import-Credential($path) {    
  $obj = Import-Clixml $path    
  $obj.password = $obj.Password | ConvertTo-SecureString
    return New-Object system.Management.Automation.PSCredential( $obj.username, $obj.password)
}