Использование подстановочных знаков в переменных Powershell - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть папка с еженедельными отчетами.Каждый отчет имеет дату создания в примере имени «report-A_2_05_19.pdf», «report-B_2_05_19.pdf» и т. Д. Я хотел бы создать переменные для них, но, поскольку дата меняется в названиях отчетов каждую неделюЯ пытался сделать это:

$rA = "c:\reports\report-A*.pdf"
$rb = "C:\reports\report-B*.pdf

Когда я делаю это и пытаюсь открыть отчет, используя подстановочные знаки, он просто выводит на экран:

c: \ reports\ report-A * .pdf

$pw = Get-Content C:\MailPW.txt | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential name@domain.com, $pw
Send-MailMessage -To name@domain.com -from name@domain.com -Subject "Attachments" -Body "Attachments." -attachments $rA, $rB -Smtpserver mail.domain.com -UseSsl -credential $cred

1 Ответ

0 голосов
/ 05 февраля 2019

Если вы посмотрите на документы для Send-MailMessage, вы увидите, что -Attachments поддерживает не поддерживает подстановочные знаки

Тип: String []

Псевдонимы: PsPath

Позиция: Именованная

Значение по умолчанию: Нет

Принимать входные данные конвейера: True (ByValue)

Принимать подстановочный знаксимволы: False

Вместо этого вы можете использовать Resolve-Path, который экстраполирует пути из строк с подстановочными знаками.

Send-MailMessage .... -attachments (Resolve-Path $rA, $rB).Path

Остерегайтесь, хотя это может соответствовать больше, чем вы предполагали.Возможно, вам придется проверить результаты, прежде чем прикреплять файлы.


Я бы также рекомендовал splatting , когда предоставляется большое количество параметров и значений.

$sendMailMessageParameters = @{
    To          = "name@domain.com"
    from        = "name@domain.com" 
    Subject     = "Attachments" 
    Body        = "Attachments." 
    attachments = (Resolve-Path $rA, $rB).Path
    Smtpserver  = "mail.domain.com "
    UseSsl      = $true
    credential  = $cred
}

Send-MailMessage @sendMailMessageParameters
...