Question diff console PS & console Exchange management 2010
- jeanfrancois
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 16
- Remerciements reçus 0
Donc je n'arrive pas à importer les commandes get-mailbox et autres...
Y-a-t-il une commande qui permet de lister les commandes par module présent?
J'ai chercher à télécharger le module via google, un site externe mais je n'ai rien trouvé
Merci d'avance
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
La commande pour lister les modules présents sur ta machine est :
[code:1]Get-Module -ListAvailable[/code:1]
Tu n'as pas besoin du paramètre -All.
Je n'ai pas de serveur Exchange 2010 sous la main, mais si tu ne vois pas de module PowerShell sur ton serveur c'est que peut-être les commandelettes Exchange 2010 se trouvent dans un Snapin.
Pour le vérifier, dans la console Exchange 2010 essaye la commande :
[code:1]Get-PSSnapin[/code:1]
Une fois que tu auras trouvé le nom du snapin tu pourras l'importer dans une console PowerShell \"standard\" avec la commande :
[code:1]Add-PSSnapin[/code:1]
En espèrant que ça t'aide...
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- jeanfrancois
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 16
- Remerciements reçus 0
Je viens de recommencer à travailler là dessus.
Je pense avoir trouvé via votre aide.
Quand j'exécute sur mon serveur exchange dans une console PS \"normal\":
[code:1]Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
Get-Mailbox[/code:1]
La commande Get-Mailbox est reconnue et me renvoie le résultat.
Par contre quand j'exécute le script C#, le \"Add-PSSnapin\" passe mais pas le Get-Mailbox ...
Elle est reconnue, mais ne renvoie rien.
Quelqu'un aurait-il l'occasion de tester le code?
Fournir un retour quand au fonctionnement de la command Get-Mailbox ?
Merci d'avance!
Voici le code:
[code:1]static void Main(string[] args)
{
SecureString pwd = new SecureString();
foreach (char c in \"*******\".ToCharArray())
{
pwd.AppendChar(c);
}
PSCredential cred = new PSCredential(\"domain\\login\", pwd);
// Create a WSManConnectionInfo object using the default constructor to
// connect to the \"localhost\". The WSManConnectionInfo object can also
// specify connections to remote computers.
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(false, \"serveur.domain.be\", 5985, \"/wsman\", \"schemas.microsoft.com/powershell/Microsoft.PowerShell\", cred);
// Create a remote runspace pool that uses the WSManConnectionInfo object.
// The minimum runspaces value of 1 specifies that Windows PowerShell will
// keep at least 1 runspace open. The maximum runspaces value of 2 specifies
// that Windows PowerShell will keep a maximum of 2 runspaces open at the
// same time so that two commands can be run concurrently.
using (RunspacePool remoteRunspacePool =
RunspaceFactory.CreateRunspacePool(1, 1, connectionInfo))
{
// Call the Open() method to open a runspace from the pool and establish
// the connection.
remoteRunspacePool.Open();
PowerShell gpsCommand1 = PowerShell.Create().AddCommand(\"Add-PSSnapin\"«»);
gpsCommand1.AddArgument(\"Microsoft.Exchange.Management.PowerShell.E2010\"«»);
gpsCommand1.RunspacePool = remoteRunspacePool;
IAsyncResult gpsCommandAsyncResult1 = gpsCommand1.BeginInvoke();
PSDataCollection<PSObject> gpsCommandOutput1 = gpsCommand1.EndInvoke(gpsCommandAsyncResult1);
// Call the Create() method to create a pipeline, call the AddCommand(string)
// method to add the \"get-process\" command, and then call the BeginInvoke()
// method to run the command asynchronously using a runspace of the pool.
PowerShell gpsCommand = PowerShell.Create().AddCommand(\"Get-Mailbox\"«»);
gpsCommand.RunspacePool = remoteRunspacePool;
IAsyncResult gpsCommandAsyncResult = gpsCommand.BeginInvoke();
// When you are ready to handle the output, wait for the command to complete
// before extracting results. A call to the EndInvoke() method will block and return
// the output.
PSDataCollection<PSObject> gpsCommandOutput = gpsCommand.EndInvoke(gpsCommandAsyncResult);
if ((gpsCommandOutput != null) && (gpsCommandOutput.Count > 0))
{
foreach (PSObject CommandOutput in gpsCommandOutput)
{
// Process the output as needed.
Console.WriteLine(\">> MailBox command: \"«»);
Console.WriteLine(
\"Caption: {0} State: {1}\",
CommandOutput.Properties[\"Name\"].Value,
CommandOutput.Properties[\"Alias\"].Value);
Console.WriteLine();
}
}
// Once done with running all the commands, close the remote runspace pool.
// The Dispose() (called by using primitive) will call Close(), if it
// is not already called.
remoteRunspacePool.Close();
}
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- jeanfrancois
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 16
- Remerciements reçus 0
Bonjour Jeff,
La commande pour lister les modules présents sur ta machine est :
[code:1]Get-Module -ListAvailable[/code:1]
Tu n'as pas besoin du paramètre -All.
Je n'ai pas de serveur Exchange 2010 sous la main, mais si tu ne vois pas de module PowerShell sur ton serveur c'est que peut-être les commandelettes Exchange 2010 se trouvent dans un Snapin.
Pour le vérifier, dans la console Exchange 2010 essaye la commande :
[code:1]Get-PSSnapin[/code:1]
Une fois que tu auras trouvé le nom du snapin tu pourras l'importer dans une console PowerShell \"standard\" avec la commande :
[code:1]Add-PSSnapin[/code:1]
En espèrant que ça t'aide...
Arnaud
Bonjour,
Je viens d'essayer ceci aussi:
[code:1]PS D:\> Invoke-Command { Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010; Get-Mailbox } -ComputerName exchange-srv -Credential $cred
Value cannot be null.
Parameter name: parameters
+ CategoryInfo : NotSpecified: ( : ) [Get-Mailbox], ArgumentNullException
+ FullyQualifiedErrorId : System.ArgumentNullException,Microsoft.Exchange.Management.RecipientTasks.GetMailbox[/code:1]
C'est vraiment bizarre car sur la console standard de mon exchange, ça fonctionne!
Get-Mailbox est importé et renvoie la liste des boites mail!
Pourquoi renvoie-t-il null lors d'un lancement à distance?
Si quelqu'un peut aussi tester ces 2 lignes de son côté? ça m'aiderait d'avoir un 2ème avis.
Merci
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
Je n'ai pas encore été confronté à ce genre de problèmes car je n'ai pas encore migré en Exchange 2010 (c'est pour bientôt). Ceci étant dit, j'ai déjà eu des témoignages de problèmes similaires.
Il me semble que les commandes PowerShell pour l'administration d'Exchange 2010 (même lancée localement sur le serveur) font du remoting pour se connecter au serveur Exchange (lui-même). Cela fait donc un premier saut (hop).
Tout ca pour dire que tu vite être confronté au problème du \"double hop\" et avoir un problème de passage de credential. D'où l'utilisation de CredSSP.
J'ai trouvé un lien qui parle de cela : Overview of Exchange Management Shell .
Mais ce ne sont que des suppositions car je n'ai pas Exchange 2010.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- jeanfrancois
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 16
- Remerciements reçus 0
Je vais essayer avec CredSSP mais il faut que je fasse qques modifications dans le client WinRM et la stratégie de groupes du serveur.
Une petite question:
Via votre exchange 2007, vous arrivez à récupérer les infos depuis votre poste xp par exemple avec cette commande?
[code:1]
Invoke-Command { Add-PSSnapin Microsoft.Exchange.Management.PowerShell.? ; Get-Mailbox } -ComputerName exchange-srv -Credential $cred
[/code:1]
Merci
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- diff console PS & console Exchange management 2010