Не удалось найти объект «пользователь» на «контроллере домена»

Я создал сценарий PowerShell для сбора сведений обо всех почтовых ящиках пользователей, таких как «PrimarySmtpAddress, Identity, displayname» в локальной среде Exchange. Я пытаюсь запустить эту команду из powershell:

$UserNameInSmtpFormat = Get-Mailbox -Identity $User -ErrorAction Stop | Select PrimarySmtpAddress, Identity, displayname

Эта команда работает нормально (powershell.exe "c:\pstest\readUsers.ps1" '[email protected]' 'Password' 'users.txt' 'http://Exchange/PowerShell/'), которая сохраняется как «testok.cmd».

В этой команде я получаю сообщение об ошибке: - (powershell.exe "c:\pstest\readUsers.ps1" '[email protected]' 'Password' 'users.txt' 'http://Exchange/PowerShell/') Это сохраняется как «testproblem.cmd»

Я получаю следующую ошибку

Ошибка:- когда я даю учетные данные администратора, все работает нормально, но когда я пытаюсь получить то же самое, используя обычные учетные данные пользователя, я получаю сообщение об ошибке ниже;

Операция не может быть выполнена, так как объект "[email protected]" не может быть найден на "dc.Domain.com"..Exception.Message

Ниже приведен сценарий

( #Constant Variables 
$Office365AdminUsername = $args[0]
$Office365AdminPassword = $args[1]
$UserNamesFile = $args[2]
$connectionUri = $args[3]   
#Main
Function Main {
#Remove all existing Powershell sessions
    Get-PSSession | Remove-PSSession
#Encrypt password for transmission to Office365
    $SecureOffice365Password = ConvertTo-SecureString -AsPlainText $Office365AdminPassword -Force
#Build credentials object
    $Office365Credentials  = New-Object System.Management.Automation.PSCredential $Office365AdminUsername, $SecureOffice365Password 
Write-Host  "Credentials object created"
#Create remote Powershell session
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $connectionUri -Credential $Office365credentials -Authentication Kerberos –AllowRedirection  
Write-Host  "Remote session established"
#Check for errors
if ($Session -eq $null){
    Write-Host  "Invalid creditials"
}else{
    Write-Host  "Login success"
    #Import the session
        Import-PSSession $Session
}
try {
    Write-Host  "SMTPADDRESS"

        Foreach($User in (get-content $UserNamesFile))
        { 
            Write-Host  "mailboxIdentity : $User"
            $UserNameInSmtpFormat =Get-Mailbox -Identity $User -ErrorAction Stop | Select PrimarySmtpAddress, Identity, displayname     

            $UserNameInSmtpFormat        
    }
    Write-Host  "ENDSMTPADDRESS"
} 
catch {
   write-host "EXCEPTION"
   write-host "`r`n $_.Exception.Message"
                                }
finally {
    Exit-PSSession
    Remove-PSSession $Session
                                }
}
# Start script
. Main  
)

person Faisal Kazi    schedule 06.03.2020    source источник
comment
При любой возможности вы можете опубликовать больше сценария. Основываясь на том, что у вас есть выше; вы подключаетесь удаленно? Или у вас есть инструменты управления Exchange локально. Если вы подключаетесь удаленно, я предполагаю, что у пользователей нет соответствующих назначений и/или областей действия RBAC. Также; чего вы конкретно пытаетесь добиться? Для чего вам нужна информация и т. д. Это поможет нам предоставить альтернативные решения и т. д.   -  person Steven    schedule 06.03.2020


Ответы (1)


Решение было «Права разрешения роли», и оно решается путем предоставления того же самого пользователю, от которого я пытался получить данные почтового ящика. Я назначил пользователю роль «Получатель почты» на вкладке «Разрешения» в ECP.

Спасибо.

person Faisal Kazi    schedule 11.03.2020