В Powershell отсутствует терминатор: "и отсутствует закрывающий '}" в блоке оператора или определении типа - PullRequest
0 голосов
/ 09 марта 2020

Я новичок в powershell и у меня проблема. Я пытаюсь создать скрипт, который очищает все мои каталоги старше 30 дней, но когда я его запускаю, он ломается. Кто-нибудь знает, какая у меня проблема?

$fromNDays = $args[0]
$cutOffDate = (Get-Date).AddDays(-$fromNDays) 
$directoriesToDelete =  Get-ChildItem -Path $path -Attributes Directory -Filter r* | Where-Object LastWriteTime -le $cutOffDate
echo "deleting from $cutOffDate"
cd $(Agent.ReleaseDirectory)
cd ..\..
pwd
Foreach($directoryToDelete in $directoriesToDelete)
{
    if($directoryToDelete.Name -ne "ReleaseRootMapping")
    {
        try
        {
            echo "Deleting directory $directoryToDelete"
            Remove-Item –path $directoryToDelete.FullName -Force -Recurse
        }
        catch
        {
            echo "Failed deleting $directoryToDelete.FullName"
        }
    }
}

Ошибка при запуске:

echo "Не удалось удалить $ directoryToDelete.FullName" + ~

2020-03-09T09: 55: 23.3827859Z ## [ошибка] В строке отсутствует терминатор: ".

deleteReleaseDirectoryFrom30.ps1: 12 char: 5

2020-03-09T09: 55: 23.3832466Z ## [ошибка ] + {2020-03-09T09: 55: 23.3836221Z ## [ошибка] Отсутствует закрывающий '}' в блоке оператора или определении типа.

Эта ошибка появляется в строках 12, 23, 8 и 10

1 Ответ

0 голосов
/ 09 марта 2020

В вашем коде скрипт не знает, что $directoryToDelete.FullName является переменной. Итак, сначала поместите их в скобки:

try{
    echo "Deleting directory ${directoryToDelete}"
    Remove-Item –path ${directoryToDelete.FullName} -Force -Recurse
}
catch
{
    echo "Failed deleting ${directoryToDelete.FullName}"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...