전자 메일을 보내려는 PowerShell 스크립트가 있습니다. 문제는 스크립트를 호출하고 smtp 서버, 전자 메일 주소, 사용자 이름 및 암호를 포함한 일부 매개 변수를 전달할 수 있기를 원합니다. 문제는 powershell 스크립트가 명령 줄에서 암호를 가져 오는 것을 좋아하지 않는다는 것입니다. 암호를 하드 코드해야합니다. 이 주위에 어떤 방법이 있습니까? 한 가지 더 많은 정보는 때로는 작동한다는 것입니다. 문제는 내가이 스크립트에서 데이터베이스를 쳤을 때 암호가 오르는 것입니다. 하지만 데이터베이스에서 암호를 전혀 사용하지 않습니다. 누구든지 이것에 대해 어떤 생각을 밝힐 수 있습니까?명령 줄에서 암호를 사용하는 Powershell 스크립트
$smtpServer = $args[0]
$EmailTo = $args[1]
$UserName = $args[2]
$Password = $args[3]
$Subject = "Some Subject"
$EmailFrom = "[email protected]"
$Body = "Bunch of data here"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("MyUserName", "MyPassword")
#$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("MyUserName", "MyPassword") --this won't work
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
"좋아하지 않아"라는 말은 무엇을 의미합니까? 스크립트가 충돌합니까? 그렇다면 오류가 무엇입니까? 조용히 실패합니까? 다른 것? –
예, 오류가 있지만 암호를 하드 코드하면이 오류가 표시되지 않습니다. "4"인수가있는 "보내기"예외 : "사서함을 사용할 수 없습니다. 서버 응답 : 5.1.0 인증 필요" . \ SendEmail.ps1 : 50 char : 8 + $ SMTPClient.Send <<< [:), MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException - – BriceTRockindale
어떤 Powershell 버전을 사용하고 있습니까? V2 이상인 경우 Send-MailMessage cmdlet은 해당 기능을 바꿀 수 있어야합니다. 이렇게하면 인수를 전달하기위한 명명 된 매개 변수가 제공되며 이는 인수 목록보다 효과적 일 수 있습니다. – mjolinor