Как пройти аутентификацию в Live @ EDU (outlook.com) при использовании импортированного сеанса PowerShell? - PullRequest
2 голосов
/ 22 марта 2011

Я подключаюсь к Exchange 2010 для Live @ edu через PowerShell. Я могу подключиться с помощью стандартных методов просто отлично. Однако загрузка и импорт команд сеанса каждый раз кажется расточительным, тем более что это не в локальной сети. Кроме того, время от времени эти сценарии будут возвращать данные на веб-страницу, и время импорта там тоже кажется расточительным.

Я нашел, как экспортировать сеанс с помощью командлета Export-PSSession. Если я импортирую этот экспортированный модуль с помощью Import-Module, все работает правильно, за исключением одной проблемы. Когда я запускаю командлет из модуля, он ожидает, что я в интерактивном режиме с помощью графического интерфейса пользователя установлю пароль. Что я действительно хочу, так это чтобы мои скрипты работали неинтерактивно, но при этом загружали модуль локально.

Возможно ли это сделать?

1 Ответ

2 голосов
/ 23 марта 2011

Проблема, с которой вы сталкиваетесь, заключается в том, что вам нужно иметь возможность установить 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...