我正在编写一个powershell脚本,以通知我在丛服务器上播放时两个用户是否使用相同的用户名但不同的IP。
我设法获得了当时正在运行的当前连接的xml显示。
我需要做的是想出一个reg表达式,从中提取用户id和IP地址,然后我可以进行搜索,看看是否有重复的用户id和不同的IP。
我设法找到了IP地址的正则表达式,它是'\b\d{1,3}。\d{1,3}。\d{1,3}。\d{1,3}\b
但是也很难从中提取用户Id。请注意,用户ID将始终是数字,但没有设置限制。
以下是数据的示例
<User id="13456" title="usersmith" />
<Player address="2.2.2.2" device="Windows" machineIdentifier="a9b222ef940"
我会将其解析为xml,例如:
#$xml = [xml](Get-Content myfile.xml)
#$xml = [xml](Invoke-WebRequest ... whatever).Content
$xml = [xml]@"
<?xml version="1.0" encoding="utf-8"?>
<root>
<User id="13456" title="usersmith" />
<Player address="2.2.2.2" device="Windows" machineIdentifier="a9b222ef940" />
</root>
"@
$xml.root.user.id
但是,如果您真的想要regex,请尝试@heemayl的解决方案,除了行^
-anchor的开头可能不适合您的真实xml数据(在这种情况下,您提供了错误的sampledata)。例如:
if('User id <User id="1354" thumb="plex.tv/users/a51d"; title="bob" />' -match '<Users+id="([^"]+)"') { $Matches[1] }