Я создал сценарий 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
)