Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In più connessioni a Exchange Online o Security & Compliance PowerShell nella stessa finestra, si usa il cmdlet Invoke-Command per eseguire script o comandi in una specifica sessione di PowerShell remota. Tuttavia, il cmdlet Invoke-Command non funziona nelle connessioni API REST a Exchange Online o Security & Compliance PowerShell.
Questo articolo offre alternative all'API REST per gli scenari che usano comandi Invoke-Command .
Scenario 1: Eseguire i cmdlet di Exchange Online
In questo esempio viene trovata l'identità di qualsiasi altro utente ($Us = $User.Identity).
Consiglio
Altri comandi erano necessari per ottenere i valori di $User e quindi $Us. Questi comandi non sono importanti. L'approccio generale che viene utilizzato è ciò che è importante.
In una sessione di PowerShell remota: Utilizzare il cmdlet Get-PSSession per archiviare i dettagli della sessione di PowerShell remota nella variabile denominata
$Session, quindi eseguire il comando seguente:Invoke-Command -Session $Session -ScriptBlock {Get-User $Using:Us | Select-Object DistinguishedName, ExternalDirectoryObjectId} -ErrorAction SilentlyContinueIn una sessione API REST: Eseguire il comando seguente:
Get-User $Us | Format-List DistinguishedName, ExternalDirectoryObjectId
In questo esempio viene trovata l'identità di un membro del gruppo:
In una sessione di PowerShell remota: Utilizzare il cmdlet Get-PSSession per archiviare i dettagli della sessione di PowerShell remota nella variabile denominata
$Session, quindi eseguire il comando seguente:Invoke-Command -Session $Session -ScriptBlock {Get-Recipient -Filter "Members -eq '$($User.DistinguishedName)'" -RecipientTypeDetails MailUniversalDistributionGroup | Select-Object DisplayName, ExternalDirectoryObjectId, RecipientTypeDetails} -ErrorAction SilentlyContinue -HideComputerNameIn una sessione API REST: Eseguire il comando seguente:
Get-Recipient -Filter "Members -eq '$($User.DistinguishedName)'" -RecipientTypeDetails MailUniversalDistributionGroup | Format-List DisplayName, ExternalDirectoryObjectId, RecipientTypeDetails
Scenario 2: Eseguire i cmdlet di Exchange Online ed espandere proprietà specifiche
In questo esempio vengono trovate tutte le cassette postali in cui è impostata l'autorizzazione GrantSendOnBehalfTo e vengono restituiti gli utenti che dispongono dell'autorizzazione per la cassetta postale.
In una sessione di PowerShell remota: Utilizzare il cmdlet Get-PSSession per archiviare i dettagli della sessione di PowerShell remota nella variabile denominata
$Session, quindi eseguire il comando seguente:Invoke-Command -Session $Session -ScriptBlock {Get-Mailbox -Filter "GrantSendOnBehalfTo -ne `$null" -ErrorAction SilentlyContinue | Select-Object ExternalDirectoryObjectId, GrantSendOnBehalfTo -ExpandProperty GrantSendOnBehalfTo}In una sessione API REST: Eseguire il comando seguente:
$mailboxes = Get-Mailbox -Filter "GrantSendOnBehalfTo -ne `$null" foreach ($mailbox in $mailboxes) { $users = $mailbox | Select-Object GrantSendOnBehalfTo -ExpandProperty GrantSendOnBehalfTo | Get-User $users | Select-Object Name, Guid }
Scenario 3: Eseguire i cmdlet di Exchange Online in una sessione di PowerShell specifica quando sono presenti più sessioni
Questo esempio illustra come creare due sessioni di PowerShell nella stessa finestra ed eseguire il cmdlet Get-Mailbox in ogni sessione.
In una sessione di PowerShell remota:
Utilizzare il cmdlet Get-PSSession per archiviare i dettagli della prima sessione di PowerShell remota nella variabile denominata
$Session1.Utilizzare il cmdlet Get-PSSession per memorizzare i dettagli della seconda sessione di PowerShell remota nella variabile denominata
$Session2.Eseguire i comandi seguenti:
Invoke-Command -Session $Session1 -ScriptBlock {Get-Mailbox -ResultSize 1} Invoke-Command -Session $Session2 -ScriptBlock {Get-Mailbox -ResultSize 1}
In una sessione dell'API REST:
Nel primo comando Connect-ExchangeOnline utilizzare il parametro Prefix con il valore C1.
Archiviare i dettagli della prima connessione API REST nella variabile denominata
$ConnectionInfo1eseguendo il comando seguente:$ConnectionInfo1 = Get-ConnectionInformation | Where-Object { $_.ModulePrefix -eq "C1"}Nel secondo comando Connect-ExchangeOnline , utilizzare il parametro Prefix con il valore C2.
Archiviare i dettagli della seconda connessione API REST nella variabile denominata
$ConnectionInfo2eseguendo il comando seguente:$ConnectionInfo1 = Get-ConnectionInformation | Where-Object { $_.ModulePrefix -eq "C2"}Ora è possibile eseguire i comandi in entrambe le sessioni. Ad esempio:
$CommandStr1 = "Get-$($ConnectionInfo1.ModulePrefix)Mailbox -ResultSize 10" Invoke-Expression $CommandStr1Oppure
$CommandStr2 = "Get-$($ConnectionInfo2.ModulePrefix)Mailbox -ResultSize 10" Invoke-Expression $CommandStr2