Powershellスクリプトをコマンドラインから実行すると失敗しますが、行ごとにコピーしPowershellコンソールで実行するとうまく動作します。Powershellのps1ファイルは失敗しますがコードは正常です
powershell -ExecutionPolicy Bypass -File "F:\email.ps1" -FFFeatureOff
利回り:Fで
:\ email.ps1:16文字:126 + ... ential( "ユーザ名"、 "パスワード"); + ~~~文字列はターミネータが欠落しています。」Fで
:\ email.ps1:9文字:1 +文ブロックまたは型定義で{ +〜欠落閉じる '}'
。
その本当に奇妙な、私はPowerShellのウィンドウを開き、中にスクリプトを貼り付け、それは動作しますが、PS1ファイルを実行している場合、私はエラーを取得し、でもエディタで、私は同じ問題
全スクリプトを取得:
を$EmailTo = "xxxxx"
$EmailFrom = "xxxxxx"
$Subject = "LicenceKey & Instructions"
$Body = "This is an automated email"
$SMTPServer = "smtp.gmail.com"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$files=Get-ChildItem "C:\Users\alber\Desktop\LicenceKey\newuser"
Foreach($file in $files)
{
Write-Host “Attaching File :- ” $file
$attachment = New-Object System.Net.Mail.Attachment –ArgumentList "C:\Users\alber\Desktop\LicenceKey\newuser\$file"
$SMTPMessage.Attachments.Add($attachment)
}
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password");
$SMTPClient.Send($SMTPMessage)
'の取り付けFile'に沿ってあなたが異なる持っているように見えるので、これは、[この](https://stackoverflow.com/questions/20706869/powershell-is-missing-the-terminator)の重複であるかもしれません引用符。他の可能性は、たとえばパスワードに二重引用符が含まれていることです。それらは ' – JustMe
を使ってエスケープする必要があります。他のほとんどの言語とは異なり、Powershellはスマート引用符で' '' 'できます。個人的に私はそれらを使用しませんが、それはPSの前の日からの習慣です。 –
あなたが投稿したスクリプトはあなたの症状を説明していません。脇に:コマンドレットを呼び出すときにメソッドの構文を避ける方が良い。例えば、New-Object System.Net.NetworkCredential( "username"、 "password")の代わりに 'New-Object System.Net.NetworkCredential -ArgumentList" username "、" password "'を呼び出す。 – mklement0