Configuração do RelayIPList usando CimObject quebras do servidor SMTP do Windows

3

Estou tentando configurar o servidor SMTP do Windows Server 2012 usando o PowerShell.

Eu usei o CimObject IISSmtpServerSettings.

Eu recebo o objeto, aplico minha alteração (permito que o host local retransmita a lista de remetentes) e o script sai sem erro.

No entanto, agora não consigo iniciar o servidor SMTP.

Após uma inspeção cuidadosa do objeto Cim antes e depois da minha alteração, verifica-se que minha configuração SecureBindings também está sendo alterada.

A partir disso: SecureBindings: {SecureBinding (IP="", Porta)}

Para isso: SecureBindings: {SecureBinding (IP="", Port="")}

Eu tentei definir minha configuração de SecureBindings, mas recebo um erro "O adaptador não pode definir o valor da propriedade" SecureBindings "

Então, minha pergunta é: como eu posso

  1. Impede que meu script afete o SecureBindings em primeiro lugar
  2. Defina SecureBindings como um valor que não faça com que o servidor SMTP falhe na inicialização

Meu script é assim:

$ErrorActionPreference = "Stop"
$error.Clear()

# Get Cim object
$smtpInstance = Get-CimInstance -Namespace root/MicrosoftIISv2 -ClassName IIsSmtpServerSetting -Filter "Name = 'SmtpSvc/1'"

# Set relay IP of 127.0.0.1
$relayIPs = @( 24, 0, 0, 128, 32, 0, 0, 128, 60, 0, 0, 128, 68, 0, 0, 128, 1, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 127, 0, 0, 1 )

# Set relay IP list
$smtpInstance.RelayIpList = $relayIPs

# Save changes
Set-CimInstance -CimInstance $smtpInstance -PassThru
    
por wimnat 29.10.2015 / 07:08

2 respostas

0

Eu não consegui resolver o problema original com o CimInstance adicionando o valor "".

No entanto, consegui que isso funcionasse, alternando para um WmiObject:

# Get Wmi object
$smtpInstance = Get-WmiObject -Namespace root\MicrosoftIISv2 -ComputerName localhost -Query "Select * From IisSmtpServerSetting"

# Set relay IP of 127.0.0.1
$relayIPs = @( 24, 0, 0, 128, 32, 0, 0, 128, 60, 0, 0, 128, 68, 0, 0, 128, 1, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 127, 0, 0, 1 )

# Set relay IP list
$smtpInstance.RelayIpList = $relayIPs

# Save changes
$smtpInstance.Put() | Out-Null
    
por 27.01.2016 / 23:55
0

A mudança que você está vendo é trivial. O valor está sendo alterado de nulo para uma cadeia vazia. Isso não é incomum para drivers, firmware ou interfaces (wmi, cim, applets personalizados) para fazer pequenas alterações nos dados dessa maneira.

Embora eu não possa apontar para uma linha específica de código em sua circunstância, posso lhe dizer a maneira mais provável de que isso esteja ocorrendo. Não é inédito para um desenvolvedor definir seu código para que as variáveis nulas não sejam permitidas. Para fazer qualquer tipo de trabalho com o objeto, ele deve ser serializado e instanciado. Quando esse é o caso, a propriedade recebe seus valores e um nulo é transformado em um vazio. Acredite ou não, nulo e vazio são totalmente diferentes de uma posição programática.

Não deve haver nenhum perigo ou conseqüências adversas disto. A falha que você vê é provavelmente atribuída a algo ainda não descoberto. Talvez as mensagens de erro ou logs possam ajudar? Certamente, poste-os se você os tiver.

    
por 06.11.2015 / 21:50