首页 > 解决方案 > Powershell 使用 1 行而不是 3 行

问题描述

我有数据文件

$data=gc c:\blabla.cfg 

在里面我有各种各样的行,我想提取数据,例如,在我拥有的文件中:

SMTP_SERVER = smtp.bla.local

因此,如果我想在脚本中创建变量,例如: $smtp 其中包含此信息,我就是这样做的:

$tmp = $data | Select-string SMTP_SERVER
$smtp=($tmp -split ' ')[2]

它可能看起来有点愚蠢,只是我有很多配置要从文件中获取,并且我喜欢用管道将它放在一个衬里中,如果我这样做:

$smtp = $data | Select-String SMTP_SERVER | $_.Split(' ')[2] 

我收到一条错误消息,说表达式只允许作为管道的第一个元素

标签: powershellsplit

解决方案


用一个ForEach-Object

Select-String -Path "c:\blabla.cfg" -SimpleMatch "SMTP_SERVER" | ForEach-Object { $_.ToString().Split(' ')[2] }

推荐阅读