【问题标题】:How to read PowerShell StdOut如何阅读 PowerShell 标准输出
【发布时间】:2019-04-24 02:33:56
【问题描述】:

我有代码可以调用CreateProcess() 并获取StdIn 和StdOut 的句柄。 我已经将它与 CMD 一起使用,它工作正常。但是,我启动了 PowerShell 有了它,PowerShell 并没有很好地发挥作用。它基本上利用了我的程序 并接管了线程。

这当然导致我进行调试,我发现ReadFile() 函数读取 PowerShell 的输出,一切都结束了。很有趣。

所以我的问题是:PowerShell 以什么格式将输出发送到 StdOut?

我听说它在“对象”中说话,但它似乎输出原始机器代码。

DWORD WINAPI threadRead(HANDLE *cmdStd_OUT_RD) {
    char *chBuff = malloc(READ_BUFFER_SM);
    int check = 0;
    for (;;) {
        dwRead = 0;  //Global Variable
        check = 0;
        memset(chBuff, 0, READ_BUFFER_SM);
        puts("Reading..\n");
        check = ReadFile(*cmdStd_OUT_RD, chBuff, READ_BUFFER_SM, &dwRead, NULL);
        if (check || dwRead > 0) {
            printf("Display: %s\n", chBuff);
        }
    }
    return 0;
}

另外,还有另一个对 PowerShell 安全的 Read 函数吗?

编辑:我觉得它正在发送字节,所以可以尝试使用void。之后会更新。

编辑:不,它仍然接管。猜猜ReadFile() 无法读取它的StdOut。

【问题讨论】:

    标签: c powershell stdout


    【解决方案1】:

    尝试阅读: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_redirection?view=powershell-6?

    试试这个:

    $OutputVariable = (Shell command) | Out-String
    

    "$params = "/verify $pc /domain:hosp.uhhg.org"
    start-process "netdom.exe" $params -WindowStyle Hidden -Wait"
    

    【讨论】:

    • 对不起伙计,漫长的一周,我现在给你道具。是的,我发现运行脚本会更明智。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    相关资源
    最近更新 更多