/ / Substituindo texto em um objeto do PowerShell - powershell

Substituindo texto em um objeto do PowerShell - powershell

Estou restrito em um projeto e tenho que usar o PowerShell para gerar e enviar emails do Outlook.

param([string]$address, [string]$subject);
$Outlook = New-Object -ComObject Outlook.Application;
$Mail = $Outlook.CreateItemFromTemplate("D:Usersmarktest.oft");
$Mail.To = "$address";
$Mail.Subject = "$subject";
$Mail.Send();

Eu estou usando um arquivo de modelo, como eu tenho que incluir uma imagem incorporada do logotipo da empresa.

No entanto, meu problema é que preciso alterar parte do corpo do email, mas manter os gráficos e a formatação incorporados.

Existe uma maneira no PowerShell de passar em um (por exemplo) parâmetro de ID de referência - e substituindo no corpo do arquivo OFT, # Ref # com "ID de referência" por exemplo:

param([string]$address, [string]$subject, [string]$RefID);
$Outlook = New-Object -ComObject Outlook.Application;
$Mail = $Outlook.CreateItemFromTemplate("D:Usersmarktest.oft");
****
$Mail.Body = $Mail.Body.Replace("#RefID#", $RefID)
****
$Mail.To = "$address";
$Mail.Subject = "$subject";
$Mail.Send();

o .Replace acima parece remover a formatação e substitui o logotipo por "CID: ...."

Como deveria ser:

O que parece depois de usar Substituir:

Como fica depois de usar o Replace

Obrigado por qualquer ajuda,

Marca

Respostas:

3 para resposta № 1

Eu não tenho certeza se entendi o que você está tentando fazer. Você quer substituir uma string literal #RefID# no corpo do email com o valor de uma variável $RefID? Se assim for, isso pode ser feito, mas você precisa fazê-lo no lugar certo (o corpo do email):

$Mail.Body = $Mail.Body.Replace("#RefID#", $RefID)

Em caso de e-mail em HTML, talvez seja necessário modificar HTMLBody propriedade em vez do Body propriedade:

$Mail.HTMLBody = $Mail.HTMLBody.Replace("#RefID#", $RefID)

1 para resposta № 2

Algumas opções para você experimentar. Ambos devem trabalhar para substituir o texto em um arquivo.

1)

$file = "D:usersmarktest.oft"
(Get-Content $file).Replace("#RefID","$RefID") | Set-Content $file

2)

   (Get-Content $file) |
Foreach-Object {$_ -replace "#RefID","$RefID"}  |
Out-File $file