Ausdrücke dürfen nur als erstes element einer pipeline

Ich bin neu beim schreiben in der powershell aber das ist, was ich versuche zu erreichen.

  1. Ich will vergleichen die Daten von zwei excel-Dateien, um zu ermitteln, ob eine neuere ist als die anderen.
  2. Ich möchte eine Datei konvertieren von csv zu xls auf einem computer, der nicht über excel. Nur wenn die Aussage oben stimmt, die erste xls-Datei kopiert wurde, schon.
  3. Ich wollen, kopieren Sie die neu konvertierte xls-Datei an einen anderen Speicherort
  4. Wenn die Datei bereits offen ist, wird es nicht zu kopieren, so dass ich möchten, senden Sie eine E-Mail-Benachrichtigung über Erfolg oder Mißerfolg dieser operation.

Hier ist das Skript, dass ich Probleme mit. Der Fehler ist "Ausdrücke darf nur als erstes element einer pipeline." Ich weiß, es ist zu tun mit der E-Mail-Betrieb, aber ich bin an einem Verlust, wie schreibt man dieses manuell mit alle diese Variablen enthalten. Es gibt wahrscheinlich mehr Fehler, aber ich bin nicht zu sehen Sie jetzt. Vielen Dank für jede Hilfe, ich Schätze es!

$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)}
}   
  • Ich bin mir nicht sicher, was genau Sie versuchen zu erreichen, auf diese Zeile: $SendEmailSuccess = $MessageBody = "kopieren erfolgreich beendet!" | New-Object System.Net.E-Mail.SMTPClient mail.mail.com $SMTPMessage Aber ich kann mir vorstellen, dass es der Täter den Fehler.
  • nicht Bearbeiten Sie den Inhalt. Es ist nicht Sinn, mit Ihrer Frage an alle dann. Dies wird nützlich sein, für zukünftige Besucher, auch wenn Sie es herausgefunden haben. Hängen Sie Ihre änderungen.
InformationsquelleAutor meep | 2011-08-22
Schreibe einen Kommentar