【发布时间】:2019-10-05 02:59:18
【问题描述】:
我有一个脚本可以运行并告诉我用户是否属于特定的 AD 组,该组将识别他正在使用的 VPN。当脚本遇到不属于域的用户时,它会中断并且不再继续,我想寻求帮助,以添加一个将在输出文件中打印出该用户不在系统中的片段,并且继续检查其余部分。
此外,当我只为我知道在系统中的用户运行它时,它会将他们的名字多次放入他们不属于的 AD 组中。
Get-Content D:\Scripts\VPNGroup\List1.txt | Foreach-Object {
$name = ( ( net user $_ /domain | select-string 'full name' | out-string ).Trim() -split "`r`n" ) |
Foreach-Object { $_.Substring(29).Trim() -split 'full name' } |
Where-Object { -Not [String]::IsNullOrWhiteSpace($_) }
$group = ( ( net user $_ /domain | select-string '\*' | out-string ).Trim() -split "`r`n" ) |
Foreach-Object { $_.Substring(29).Trim() -split '\*' } |
Where-Object { -Not [String]::IsNullOrWhiteSpace($_) }
$group >> D:\Scripts\VPNGroup\FullList.txt
$ADgroups = Get-Content D:\Scripts\VPNGroup\FullList.txt
$VPNgroups = foreach($line in $ADgroups) {
if ($line -like "VPN-GRP*") {$name + $line >> D:\Scripts\VPNGroup\ADGroups.txt}
}
}
这是当用户不在系统中时我得到的输出:
net : The user name could not be found.
At line:2 char:17
+ $name = ( ( net user $_ /domain | select-string 'full name' | out-string ).T ...
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (The user name could not be found.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
More help is available by typing NET HELPMSG 2221.
Exception calling "Substring" with "1" argument(s): "startIndex cannot be larger than length of string.
Parameter name: startIndex"
At line:3 char:24
+ Foreach-Object { $_.Substring(29).Trim() -split 'full name' } |
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ArgumentOutOfRangeException
当它们在系统中时,我会用错误的信息 IE 获取它们:
迈克尔·史密斯 VPN-GRP-1
迈克尔·史密斯 VPN-GRP-1
迈克尔·史密斯 VPN-GRP-1
迈克尔·史密斯 VPN-GRP-1
迈克尔·史密斯 VPN-GRP-1
迈克尔·史密斯 VPN-GRP-2
迈克尔·史密斯 VPN-GRP-2
迈克尔·史密斯 VPN-GRP-2
迈克尔·史密斯 VPN-GRP-2
迈克尔·史密斯 VPN-GRP-2
迈克尔·史密斯 VPN-GRP-3
迈克尔·史密斯 VPN-GRP-3
迈克尔·史密斯 VPN-GRP-3
贾斯汀·琼斯 VPN-GRP-1
贾斯汀·琼斯 VPN-GRP-1
贾斯汀·琼斯 VPN-GRP-1
贾斯汀·琼斯 VPN-GRP-1
贾斯汀·琼斯 VPN-GRP-2
贾斯汀·琼斯 VPN-GRP-2
贾斯汀·琼斯 VPN-GRP-3
贾斯汀·琼斯 VPN-GRP-3
贾斯汀·琼斯 VPN-GRP-3
贾斯汀·琼斯 VPN-GRP-3
贾斯汀·琼斯 VPN-GRP-4
......继续为超过 1k 用户提供服务
每个用户只是其中一个 AD 组的成员。
【问题讨论】:
-
您为什么不只使用 AD cmdlet?获取组的成员,然后根据它执行查找不是更简单吗?
-
我正在使用的系统是 DMZed 并且没有 Active Directory 模块:/
标签: powershell scripting active-directory