Win Server 2012 PowerShell 4-Skript zum Kopieren, Umbenennen und Berühren einer Datei

877
Kenneth Berg

Ich habe ein PowerShell 4-Skript erstellt, um die Outlook 2013-Datei VbaProject.OTM zu sichern, indem ich sie aus dem Produktionsverzeichnis in ein Sicherungsverzeichnis kopiere und ein Dateinamensuffix mit dem aktuellen Datum und der aktuellen Uhrzeit hinzufüge. Die kopierte Version hat das Änderungsdatum und die Uhrzeit der ersten Speicherung des VbaProject.OTM. Ich habe den ganzen Morgen damit verbracht, Beiträge zu recherchieren, um herauszufinden, wie die Eigenschaft "Date Modified" der Sicherungsdatei auf das aktuelle Datum und die aktuelle Uhrzeit geändert werden kann, aber alles, was ich ausprobiert habe, endet mit Fehlermeldungen. Gibt es eine einfache Möglichkeit, dies zu erreichen?

# FD_VBA_Backup.ps1 $date = get-date -format "MMddyyyy HHmm" $fnft = "VbaProject - " + $date + ".OTM" $source = "C:\Users\OCCReportManager\AppData\Roaming\Microsoft\Outlook\VbaProject.OTM" $dest = "D:\FD Automation VBA Backups\" + $fnft copy-item $source $dest # results in eg. "VbaProject - 07202015 0936.OTM" 

Es wurde eine ähnliche Frage gestellt, wie eine leere Datei erstellt und die Datumseigenschaft festgelegt wird. Die Lösung zu meiner Frage gab es auch in einer Zeile, aber nicht leicht zu finden. Der Titel der anderen Frage macht nicht offensichtlich, dass die Lösung darin gefunden werden kann, da ich das Datum einer vorhandenen Datei ändern muss und keine neue Datei erstellen muss. Ref: Entspricht Linux "touch" zum Erstellen einer leeren Datei mit PowerShell? .

0
[Entspricht Linux \ `touch \`, um eine leere Datei mit PowerShell zu erstellen?] (Http://superuser.com/a/571154) DavidPostill vor 8 Jahren 0
Nicht ganz. Entspricht "Unix touch" zum Ändern der Eigenschaft "Datum geändert" der gerade kopierten Datei (die das Datum der Quelldatei enthält). Kenneth Berg vor 8 Jahren 0
Dann ist Ihre Frage unklar. Ich dachte, Sie wollten den datumsmodifizierten Zeitstempel der Sicherungsdatei auf das aktuelle Datum und die aktuelle Uhrzeit setzen **? Dies tut die verknüpfte Antwort - erstellt eine neue Datei, falls diese nicht vorhanden ist, oder aktualisiert ** den Zeitstempel, wenn sie existiert **. Wenn Sie etwas anderes meinen, klären Sie bitte Ihre Frage. DavidPostill vor 8 Jahren 0
Sorry, ich habe gerade den Titel des Links gelesen und darauf geantwortet, dass ich keine leere Datei erstelle. Ich werde den Code in dem verlinkten Beitrag versuchen. Kenneth Berg vor 8 Jahren 0
Kein Problem. Sie können einen Großteil des Skripts entfernen und nur das Bit verwenden, das Sie benötigen;) So etwas wie `(Get-ChildItem $ dest) .LastWriteTime = Get-Date`? DavidPostill vor 8 Jahren 0
@DavidPostill Ja, das hat perfekt funktioniert. `(Get-ChildItem $ -Datei) .LastWriteTime = Get-Date` Vielen Dank. Kenneth Berg vor 8 Jahren 0
Mögliches Duplikat von [Equivalent of Linux \ `touch \` zum Erstellen einer leeren Datei mit PowerShell?] (http://superuser.com/questions/502374/equivalent-of-linux-touch-to-create-an-empty- Datei-mit-Powershell) DavidPostill vor 8 Jahren 0

1 Antwort auf die Frage

0
Kenneth Berg

Mit Gutschrift an @DavidPostill:

# FD_VBA_Backup.ps1 $date = get-date -format "MMddyyyy HHmm" $fnft = "VbaProject - " + $date + ".OTM" $source = "C:\Users\OCCReportManager\AppData\Roaming\Microsoft\Outlook\VbaProject.OTM" $dest = "D:\FD Automation VBA Backups\" + $fnft copy-item $source $dest # results in eg. "VbaProject - 07202015 0936.OTM"  (Get-ChildItem $dest).LastWriteTime = Get-Date