2014-05-01 4 views
0

Je suis en train de mettre en place un service qui désactive un accès d'échange de l'utilisateur par powershell à distance au serveur d'échange et d'exécution comme ceci:powershell Remoting à l'échange: Set-CASMailbox ne pas propriété ActiveSyncBlockedDeviceIDs

Set-CASMailbox -Identity usern -OwaEnabled $False 
    Set-CASMailbox -Identity usern -EwsEnabled $False 
    Set-CASMailbox -Identity usern -EcpEnabled $False 
    Set-CASMailbox -Identity usern -MapiEnabled $False 
    Set-CASMailbox -Identity usern -MapiBlockOutlookRpcHttp $True 
    Set-CASMailbox -Identity usern -EwsAllowMacOutlook $False 
    Set-CASMailbox -Identity usern -EwsAllowOutlook $False 
//THIS ONE FAILS: 
    Set-CASMailbox -Identity usern -ActiveSyncBlockedDeviceIDs "USERSDEVICEID" 

erreur : Impossible de trouver un paramètre correspondant au nom de paramètre 'ActiveSyncBlockedDeviceIDs'.

quand je fais un Get-Command, à partir du serveur d'échange lui-même, il fait ActiveSyncBlockedDeviceIDs show dans la liste des paramètres Set-CASMailbox accepte, mais quand je fais un Get-Command de mon code C# de la télécommande serveur, il n'affiche pas ActiveSyncBlockedDeviceIDs dans la liste des paramètres !!! est-ce que je manque quelque chose? le commandlet Set-CASMailbox est-il différent entre celui qui s'exécute sur le serveur et celui qui est exposé à distance? ou ce champ n'est-il pas supporté? (ou tout autre arbre que je devrais aboyer pour que cela se produise via un service wcf qui ne s'exécute pas sur le serveur d'échange?)

mon code C# pour l'exécuter à partir du serveur distant est comme ça: (essayez .. . blocs, etc enlevés)

WSManConnectionInfo connectionInfo = new WSManConnectionInfo(
    new Uri("http://" + server + "/Powershell/Microsoft.Exchange"), 
    "http://schemas.microsoft.com/powershell/Microsoft.Exchange", 
    credential); 

     Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo); 

     PowerShell ps = PowerShell.Create(); 
     ps.Runspace = runspace; 

     //none of these seem to make any difference if i add them or not. 
     //ps.Commands.AddScript(@"Import-Module 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'"); 
     //ps.Commands.AddScript(@"Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010"); 
     ps.Commands.AddScript(@"Get-Command"); 

     runspace.Open(); 
     var psResult = ps.Invoke(); 

     //iterate through and find parameters for Set-CASMailbox 
     foreach (var res in psResult) { 
     if (res.Members["Name"].Value.ToString()=="Set-CASMailbox") { 
      foreach (var mem in res.Members) { 
      if (mem.Name == "ParameterSets") { 
       Console.WriteLine(mem.Value); 
       break; 
      } 
      } 
     } 
     } 

liste ou paramètres Sorties:

(ActiveSyncBlockedDeviceIDs est pas là, ni est ActiveSyncEnabledDeviceIDs pour cette matière)

[-Identity] <MailboxIdParameter> 
[-ActiveSyncDebugLogging <Nullable`1>] 
[-ActiveSyncEnabled] 
[-ActiveSyncMailboxPolicy <MailboxPolicyIdParameter>] 
[-DisplayName <String>] 
[-DomainController <Fqdn>] 
[-ECPEnabled] 
[-EmailAddresses <ProxyAddressCollection>] 
[-EwsAllowEntourage <Nullable`1>] 
[-EwsAllowList <MultiValuedProperty`1>] 
[-EwsAllowMacOutlook <Nullable`1>] 
[-EwsAllowOutlook <Nullable`1>] 
[-EwsApplicationAccessPolicy <Nullable`1>] 
[-EwsBlockList <MultiValuedProperty`1>] 
[-EwsEnabled <Nullable`1>] 
[-HasActiveSyncDevicePartnership] 
[-IgnoreDefaultScope] 
[-ImapEnabled] 
[-ImapEnableExactRFC822Size] 
[-ImapMessagesRetrievalMimeFormat <MimeTextFormat>] 
[-ImapSuppressReadReceipt] 
[-ImapUseProtocolDefaults] 
[-MAPIBlockOutlookNonCachedMode] 
[-MAPIBlockOutlookRpcHttp] 
[-MAPIBlockOutlookVersions <String>] 
[-MAPIEnabled] 
[-Name <String>] 
[-OWAEnabled] 
[-OwaMailboxPolicy <MailboxPolicyIdParameter>] 
[-PopEnabled] 
[-PopEnableExactRFC822Size] 
[-PopMessagesRetrievalMimeFormat <MimeTextFormat>] 
[-PopSuppressReadReceipt] 
[-PopUseProtocolDefaults] 
[-PrimarySmtpAddress <SmtpAddress>] 
[-SamAccountName <String>] 
[-ShowGalAsDefaultView] 
[-Verbose] 
[-Debug] 
[-ErrorAction <ActionPreference>] 
[-WarningAction <ActionPreference>] 
[-ErrorVariable <String>] 
[-WarningVariable <String>] 
[-OutVariable <String>] 
[-OutBuffer <Int32>] 
[-WhatIf] 
[-Confirm] 
+0

Utilisez-vous le même compte sur les sessions locales et distantes lorsque vous exécutez la commande get? – mjolinor

+0

Je le crois. J'ai essayé de passer null, mon compte, et le compte de service que nous avons l'intention d'utiliser pour le PSCredential, tous avec les mêmes résultats. – 101chris

+1

Les cmdlets que vous obtenez dans ces sessions d'accès distant sont personnalisées en fonction des rôles RBAC auxquels le compte de connexion appartient. Vous ne disposez pas de toutes les cmdlets, ou vous pouvez obtenir des cmdlets mais manquer certains paramètres de ces cmdlets si vous n'appartenez pas aux rôles RBAC appropriés pour exécuter ces cmdlets. – mjolinor

Répondre

0

Finalement, je suis revenu à ce problème. La suggestion de mjolinor m'a aidé. Nécessaire d'ajouter le compte de service au rôle RBAC approprié. (Les gestionnaires d'échange, je pense). Après cela, ActiveSyncBlockedDeviceIDs et ActiveSyncEnabledDeviceIDs apparaissaient dans la liste des paramètres disponibles pour la commande Set-CASMailbox. Intéressant de noter que ce sont les 2 seuls manquants, et les 2 seuls qui sont apparus après avoir ajouté au rôle.

Questions connexes