逐行迭代变量

Jus*_*Guy 8 powershell

我有一个小脚本,可以将文本输出到变量中.我需要逐行完成它才能解析它.我可以通过将变量输出到文本文件然后使用Get-Content读取它来做到这一点,但这看起来有点多余.

我的脚本连接到Fortigate单元并运行某个查询.它的回应是我要解析的内容.

New-SshSession 10.0.0.138 -Port 65432 -Credential (Get-Credential) -AcceptKey
$command = 'config router policy
show'
$result = Invoke-SSHCommand -Index 0 -Command $command
Run Code Online (Sandbox Code Playgroud)

小智 13

ForEach ($line in $($result -split "`r`n"))
{
    Write-host $Line
}
Run Code Online (Sandbox Code Playgroud)

  • 您的行结尾可能是 \`r 或 \`n 与 \`r\`n (2认同)

5an*_*dr0 8

这是基于RegexMatch 的解决方案,这是 split 的默认行为。
这适用于所有类型的行结尾:

  • 窗口 (CR LF)\r\n
  • 旧麦金塔 (CR)\r
  • Unix (LF)\n
($result -split "\r?\n|\r") | Out-Host
Run Code Online (Sandbox Code Playgroud)

如果你想摆脱连续的换行符,你可以使用:

($result -split "[\r\n]+") | Out-Host
Run Code Online (Sandbox Code Playgroud)


Ves*_*per 7

根据您的描述,您的变量是带换行符的字符串.你可以通过调用它将它变成一个单行字符串数组:

$result = $result -split "`r`n"
Run Code Online (Sandbox Code Playgroud)