我是在PowerShell中編寫新東西,但這是我試圖完成的。只允許表達式作爲流水線的第一個元素
- 我想比較兩個excel文件的日期,以確定是否比另一個更新。
- 我想在沒有excel的計算機上將文件從csv轉換爲xls。只有上述聲明爲真,最初的xls文件已被複制。
- 我想將新轉換後的xls文件複製到另一個位置
- 如果文件已經打開,它將無法複製,因此我想發送有關此操作成功或失敗的電子郵件警報。
這是我遇到問題的腳本。錯誤是「表達式只被允許作爲管道的第一個元素。」我知道這是關於電子郵件的操作,但我不知道如何用所有這些變量手動寫出來。可能有更多的錯誤,但我現在沒有看到它們。感謝您的幫助,我很感激!當您使用上了管道的接收端的表現時,它不能從管道接收對象
$CSV = "C:filename.csv"
$LocalXLS = "C:\filename.xls"
$RemoteXLS = "D:\filename.xls"
$LocalDate = (Get-Item $LocalXLS).LASTWRITETIME
$RemoteDate = (Get-Item $RemoteXLS).LASTWRITETIME
$convert = "D:\CSV Converter\csvcnv.exe"
if ($LocalDate -eq $RemoteDate) {break}
else {
& $convert $CSV $LocalXLS
$FromAddress = "[email protected]"
$ToAddress = "[email protected]"
$MessageSubject = "vague subject"
$SendingServer = "mail.mail.com"
$SMTPMessage = New-Object System.Net.Mail.MailMessage $FromAddress, $ToAddress, $MessageSubject, $MessageBody
$SMTPClient = New-Object System.Net.Mail.SMTPClient $SendingServer
$SendEmailSuccess = $MessageBody = "The copy completed successfully!" | New-Object System.Net.Mail.SMTPClient mail.mail.com $SMTPMessage
$RenamedXLS = {$_.BaseName+(Get-Date -f yyyy-MM-dd)+$_.Extension}
Rename-Item -path $RemoteXLS -newname $RenamedXLS -force -erroraction silentlycontinue
If (!$error)
{ $SendEmailSuccess | copy-item $LocalXLS -destination $RemoteXLS -force }
Else
{$MessageBody = "The copy failed, please make sure the file is closed." | $SMTPClient.Send($SMTPMessage)}
}
我不知道到底是什麼你正試圖完成這一行:$ SendEmailSuccess = $ MessageBody =「複製成功完成!」 |新對象System.Net.Mail.SMTPClient mail.mail.com $ SMTPMessage但我想這是錯誤的罪魁禍首。 – EBGreen
@meep - 不要編輯出內容。那麼根本沒有問題。即使你已經弄明白了,這對未來的訪問者也是有用的。附加您的修改。 – manojlds