如何将Powershell输出存储到变量?

时间:2019-04-24 07:06:51

标签: powershell

我正在使用Powershell脚本验证降价,并且在命令行下使用

markdownlint.cmd "c:\index.md"

它返回如下所示的输出

levels should only increment by one level at a time [Expected: h2; Actual: h3]

index.md: 4: MD003/heading-style/header-style Heading style 
[Expected: setext; Actual: atx]

我想将输出日志导出到一个变量,我想在其中进行测试

if( $output -contains '*Expected*')
{

Write-Host "contains errors"
}

不幸的是,我无法在代码内导出到变量,我该怎么办?有什么想法吗?

我尝试过的选项

$output = Invoke-Expression "markdownlint.cmd 'c:\index.md' "

    markdownlint.cmd 'c:\index.md' | Export-csv c:\test.csv

没有帮助。

有什么想法吗?

TIA,

注意:markdownlint.cmd是CMD行Env

2 个答案:

答案 0 :(得分:2)

只需将批处理命令和args括在括号中

$output = (markdownlint.cmd "c:\index.md")

if( $output -match 'Expected') { 
    Write-Host "contains errors" 
}

cmd.exe

中,单引号没有特殊含义。

所以markdownlint.cmd 'c:\index.md'失败是因为它会按字面意义查找它们。

答案 1 :(得分:0)

导出csv 是两个命令的组合: convertTo-csv 通过管道传输到文件

markdownlint.cmd“ c:\ index.md” 可能不会生成Powershell对象作为输出。 从Get-Help ConvertTo-Csv -Full中,我可以看到 ConvertTo-csv 需要Powershell对象作为输入:

 SYNTAX
ConvertTo-Csv [-InputObject] <PSObject> [[-Delimiter] <Char>] [-NoTypeInformation] [<CommonParameters>]

ConvertTo-Csv [-InputObject] <PSObject> [-NoTypeInformation] [-UseCulture] [<CommonParameters>]

您可以使用

markdownlint.cmd 'c:\index.md' | out-file 'c:\textfile.txt'

,然后检查文件内容,并查看如何解析或转换文件。