powershell - Powershell 将 $source memberof 复制到目的地,而不复制 $destination 的现有成员资格和附加过滤器
问题描述
我正在尝试复制用户的组成员身份,但有一些例外。我想将源的组复制到目标,除非目标用户已经是成员。有一些组我不想在这方面复制。
$copyfrom = Read-Host "Enter Username of User Origin"
$copyto = Read-Host "Enter Username of User Destination"
$badstring = 'bad'
Get-ADUser $copyfrom -Properties MemberOf | Select-Object -ExpandProperty MemberOf | Where-Object { -not $_.Substring(3).StartsWith($badstring)} | Add-ADGroupMember -Members $copyto
我错过了脚本跳过用户已经是其成员的组的部分。
帮助。
解决方案
像下面这样的事情应该做ti:
$copyfrom = Read-Host "Enter Username of User Origin"
$copyto = Read-Host "Enter Username of User Destination"
$badstring = 'bad'
# get the ADUser object for the source user
$srcUser = Get-ADUser -Filter "SamAccountName -eq '$copyfrom'" -Properties MemberOf -ErrorAction SilentlyContinue
if (!$srcUser) {
Write-Warning "User $copyfrom not found"
exit
}
# get the ADUser object for the destination user
$destUser = Get-ADUser -Filter "SamAccountName -eq '$copyto'" -ErrorAction SilentlyContinue
if (!$destUser) {
Write-Warning "User $copyto not found"
exit
}
$srcUser | Select-Object -ExpandProperty MemberOf |
Where-Object { -not $_.Substring(3).StartsWith($badstring)} |
# loop through the groups and add the user if not already a member
ForEach-Object {
$members = Get-ADGroupMember -Identity $_ | Select-Object -ExpandProperty SamAccountName
if ($members -notcontains $destUser.SamAccountName) {
$_ | Add-ADGroupMember -Members $destUser.DistinguishedName
}
}
推荐阅读
- c++ - 从字符串中删除空格不生效
- xcode - Xcode 不会打开任何项目
- wordpress - 我的 wordpress 网站中的社交媒体链接的字体真棒不起作用(出现空白方框)
- state - '在视图更新期间修改状态,这将导致未定义的行为。' 在文本字段上键入时出错 (SwiftUI)
- javascript - 如何访问处理不同输入的数据属性?
- javascript - 如何通过名称获取动画
- html - 如何使用 BeautifulSoup 提取网页“关于我们”下的文本
- import - Vue2 - 导入类、访问和实例化
- reactjs - 如何将动态创建的选项标记为选项列表中使用的选项
- spring-boot - Mvn 包装“JAR”不适用于 spring-boot-starter-batch