PowerShell:删除部分显示名称
PowerShell: Remove a portion of displayname
我需要在 Azure AD 中删除部分来宾用户的显示名称。
显示名称:公司 - 名字姓氏(公司 - 需要删除)
来宾帐户没有填写 'Firstname' 和 'Lastname' 属性。我有一个脚本 运行 可以向显示名称添加内容:
#Guest CompanyNames
$Companies = @('Company1','Company2')
#Get guest users with UPN like: company.extension#EXT#@domain.onmicrosoft.com
Foreach ($Company in $Companies){
$Users = Get-AzureADUser -All $true | Where-Object {($_.UserPrincipalName -like "*$Company.*") -and ($_.DisplayName -notlike "*($Company)")}
foreach ($User in $Users){
$DisplayName = $User.DisplayName + " " + "($Company)"
Set-AzureADUser -ObjectId $User.ObjectId -Displayname $DisplayName
}
}
我找不到任何东西来调整这种脚本以从显示名称中删除 'Company -'。希望有人能帮帮我,谢谢!
要执行与您发布的代码相反的操作,即删除以显示名称开头的公司名称,您可以使用:
$Companies = 'Company1','Company2'
# join the company names with regex 'OR' ('|')
$regexCompanies = '^({0})\s*-\s*' -f (($Companies | ForEach-Object { [regex]::Escape($_) }) -join '|')
# find users that have a DisplayName starting with one of the company names
$Users = Get-AzureADUser -All $true | Where-Object {$_.DisplayName -match $regexCompanies}
foreach ($User in $Users) {
# split the displayname in two parts, take the last part and trim it
$DisplayName = ($User.DisplayName -split '\s*-\s*', 2)[-1].Trim()
Set-AzureADUser -ObjectId $User.ObjectId -Displayname $DisplayName
}
顺便说一句。在你的 foreach ($User in $Users)
循环中,你应该使用 $User
,而不是 $Users
..
我需要在 Azure AD 中删除部分来宾用户的显示名称。
显示名称:公司 - 名字姓氏(公司 - 需要删除)
来宾帐户没有填写 'Firstname' 和 'Lastname' 属性。我有一个脚本 运行 可以向显示名称添加内容:
#Guest CompanyNames
$Companies = @('Company1','Company2')
#Get guest users with UPN like: company.extension#EXT#@domain.onmicrosoft.com
Foreach ($Company in $Companies){
$Users = Get-AzureADUser -All $true | Where-Object {($_.UserPrincipalName -like "*$Company.*") -and ($_.DisplayName -notlike "*($Company)")}
foreach ($User in $Users){
$DisplayName = $User.DisplayName + " " + "($Company)"
Set-AzureADUser -ObjectId $User.ObjectId -Displayname $DisplayName
}
}
我找不到任何东西来调整这种脚本以从显示名称中删除 'Company -'。希望有人能帮帮我,谢谢!
要执行与您发布的代码相反的操作,即删除以显示名称开头的公司名称,您可以使用:
$Companies = 'Company1','Company2'
# join the company names with regex 'OR' ('|')
$regexCompanies = '^({0})\s*-\s*' -f (($Companies | ForEach-Object { [regex]::Escape($_) }) -join '|')
# find users that have a DisplayName starting with one of the company names
$Users = Get-AzureADUser -All $true | Where-Object {$_.DisplayName -match $regexCompanies}
foreach ($User in $Users) {
# split the displayname in two parts, take the last part and trim it
$DisplayName = ($User.DisplayName -split '\s*-\s*', 2)[-1].Trim()
Set-AzureADUser -ObjectId $User.ObjectId -Displayname $DisplayName
}
顺便说一句。在你的 foreach ($User in $Users)
循环中,你应该使用 $User
,而不是 $Users
..