4

У меня есть команда powershell, которая работает нормально.

$(Get-Item c:\0\01.txt).lastwritetime=$(Get-Date "01/22/2002 11:11 am")

Я хотел бы использовать это несколько раз. Использование командного файла. До командного файла я использовал это:

Set-ExecutionPolicy Unrestricted

Пакет содержит команды, подобные этой:

powershell -Command "$(Get-Item c:\0\01.txt).lastwritetime=$(Get-Date "01/22/2003 11:11 am")"

Пакетный файл не удается, я получил два сообщения об ошибке на команду:

Get-Date : A positional parameter cannot be found that accepts argument '11:11'.
At line:1 char:49
+ $(Get-Item c:\0\01.txt).lastwritetime=$(Get-Date <<<<  01/22/2003 11:11 am)
    + CategoryInfo          : InvalidArgument: (:) [Get-Date], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetDateCommand

Exception setting "LastWriteTime": "Cannot convert null to type "System.DateTime"."
At line:1 char:25
+ $(Get-Item c:\0\01.txt). <<<< lastwritetime=$(Get-Date 01/22/2003 11:11 am)
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyAssignmentException

К сожалению, я не знаю, что не так. Кто-нибудь может мне помочь?

скриншот окна powershell

1 ответ1

1

Вам нужно либо избегать внутренних двойных кавычек с обратной косой чертой (потому что cmd будет видеть время даты без кавычек)

powershell -Command "(Get-Item .\01.txt).lastwritetime=(Get-Date \"01/22/2003 11:11 am\")"

или обменять внутренний двойник одинарными кавычками (как предложил ДэвидПостилл).

powershell -Command "(Get-Item .\01.txt).lastwritetime=(Get-Date '01/22/2003 11:11 am')"

Кроме того, $ необходимы только при форсировании выражения внутри строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .