PowerShell匹配表达式

时间:2015-02-14 05:50:30

标签: powershell powershell-v2.0 powershell-v3.0

我在PowerShell中输出以下文本输出,这些输出来自于运行netsh wlan show networks

SSID 1 : LSOX
    Network type            : Infrastructure
    Authentication          : WPA2-Personal
    Encryption              : CCMP 

SSID 2 : Embers_2ghz
    Network type            : Infrastructure
    Authentication          : WPA2-Personal
    Encryption              : CCMP 

SSID 3 : BRIGHTON_LEVEL1
    Network type            : Infrastructure
    Authentication          : WPA2-Personal
    Encryption              : CCMP 

SSID 4 : BRIGHTON_LEVEL2
    Network type            : Infrastructure
    Authentication          : WPA2-Personal
    Encryption              : CCMP 

SSID 5 : BRIGHTON_PRODUCTION
    Network type            : Infrastructure
    Authentication          : WPA2-Personal
    Encryption              : CCMP

这就是我现在拥有的PowerShell,但是没有做我想做的事:(netsh wlan show networks) | Select-String -Pattern "(SSID .* : ?)" | % { $_.Matches[0].Value }

使用某种Select-String -Pattern表达式我想只列出名称,因此输出将为:

LSOX
Embers_2ghz
BRIGHTON_LEVEL1
BRIGHTON_LEVEL2
BRIGHTON_PRODUCTION

我很擅长PowerShell,但在表达方面很糟糕,虽然我觉得它们很吸引人,但这里有一个我引用的网站http://powershell.com/cs/blogs/ebookv2/archive/2012/03/06/chapter-13-text-and-regular-expressions.aspx#regular-expressions

1 个答案:

答案 0 :(得分:0)

我想我已经解决了......

这似乎有效:

(netsh wlan show networks) | Select-String -Pattern "(?<=SSID . : ).+" | % { $_.Matches[0].Value }