Comment vous authentifiez-vous auprès de Live @ EDU (outlook.com) lors de l'utilisation d'une session PowerShell importée?

StackOverflow https://stackoverflow.com/questions/5396446

Question

Je me connecte à Exchange 2010 pour Live @ edu via PowerShell.Je peux très bien me connecter en utilisant les méthodes standard.Cependant, télécharger et importer les commandes de session à chaque fois semble inutile, d'autant plus que ce n'est pas sur un LAN.De plus, occasionnellement, ces scripts renverront des données sur une page Web, et le temps d'importation semble également être une perte de temps.

J'ai trouvé comment exporter la session à l'aide de l'applet de commande Export-PSSession.Si j'importe ce module exporté avec Import-Module, tout fonctionne correctement, à l'exception d'un problème.Lorsque j'exécute une applet de commande à partir du module, il s'attend à ce que je définisse le mot de passe de manière interactive, via une interface graphique.Ce que je veux vraiment, c'est que mes scripts s'exécutent de manière non interactive, tout en chargeant le module localement.

Est-ce possible de le faire?

Était-ce utile?

La solution

Le problème auquel vous êtes confronté est que vous devez être capable de définir implicitement la session PSSession pour toutes les fonctions importées.Pour ce faire, vous devez pouvoir exécuter la fonction Set-PSImplicitRemotingSession.

Malheureusement, cette fonction n'est pas exportée et vous ne pouvez donc pas y accéder.Ce que vous devez faire pour résoudre ce problème, c'est ouvrir le fichier PSM1 et ajouter cette fonction à la fin de $script:ExportModuleMember.Désormais, lorsque vous importerez le module, cette fonction sera capable de définir votre session PSSession pour toutes les fonctions.

Voici ce dont votre PowerShell ou vos scripts auront besoin pour pouvoir utiliser l'un des modules importés.

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 Attention!Quiconque peut charger le fichier xml peut désormais se faire passer pour vous!

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)
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top