Question diff console PS & console Exchange management 2010

Plus d'informations
il y a 15 ans 3 mois #8137 par jeanfrancois
quand je fais un Get-Module -All -ListAvailable, je n'obtiens pas le module exchange ou un nom qui s'en rapproche...
Donc je n'arrive pas à importer les commandes get-mailbox et autres...

Fichier attaché :


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é :s


Merci d'avance

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 3 mois #8138 par Arnaud Petitjean
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

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.

Plus d'informations
il y a 15 ans 2 mois #8562 par jeanfrancois
Bonjour,

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.

Plus d'informations
il y a 15 ans 2 mois #8565 par jeanfrancois
Arnaud écrit:

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.

Plus d'informations
il y a 15 ans 2 mois #8572 par Arnaud Petitjean
Salut,

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.

Plus d'informations
il y a 15 ans 1 mois #8577 par jeanfrancois
ok merci pour votre réponse.
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.

Temps de génération de la page : 0.081 secondes
Propulsé par Kunena