批处理文件v PowerShell脚本

时间:2015-06-18 19:53:53

标签: windows powershell batch-file command-line

在批处理文件中使用PowerShell脚本有什么好处吗?

我的意思是,如果我有一些可以在其中运行的东西,是否有任何东西可以保证检测PowerShell是否已安装并在批处理文件中使用它(如果是的话)?

SCHTASKS在两者上的工作方式完全相同。鉴于此,它们之间是否有区别?

1 个答案:

答案 0 :(得分:0)

以下代码通过两个进程执行相同的代码:

internal class Program
{
    private static void Main()
    {
        const string COMMAND = @"SCHTASKS /QUERY /XML ONE";

        Collection<PSObject> psObjects;
        using (var ps = PowerShell.Create())
        {
            ps.AddScript(COMMAND);
            psObjects = ps.Invoke();
        }

        var process = new Process
        {
            StartInfo = new ProcessStartInfo
            {
                UseShellExecute = false,
                RedirectStandardOutput = true,
                FileName = "cmd.exe",
                Arguments = "/C " + COMMAND
            }
        };

        process.Start();

        string cmdTasks;
        using (var reader = process.StandardOutput)
        {    
            cmdTasks = reader.ReadToEnd();
        }
    }
}

两种方法的响应对象不同。 Process.Start()方法返回一个字符串,我必须解析它,而调用PowerShell会给我一组PSObject个对象。