Come si è autenticati per vivere@edu (outlook.com) durante l'utilizzo di una sessione PowerShell importata?

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

Domanda

Mi connetto a Exchange 2010 per Live@Edu tramite PowerShell. Posso connettermi utilizzando bene i metodi standard. Tuttavia, il download e l'importazione dei comandi della sessione ogni volta sembra dispendioso, soprattutto perché questo non è su una LAN. Inoltre, occasionalmente, questi script restituiranno dati a una pagina Web e anche il tempo di importazione sembra dispendioso.

Ho trovato come esportare la sessione usando il cmdlet di esportazione-PSSEFFE. Se importo quel modulo esportato con il modulo di importazione, tutto funziona correttamente, ad eccezione di un problema. Quando eseguo un cmdlet dal modulo, si aspetta che io interattivamente, tramite una GUI, imposti la password. Quello che voglio veramente è che i miei script funzionino in modo non interattivo, ma caricano il modulo localmente.

È possibile fare questo?

È stato utile?

Soluzione

Il problema che stai affrontando è che devi essere in grado di impostare implicitamente la PSSession per tutte le funzioni importate. Per fare ciò devi essere in grado di eseguire il Set-PSImplicitRemotingSessionfunzione.

Sfortunatamente quella funzione non viene esportata, quindi non puoi accedervi. Quello che devi fare per risolvere questo è aprire il file PSM1 e aggiungere quella funzione alla fine di $script:ExportModuleMember. Ora, quando si importa il modulo, quella funzione sarà possibile impostare la tua PSSession per tutte le funzioni.

Ecco cosa dovrà eseguire il tuo PowerShell o Scripts per poter utilizzare uno qualsiasi dei moduli importati.

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 Attenzione! Chiunque possa caricare il file XML ora può impersonarti!

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)
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top