gpt4 book ai didi

list - 使用列表作为变量的 Powershell 命令

转载 作者:行者123 更新时间:2023-12-03 01:01:08 25 4
gpt4 key购买 nike

我正在尝试编写一个脚本来查看用户以及他们所属的 AD 组,寻找具有多个“子组”的特定组。例如 VPN-GRP-ONE、VPN-GRP-2、VPN-GRP-3...

尝试使用我在一些演示中找到的一些东西,但它无法正常工作,因为它希望导入 ActiveDirectory 模块以使用 get-aduser,并且不允许我们安装我们尚未拥有的新模块。 (我的可用模块中没有 ActiveDirectory)

我试图使用:

$list1 = C:\Users\MrAoxx\Documents\List1.txt
foreach ($_ in $list1) {
net user $_ /domain}

我希望得到输出,然后我可以采取下一步将其传输到一个新的文本文件,并开始从中剥离我需要的内容以获得我正在寻找的 AD 组名称,即:一,二,三。但它所做的只是打开 txt 文件,没有其他任何事情。

最佳答案

这并不有趣,但你可以 - 请注意,足够长的组名称绝对有可能会被截断:

Get-Content C:\Users\MrAoxx\Documents\List1.txt | Foreach-Object {
$partOfGroups = ( ( net user $_ /domain | select-string '\*' | out-string ).Trim() -split "`r`n" ) |
Foreach-Object { $_.Substring(29).Trim() -split '\*' } |
Where-Object { -Not [String]::IsNullOrWhiteSpace($_) }

# You can look for specific groups in $partOfGroups if that user is part
# of any particular group, and process for that user here.
}

我将引导您了解其工作原理:

  1. 获取从文件中读取的当前用户的net user输出
  2. 选择包含 * 的所有行并将输出转换为字符串,并修剪前导和尾随空格。
  3. 将输出重新拆分回每行的数组中,以便于处理。
  4. 对于输出的每一行,删除前 29 个字符,并用 * 字符分割其余文本。
  5. 从最终数组输出中删除所有空字符串

这种花哨的解析是您应该选择安装 RSAT 工具的原因。以下是使用 Get-ADUser 执行此操作的方法:

Get-Content C:\Users\MrAoxx\Documents\List1.txt | Foreach-Object {
$groups = ( ( Get-ADUser $_ -Property MemberOf ).MemberOf | Get-AdGroup ).Name

# Process here
}

关于list - 使用列表作为变量的 Powershell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56082231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com