我正在使用 cmdlet 从 JSON 文件收集数据ConvertFrom-Json。到目前为止,这有效。JSON 包含哈希表数组。
[
{
"userSamAccountName": "jodoe",
"QuotaGroup": "AD-Group-Contoso-1"
},
{
"userSamAccountName": "jodoe",
"QuotaGroup": "AD-Group-Contoso-2"
},
{
"userSamAccountName": "frmark",
"QuotaGroup": "AD-Group-Contoso-1"
},
{
"userSamAccountName": "frmark",
"QuotaGroup": "AD-Group-Contoso-2"
}
]
Run Code Online (Sandbox Code Playgroud)
现在我有另一个包含一些重叠数据的哈希表数组。
[
{
"userSamAccountName": "jodoe",
"QuotaGroup": "AD-Group-Contoso-1"
},
{
"userSamAccountName": "jodoe",
"QuotaGroup": "AD-Group-Contoso-2"
},
{
"userSamAccountName": "niwellenstein",
"QuotaGroup": "AD-Group-Contoso-1"
},
{
"userSamAccountName": "niwellenstein",
"QuotaGroup": "AD-Group-Contoso-2"
}
]
Run Code Online (Sandbox Code Playgroud)
我想将它们组合起来而不重复。
我尝试了一些像select -Uniqueand这样的命令.Contains(),但它不像我希望的那样工作。
背景:我有一系列 AD 组。在此组中,用户只能成为一个组的成员 - 例如:jodoe 可以是 AD-Group-Contoso-1 或 AD-Group-Contoso-2 的成员,但不能同时是这两个组的成员。我需要报告他们。报告文件将由计划任务处理,并将其报告给管理员。第一个脚本每 20 分钟运行一次,处理第一个脚本中的报告文件的报告计划任务每天运行一次 …
我目前正在研究 WSUS-Update 自动化,我想获取所有不以“(德语|英语)语言包”开头的更新。
这是我到目前为止得到的:
[regex]$reg = "(?<!German|English|English \(United States\)) Language Pack"
$LanguagePacks = $updates.Where({ $_.Title -match $reg })
Run Code Online (Sandbox Code Playgroud)
这有效,但我也得到了更新,例如:Windows Internet Explorer 9 Language Pack for Windows 7 for x64-based Systems
但我也想获得以下语法的更新:[Language] Language Pack eg Finnish Language Pack
所以我尝试使用 '^' 锚来确定字符串的开始
[regex]$reg = "^(?<!German|English|English \(United States\)) Language Pack"
$LanguagePacks = $updates.Where({ $_.Title -match $reg })
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,结果是空的:(
你有什么想法吗?
格雷茨·埃尔多