Отсутствует модуль Powershell DistributedTask.Task.Internal - PullRequest
0 голосов
/ 03 апреля 2019

поэтому я пытаюсь отправить простейшее электронное письмо с помощью powershell. Мне удалось найти довольно хорошие примеры, и я попытался реализовать один из них. Однако запуск powershell возвращает ошибку:

https://i.imgur.com/wfqk4Pf.png

Я обнаружил (https://stackoverflow.com/a/39407785/8607147), что ошибка может быть в строках импорта, но безрезультатно. Все та же ошибка.

Мой код:

param
(
    [String] [Parameter(Mandatory = $true)] $from,
    [String] [Parameter(Mandatory = $true)] $to,
    [String] [Parameter(Mandatory = $true)] $subject,
    [String] [Parameter(Mandatory = $false)] $body
)


 function sendMail{

    # Import the Task.Common and Task.Internal dll that has all the cmdlets we need for Build
    $agentWorkerModulesPath = "$($env:AGENT_HOMEDIRECTORY)\agent\worker\Modules"
    $agentDistributedTaskInternalModulePath = "$agentWorkerModulesPath\Microsoft.TeamFoundation.DistributedTask.Task.Internal\Microsoft.TeamFoundation.DistributedTask.Task.Internal.dll"
    $agentDistributedTaskCommonModulePath = "$agentWorkerModulesPath\Microsoft.TeamFoundation.DistributedTask.Task.Common\Microsoft.TeamFoundation.DistributedTask.Task.Common.dll"

    Write-Host "Importing VSTS Module $agentDistributedTaskInternalModulePath"
    Import-Module $agentDistributedTaskInternalModulePath
    Write-Host "Importing VSTS Module $agentDistributedTaskCommonModulePath"
    Import-Module $agentDistributedTaskCommonModulePath

     $smtpserver = Get-TaskVariable $distributedTaskContext "smtpserver"
     $port = Get-TaskVariable $distributedTaskContext "port"
     $username = Get-TaskVariable $distributedTaskContext "username"
     $password = Get-TaskVariable $distributedTaskContext "password"
     $enableSSL = Get-TaskVariable $distributedTaskContext "enableSSL"

     Write-Host (Get-LocalizedString -Key 'smtpserver: {0}...' -ArgumentList $smtpServer)
     Write-Host (Get-LocalizedString -Key 'port: {0}...' -ArgumentList $port)
     Write-Host (Get-LocalizedString -Key 'username: {0}...' -ArgumentList $username)
     Write-Host (Get-LocalizedString -Key 'password: {0}...' -ArgumentList $password)
     Write-Host (Get-LocalizedString -Key 'enableSSL: {0}...' -ArgumentList $enableSSL)

     #Creating a Mail object
     $msg = new-object Net.Mail.MailMessage

    #Creating SMTP server object
     $smtp = new-object Net.Mail.SmtpClient($smtpServer)
     $smtp.EnableSSL = $enableSSL

     #Email structure 
     $msg.From = $from
     $msg.ReplyTo = $from

    ForEach($toe in $to.Split(','))
    {
        $msg.To.Add($toe.Trim())

        Write-Host (Get-LocalizedString -Key 'To: {0}...' -ArgumentList $toe)
    } 

     $msg.subject = $subject
     $msg.body = $body 

     if (![string]::IsNullOrEmpty($username) -and ![string]::IsNullOrEmpty($password))
     {
        $smtp.Credentials = New-Object System.Net.NetworkCredential($username, $password);

         Write-Host  'Credentials used'
     }

     #Sending email 
     $smtp.Send($msg)
     Write-Host  'Email Sent!'

     if ($attFiles.Count -gt 0)
     {
        Write-Host 'Disposing Mail Attachments'

        ForEach($att in $attFiles)
        {
            $att.Dispose()
        } 
     } 

     $smtp.Dispose()
}

Try
{
    sendMail
}
Catch
{
    $ErrorMessage = $_.Exception.Message
    $FailedItem = $_.Exception.ItemName
    $reply = Read-Host "$ErrorMessage .Please type EXIT to exit"
    if ($reply -eq "EXIT") { exit; }
    Break
}

Должен ли я установить какой-то модуль? Может быть, в коде есть ошибка? Я довольно новичок в PowerShell, поэтому любая помощь приветствуется.

...