我有一个脚本从.msg文件中获取电子邮件地址,我已经让大部分脚本按照我想要的方式工作。
所以对于这个字符串:
(Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).Matches
我明白了:
Index : 0
Length : 15
Value : email@email.com
如何过滤结果以仅获取表格中值的数据?
答案 0 :(得分:3)
这可能不是最优雅的解决方案,但这会有效吗?:
$SEMFINAL = "Hello my address is bob@example.com Thanks. P.S. You can also reach me at robert@example.com"
(Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).matches | select value
输出(匹配对象的Value
属性):
Value
-----
bob@example.com
robert@example.com
要将属性扩展为实际值,请将最后一部分更改为
| select -Expand value
到最后。
(Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).matches | select -Expand value
输出:
bob@example.com
Robert@example.com
答案 1 :(得分:0)
我刚刚了解了对象和哈希表,我认为这是在这里发生的事情。您需要使用要为其分配的值创建对象。否则它只会给你这些值的长度。
类似于:
$EmailInput = (Select-String -InputObject $SEMFINAL -Pattern '\w+@\w+\.\w+' -AllMatches).Matches
$Email = @{
"Email" = $EmailInput
}
$EmailObject = New-Object -TypeName psobject -Property $Email
我还在学习,所以你可能需要稍微(或很多)搞砸它,但我认为你需要把这些信息放到一个对象中,如果你想读取实际值而不是长度。
如果其他人更了解物品,请纠正我。