2009-10-14 7 views
0

En C#, Comment puis-je vérifier les erreurs de périphérique et de système? Serait-il simple d'utiliser PowerShell Scipts, ou cela ajouterait-il à la complexité et à la difficulté?C# - Vérification des problèmes de périphérique et des problèmes système

+0

Pouvez-vous préciser ce que vous entendez par «erreurs de périphérique et système»? Quels appareils et systèmes? – bobbymcr

+0

Pas d'erreurs spécifiques, juste des erreurs en général. Peut-être détecter les causes possibles d'un périphérique pourrait échouer. Je peux le faire manuellement, mais c'est pour d'autres utilisateurs, donc pour rendre la vie un peu plus facile, peut-être détecter des causes possibles et les afficher pour l'utilisateur. – Michael

Répondre

2

Pour les clients Windows 7, consultez le Windows Troubleshooting Platform. Voici un download dessus avec plus de détails. Il utilise des scripts PowerShell pour faire exactement ce dont vous parlez. Ce blog post montre comment créer un pack de dépannage - c'est plutôt simple. Je ne pense pas que WTP fonctionne sur des plateformes de bas niveau. Dans ce cas, je voudrais juste écrire des scripts PowerShell pour détecter et réparer les causes profondes. Si vous voulez envelopper dans une belle interface, consultez PowerBoots - un moyen facile de créer une interface graphique WPF au-dessus de votre script. Si vous voulez héberger PowerShell dans votre GUI basé sur C#, c'est très simple. Voici un extrait de code d'une application Forms:

private void button1_Click(object sender, EventArgs e) 
    { 
     string cmd = @"Get-ChildItem $home\Documents -recurse | " + 
         "Where {!$_.PSIsContainer -and " + 
         "($_.LastWriteTime -gt (Get-Date).AddDays(-7))} | " + 
         "Sort Fullname | Foreach {$_.Fullname}"; 

     using (Runspace runspace = RunspaceFactory.CreateRunspace()) 
     { 
      runspace.Open(); 
      using (Pipeline pipeline = runspace.CreatePipeline(cmd)) 
      { 
       this.Cursor = Cursors.WaitCursor; 

       pipeline.Commands.AddScript(cmd); 
       Collection<PSObject> results = pipeline.Invoke(); 
       foreach (PSObject obj in results) 
       { 
        listBox1.Items.Add(obj); 
       } 

       this.Cursor = Cursors.Default; 
      } 
     } 
    } 

Vous devez ajouter une référence à l'ensemble de System.Management.Automation. Si vous avez installé le SDK Windows/.NET qui doit être dans ProgramFiles \ ReferenceAssemblies \ Microsoft \ WindowsPowerShell \ v1.0. Vous aurez également besoin de quelques-uns en utilisant statememets:

using System.Collections.ObjectModel; 
using System.Management.Automation; 
using System.Management.Automation.Runspaces; 
+0

J'aimerais obtenir un peu de Powershell dans mon interface graphique. Où puis-je vous contacter? – Michael

+0

Vous pouvez me contacter via mon blog http://KeithHill.spaces.live.com –

Questions connexes