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

问题描述 投票:0回答:2

我正在使用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

powershell
2个回答
2
投票

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

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

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

单引号在cmd.exe中没有特殊含义,

所以markdownlint.cmd 'c:\index.md'失败了,因为它从字面上看它们。


0
投票

Export-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'

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

© www.soinside.com 2019 - 2024. All rights reserved.