Question Exchange Management Shell VS Powershell

Plus d'informations
il y a 11 ans 8 mois #3797 par Pazefur
J'ai récupérer ce code, ça à l'air de marcher je récupère bien un seul objet powershell, ici la difficulté c'est de manipuler un objet de type PSObject, les attributs et les méthodes qu'on peut utiliser.

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

Plus d'informations
il y a 11 ans 8 mois #3801 par janel
Si les méthodes et les propriétés de l'objet ne sont pas connues depuis Visual Studio via la déclaration préalable d'une assembly (avec une instruction du genre \"using monassembly;\"), la seule technique que je connaisse pour y accéder repose sur cette syntaxe:

[code:1]
foreach (PSObject obj in sorties)
{
// accéder à la propriété \"Name\" de l'objet:
String name = obj.Properties[\"Name\"].Value;

// utiliser la méthode \"Rename()\" de l'objet:
String name = obj.Methods[\"Rename\"].Invoke(\"oldtext\",\"newtext\"«»);
}
[/code:1]
Ce n'est qu'un exemple fictif à deux balles, à toi de creuser le sujet selon ce que tu veux faire précisément.

Tu pourras trouver plus d'infos sur MSDN en recherchant les classes PSPropertyInfo et PSMethodInfo.

Janel<br><br>Message édité par: janel, à: 23/01/09 14:31

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

Plus d'informations
il y a 11 ans 7 mois #3810 par Pazefur
En fait je viens de comprendre ma connerie, on doit passer le texte du script à la méthode addScript et non le chemin du script :blink:

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

Plus d'informations
il y a 11 ans 7 mois #3811 par janel
Ah oui, évidemment. :)

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

Plus d'informations
il y a 11 ans 7 mois #3859 par Pazefur
Bon je mets mon code peut être que ça sera utile à quelqu'un :

Alors d'abord ma fonction on donne le chemin du script puis les arguments dans un dictionnaire :
[code:1] public static String runPowershellScript(String path,Dictionary&lt;String,String&gt; dic)
{
String res = \&quot;\&quot;; // will contain what the function returns
Collection&lt;PSObject&gt; results; // Will hold the results

Runspace myRunSpace = RunspaceFactory.CreateRunspace();
myRunSpace.Open();

// Create a pipeline
Pipeline pipeLine = myRunSpace.CreatePipeline();

using (pipeLine)
{
Command cmd = new Command(path);
if (dic != null)
{
foreach(String key in dic.Keys){
cmd.Parameters.Add(key,dic[key]);
}
}
pipeLine.Commands.Add(cmd);

// Execute the pipeline and save the objects returned.
results = pipeLine.Invoke();

foreach (PSObject obj in results)
{
if (res.Equals(\&quot;\&quot;«»))
res = obj.ToString();
else
res = res + \&quot;\n\&quot; + obj.ToString();
}
}

pipeLine = null;

myRunSpace.Close();
myRunSpace = null;

return res;
}[/code:1]




Et puis le code pour la lancer
[code:1]
String path = \&quot;F:\\Devs\\Main.ps1\&quot;;
Dictionary&lt;String,String&gt; dic = new Dictionary&lt;String,String&gt;();
dic.Add(\&quot;a\&quot;, \&quot;OU=Utilisateurs,DC=domain,DC=com\&quot;«»);
String result = runPowershellScript(path, dic);
Console.WriteLine(\&quot;resultat du script : \&quot; + result);[/code:1]


Voilou :whistle:

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

Plus d'informations
il y a 11 ans 7 mois #3862 par Laurent Dardenne
Pazefur écrit:

Bon je mets mon code peut être que ça sera utile à quelqu'un

Bonne idée :)

Tutoriels PowerShell

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

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