Vindo desta pergunta aqui: Como criar um script para Exchange Powershell para modificar as configurações de todas as caixas de correio compartilhadas?
Aqui está o meu script Powershell (role para a direita para ver todos):
$Mailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox
Foreach ($Mailbox in $Mailboxes) {
Set-Mailbox $Mailbox -MessageCopyForSentAsEnabled $True -MessageCopyForSendOnBehalfEnabled $True
}
Ele funciona bem sozinho se for iniciado a partir de uma janela do Shell de gerenciamento do Exchange.
Mas quero iniciá-lo a partir de um arquivo em lote, então encontrei a seguinte página da Microsoft: https://technet.microsoft.com/en-us/library/bb123798%28v=exchg.150%29.aspx?f=255&MSPPError =-2147217396#RunScript
Seguindo o guia de lá, criei esse arquivo batch (role para a direita para ver todos):
PowerShell.exe -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; 'C:\Program Files\Microsoft\Exchange Server\V15\bin\enablesentforshared.ps1'"
Uma coisa que adicionei que não foi especificada nas instruções são aspas simples em torno do caminho completo para o script que desejo executar. Sem as aspas simples, recebi um erro sobre C:\Program
não ser um cmdlet ou script reconhecido.
De qualquer forma, quando executo este arquivo em lote, a janela do terminal é aberta, muda para uma janela do Powershell e o nome do caminho para o script é impresso na tela, mas é impresso ANTES do [PS]
prompt e nada é realmente executado.
É assim que minha janela do Powershell fica depois de executar o arquivo em lote:
VERBOSE: Connecting to exchangeserver.domain.com
VERBOSE: Connected to exchangeserver.domain.com
C:\Program Files\Microsoft\Exchange Server\V15\bin\enablesentforshared.ps1
[PS] C:\Users\Admin.domain>
E não há nenhuma indicação de que o script realmente foi executado.
Então, o que eu tenho de errado aqui? Tentei mudar .
para a com &
base em algumas pesquisas que fiz no Google, mas isso me dá um erro sobre Connect-ExchangeServer
ser um comando não reconhecido, então acho que .
está mais próximo de estar correto.
Tente isto (dotsourcing adicionado do segundo script):
Script de arquivo bat, incluindo parâmetro de envio de email. Este arquivo bat funciona no meu servidor Windows 2016 e no Exchange Server 2016.
Eu faço isso em um arquivo BAT:
powershell -psconsolefile "C:\Arquivos de Programas\Microsoft\Exchange Server\V15\Bin\exshell.psc1" -noexit "& Get-Mailbox | Get-MailboxStatistics" pausa