PS скрипт не удаляет файл как запланированное задание - PullRequest
0 голосов
/ 03 мая 2020

Может кто-нибудь помочь мне понять, почему этот запланированный сценарий не работает должным образом: файл не удаляется в начале следующего дня. Работает при тестировании, но не в «живой» среде.

$Path = "H:\foobar.txt"

if ((Test-Path $Path) -eq $true) {Get-ChildItem $Path | 
Where-Object { $_.LastWriteTime -lt (get-date).AddDays(-1) } | 
Remove-Item ; New-Item -path $Path }

else {

New-Item -path $Path

}

(get-date).ToString("MMMM dd, yyyy h:mm:ss tt") | 
Add-Content $Path

EXIT 

фрагмент из вывода, показывающий перенос на следующий день:

27 апреля 2020 г. 21:31:18 28 апреля 2020 г. 7:16:37 28 апреля 2020 г. 17:31:45 29 апреля 2020 г. 7:16:37 29 апреля 2020 г., 23:17:02 30 апреля 2020 г. 6:02:06 30 апреля 2020 г. 18:17:02 01 мая 2020 г. 6:27:28 01 мая 2020 7:17:02

1 Ответ

0 голосов
/ 03 мая 2020

Видя, что переменная $Path содержит путь к одному файлу, вы можете сократить код следующим образом:

$Path = "H:\foobar.txt"

# try and get a FileInfo object from the file in the path
$file = Get-Item -Path $Path -ErrorAction SilentlyContinue
if ($file) {
    # the file was found, check if it is older than yesterday (midnight)
    if ($file.LastWriteTime -lt (Get-Date).AddDays(-1).Date) {
        $file | Remove-Item -Force
    }
}

# Add-Content will create the file if it does not yet exist
('{0:MMMM dd, yyyy h:mm:ss tt}' -f (Get-Date)) | Add-Content -Path $Path

Конечно, необходимо, чтобы пользователь, запускающий запланированное задание, имел доступ на запись в H:\ путь ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...