0

我正在编写一个 powershell 脚本来通知我,如果两个用户在从 plex 服务器播放时使用相同的用户名但不同的 IP。

我设法获得了当时正在传输的当前连接的 xml 显示。

我需要做的是提出一个 reg 表达式,在其中提取用户 ID 和 IP 地址,然后我可以进行搜索以查看是否有重复的用户 ID 并且具有不同的 IP。

我设法找到了 IP 地址的正则表达式 '\b\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}\b'</ p>

但是也很难从中提取用户 ID。请注意,用户 ID 始终是数字,但没有设置限制。

这是数据的示例

<User id="13456" title="usersmith" />
<Player address="2.2.2.2" device="Windows" machineIdentifier="a9b222ef940" 
4

1 回答 1

1

我会将其解析为 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

但如果您真的想要正则表达式,请尝试@heemayl 的解决方案,除了^可能不适合您的真实 xml 数据的 start-of-line -anchor (在这种情况下,您提供了错误的示例数据)。前任:

if('User id <User id="1354" thumb="plex.tv/users/a51d"; title="bob" />' -match '<User\s+id="([^"]+)"') { $Matches[1] }
于 2016-05-10T12:30:26.257 回答