繁体   English   中英

批处理文件 v PowerShell 脚本

[英]Batch file v PowerShell script

与批处理文件相比,使用 PowerShell 脚本有什么优势吗?

我的意思是,如果我有可以在其中运行的东西,有什么可以保证检测是否安装了 PowerShell 并在批处理文件上使用它(如果是)?

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

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

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对象的集合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM