C# - 检查设备问题和系统问题

时间:2009-10-14 03:14:20

标签: c# powershell system device

在C#中,我如何检查设备和系统错误?使用PowerShell Scipts会很简单,还是会增加复杂性和难度?

1 个答案:

答案 0 :(得分:2)

对于Windows 7客户端,请查看Windows Troubleshooting Platform。这里有一个download,其中包含更多详细信息。它使用PowerShell脚本来完成您正在谈论的内容。这个blog post显示了如何编写故障排除包 - 这非常简单。

我认为WTP不适用于低级平台。在这种情况下,我会编写一些PowerShell脚本来检测和修复根本原因。如果你想在一个漂亮的UI中包装它,请查看PowerBoots - 一种在脚本之上创建WPF GUI的简单方法。如果要在基于C#的GUI上托管PowerShell,这非常简单。这是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;
            }
        }
    }

您需要添加对System.Management.Automation程序集的引用。如果已安装应位于ProgramFiles \ ReferenceAssemblies \ Microsoft \ WindowsPowerShell \ v1.0中的Windows / .NET SDK。您还需要一些使用statememets:

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