首先,这是我第一次使用powershell。一切都是新的。我的脚本看起来像这样。
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$Username = "username@domain.com"
$Password = "password"
$to = "Username @domain.com"
$subject = "daily_check"
$body = (Get-Content 'C:\Users\xyz\Downloads\mylog.log' | Select-String 'string.string1.string2 - Request:') | Out-String
$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.body = $body
$message.to.add($to)
#$message.cc.add($cc)
$message.from = $username
#$message.attachments.add($attachment)
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$smtp.send($message)我收到了一封成功的电子邮件,所有的行都带有搜索字符串,它看起来像下面这样。
INFO 2018-06-01 06:03:01,855 string.string1.string2 - Request: QWERTY- 123 Request: abc- XX1343XX123-01 Request: Type- BB
INFO 2018-06-01 11:06:54,551 string.string1.string2 - Request: QWERTY- 123 Request: abc- XX-12573XX123-00 Request: Type- BB
INFO 2018-06-01 11:51:50,124 string.string1.string2 - Request: QWERTY- 123 Request: abc- 123XX122233-03 Request: Type- BB
INFO 2018-06-01 12:20:15,076 string.string1.string2 - Request: QWERTY- 123 Request: abc- XX-12563XX123-00 Request: Type- BB
INFO 2018-06-01 12:24:25,233 string.string1.string2 - Request: QWERTY- 123 Request: abc- XX-123XX12913-00 Request: Type- BB但我希望我的输出如下所示。
2018-06-01 06:03:01, QWERTY- 123 abc- XX1343XX123-01 Type- BB
2018-06-01 11:06:54, QWERTY- 123 abc- XX-12573XX123-00 Type- BB
2018-06-01 11:51:50, QWERTY- 123 abc- 123XX122233-03 Type- BB
2018-06-01 12:20:15, QWERTY- 123 abc- XX-12563XX123-00 Type- BB
2018-06-01 12:24:25, QWERTY- 123 abc- XX-123XX12913-00 Type- BB我使用-split ' '并试图将每个字符串转换为变量并使用它们,但我不能,即使我这样做了,也应该有更好的方法来做到这一点。任何帮助都是非常感谢的。谢谢。
发布于 2018-06-02 05:46:46
看看-replace运算符和regular expressions。要从源格式转换为所需的格式,您可以执行以下操作:
$p = "^INFO +([0-9:, -]+)string.string1.string2 - Request: ([a-z-]+) ([0-9]+) Request: ([a-z-]+) ([A-Za-z0-9-]+) Request: (.*$)"
$newstring = $oldstring -replace $p, '$1 $2 $3 $4 $5 $6'这段代码使用一个简单(但相当长)的正则表达式从源字符串中提取子匹配项,然后使用反向引用将整个字符串替换为新字符串,从而将子匹配项替换为字符串。
https://stackoverflow.com/questions/50650997
复制相似问题