【问题标题】:Batch file v PowerShell script批处理文件 v PowerShell 脚本
【发布时间】:2023-03-30 11:54:27
【问题描述】:

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

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

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

【问题讨论】:

  • 我很难相信你有任何比 dir c:\ 更复杂的东西可以运行。
  • @HyperAnthony 所以答案是 PowerShell 只是添加了额外的工具,所以如果我不使用它,那么就没有其他区别了吗?
  • SCHTASKS 在两者中的工作方式完全相同。
  • 不正确:PowerShell 方法花费的时间是批处理文件方法的 2.92 倍(在简单测试中为 143 对 49 厘秒)。换句话说,批处理方法的运行时间是 PS 方法的 34%...

标签: windows powershell batch-file command-line


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-11-15
    • 2014-10-14
    • 2023-03-30
    • 2013-02-20
    • 2018-04-13
    • 2012-10-20
    • 2023-01-23
    • 1970-01-01
    • 2013-10-20
    相关资源
    最近更新 更多