Set-Msoluser:访问被拒绝。您没有调用此 cmdlet 的权限
Set-Msoluser : Access Denied. You do not have permissions to call this cmdlet
更新
我已成功连接到 Office 365 管理服务和 Exchange 在线服务。我已经测试了 Get-MsolUser 等 cmdlet,它们工作正常。但是,当我尝试使用 运行 命令 Set-MsolUser 更改标题时,出现如下所示的拒绝访问错误。这很奇怪,因为我可以手动进入 Exchange 并更改我想要的任何 属性 但它不会让我 运行 这个命令?有什么解决办法吗?
更新 Office 365 用户属性的脚本
## Variables
$systemmessagecolor = "cyan"
$processmessagecolor = "green"
$savedcreds=$false ## false = manually enter creds, True = from file
$credpath = "c:\downloads\tenant.xml" ## local file with credentials if required
## If you have running scripts that don't have a certificate, run this command once to disable that level of security
## set-executionpolicy -executionpolicy bypass -scope currentuser -force
Clear-Host
write-host -foregroundcolor $systemmessagecolor "Script started`n"
#install-module msonline
Import-Module -Name "C:\Temp\MsOnline" -Verbose
write-host -foregroundcolor green "MSOnline module loaded"
## Get tenant login credentials
$cred = Get-Credential
## Connect to Office 365 admin service
connect-msolservice -credential $cred
write-host -foregroundcolor $systemmessagecolor "Now connected to Office 365 Admin service"
## Start Exchange Online session
$EXOSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell -Credential $cred -Authentication Basic -AllowRedirection
import-PSSession $EXOSession -AllowClobber
write-host -foregroundcolor $processmessagecolor "Now connected to Exchange Online services`n"
write-host -foregroundcolor $systemmessagecolor "Script Completed`n"
# Load data from file.csv
$EXUsers = Import-csv file_path.csv
# Count variable for number of users update
$count = 0
# Go through each row that has user data in the CSV we just imported
ForEach($User in $EXUsers)
{
# Ppopulate hash table for Get-Msoluser splatting:
$GetParams =
@{
UserPrincipalName = $User.userPrincipalName
}
# Initialize hash table for Set-Msoluser splatting:
$SetParams =
@{
UserPrincipalName = $User.userPrincipalName
Title = $User.title
}
# Get user and update.
if ( Get-Msoluser @GetParams)
{
# Set User attributes
Set-MsolUser @SetParams
# Print that the user was updated
Write-Host -ForegroundColor Yellow "$User - User attributes have been updated."
# Update Count
$count += 1
}
}
# Print the number of updated users
Write-Host $count "Users have been updated" -ForegroundColor Green
错误信息:
Set-Msoluser : Access Denied. You do not have permissions to call this cmdlet.
At line:1 char:59
+ ... ncipalName "name@company.com" | Set-Msoluser -Title "Test Title"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [Set-MsolUser], MicrosoftOnlineException
+ FullyQualifiedErrorId : Microsoft.Online.Administration.Automation.AccessDeniedException,Microsoft.Online.Administration.Automation.SetUser
已解决
访问被拒绝问题已通过 运行 Exchange 管理 Shell
中的脚本解决
还进行了这些更改以使脚本正常工作:
- 原则用户名 -> 身份
- 获取 MsolUser -> 获取邮箱
- 设置 MsolUser -> 设置用户
## Variables
$systemmessagecolor = "cyan"
$processmessagecolor = "green"
# Load data from file.csv
$EXUsers = Import-csv file_path.csv
# Count variable for number of users update
$count = 0
# Go through each row that has user data in the CSV we just imported
ForEach($User in $EXUsers)
{
# Ppopulate hash table for Get-Msoluser splatting:
$GetParams =
@{
Identity = $User.Identity
}
# Initialize hash table for Set-Msoluser splatting:
$SetParams =
@{
Identity = $User.Identity
Title = $User.Title
}
# Get user and update.
if ( Get-Mailbox @GetParams)
{
# Set User attributes
Set-User @SetParams
# Print that the user was updated
Write-Host -ForegroundColor Yellow "$User - User attributes have been updated."
# Update Count
$count += 1
}
}
# Print the number of updated users
Write-Host $count "Users have been updated" -ForegroundColor Green
更新
我已成功连接到 Office 365 管理服务和 Exchange 在线服务。我已经测试了 Get-MsolUser 等 cmdlet,它们工作正常。但是,当我尝试使用 运行 命令 Set-MsolUser 更改标题时,出现如下所示的拒绝访问错误。这很奇怪,因为我可以手动进入 Exchange 并更改我想要的任何 属性 但它不会让我 运行 这个命令?有什么解决办法吗?
更新 Office 365 用户属性的脚本
## Variables
$systemmessagecolor = "cyan"
$processmessagecolor = "green"
$savedcreds=$false ## false = manually enter creds, True = from file
$credpath = "c:\downloads\tenant.xml" ## local file with credentials if required
## If you have running scripts that don't have a certificate, run this command once to disable that level of security
## set-executionpolicy -executionpolicy bypass -scope currentuser -force
Clear-Host
write-host -foregroundcolor $systemmessagecolor "Script started`n"
#install-module msonline
Import-Module -Name "C:\Temp\MsOnline" -Verbose
write-host -foregroundcolor green "MSOnline module loaded"
## Get tenant login credentials
$cred = Get-Credential
## Connect to Office 365 admin service
connect-msolservice -credential $cred
write-host -foregroundcolor $systemmessagecolor "Now connected to Office 365 Admin service"
## Start Exchange Online session
$EXOSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell -Credential $cred -Authentication Basic -AllowRedirection
import-PSSession $EXOSession -AllowClobber
write-host -foregroundcolor $processmessagecolor "Now connected to Exchange Online services`n"
write-host -foregroundcolor $systemmessagecolor "Script Completed`n"
# Load data from file.csv
$EXUsers = Import-csv file_path.csv
# Count variable for number of users update
$count = 0
# Go through each row that has user data in the CSV we just imported
ForEach($User in $EXUsers)
{
# Ppopulate hash table for Get-Msoluser splatting:
$GetParams =
@{
UserPrincipalName = $User.userPrincipalName
}
# Initialize hash table for Set-Msoluser splatting:
$SetParams =
@{
UserPrincipalName = $User.userPrincipalName
Title = $User.title
}
# Get user and update.
if ( Get-Msoluser @GetParams)
{
# Set User attributes
Set-MsolUser @SetParams
# Print that the user was updated
Write-Host -ForegroundColor Yellow "$User - User attributes have been updated."
# Update Count
$count += 1
}
}
# Print the number of updated users
Write-Host $count "Users have been updated" -ForegroundColor Green
错误信息:
Set-Msoluser : Access Denied. You do not have permissions to call this cmdlet.
At line:1 char:59
+ ... ncipalName "name@company.com" | Set-Msoluser -Title "Test Title"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [Set-MsolUser], MicrosoftOnlineException
+ FullyQualifiedErrorId : Microsoft.Online.Administration.Automation.AccessDeniedException,Microsoft.Online.Administration.Automation.SetUser
已解决
访问被拒绝问题已通过 运行 Exchange 管理 Shell
中的脚本解决还进行了这些更改以使脚本正常工作:
- 原则用户名 -> 身份
- 获取 MsolUser -> 获取邮箱
- 设置 MsolUser -> 设置用户
## Variables
$systemmessagecolor = "cyan"
$processmessagecolor = "green"
# Load data from file.csv
$EXUsers = Import-csv file_path.csv
# Count variable for number of users update
$count = 0
# Go through each row that has user data in the CSV we just imported
ForEach($User in $EXUsers)
{
# Ppopulate hash table for Get-Msoluser splatting:
$GetParams =
@{
Identity = $User.Identity
}
# Initialize hash table for Set-Msoluser splatting:
$SetParams =
@{
Identity = $User.Identity
Title = $User.Title
}
# Get user and update.
if ( Get-Mailbox @GetParams)
{
# Set User attributes
Set-User @SetParams
# Print that the user was updated
Write-Host -ForegroundColor Yellow "$User - User attributes have been updated."
# Update Count
$count += 1
}
}
# Print the number of updated users
Write-Host $count "Users have been updated" -ForegroundColor Green