in Send-MailMessage
, -to
не должны принимать объекты конвейера
В принципе это так, а именно, если объекты конвейера имеют свойство .To
(что не так)для вас).
Однако, с вашим текущим подходом, вам вообще не нужен конвейерный ввод, учитывая, что вы вводите весь ввод как аргументы .
Кроме того, ваш конвейерный ввод неверен, потому что $_.UID
отправляет $null
через конвейер, учитывая, что $_
- объект групповой информации, выводимый Group-Object
- не имеет свойства .UID
.
Используя блоки сценариев с задержкой привязки ({ ... }
), вы можете упростить вашу команду следующим образом, устраняя необходимость вызова ForEach-Object
:
Import-csv C:\path\info.csv | Group-Object UID |
Send-MailMessage -From "<Me@email.com>" -To { "<$($_.Name)@Email.com>" } `
-Attachments { "C:\path\$($_.Name).csv" } `
-Subject "Testing" -Body "Please Ignore This" -Priority High `
-SmtpServer smtp.server.com
Корочеблоки скриптов, переданные в -To
и Attachments
, оцениваются для каждого входного объекта, и их вывод определяет значение параметра в каждой итерации.В блоке сценария $_
представляет объект конвейера, как обычно.
Обратите внимание, что такие блоки сценария с задержкой могут использоваться только с параметрами, которые предназначены для приема ввода конвейера (независимо от того, является ли это значением (целым объектом) или значением определенного свойства).