9

Я уверен, что об этом спрашивали миллион раз, но я не могу понять, почему я не могу запустить эту простую команду в powershell:

PS> new-item -path c:\users\me\desktop\testfolder -name (get-date).txt -value (get-date).toString() -itemtype file

Я навсегда получаю следующую ошибку:

New-Item : Access to the path 'C:\Users\Me\desktop\testfolder' is denied.

... PermissionDenied: ... UnauthorizedAccessException
... FullyQualifiedErrorId: NewItemUnauthorizedAccessError,Microsoft.PowerShell...

Тем не мение,

Я пробовал ВСЕ из следующего, но безрезультатно:

  • Запуск powershell от имени администратора (т. Е. "Запуск от имени администратора")
  • Set-ExecutionPolicy RemoteSigned
  • "забрать" в папке
  • установка параметров безопасности для папки: «все> полный контроль»
  • -Force

Где, черт возьми, я должен пойти на охоту за ответом дальше? Я администратор на моей локальной машине. Это очень расстраивает, если у вас нет прав на такую простую вещь, как создание глупого текстового файла ...

Выдергивание волос ...

2 ответа2

9

Формат строки DateTime, возвращаемый функцией Get-Date содержит символы, которые нельзя использовать для имен файлов. Попробуйте что-то вроде этого:

new-item -path .\desktop\testfolder -name "$(get-date -format 'yyyyMMdd_HHmm').txt" `
        -value (get-date).toString() -itemtype file

Просто измените строку формата в соответствии с вашими потребностями.

1

Проблема в том, что -name (get-date).txt отличается от (get-date) + ".txt" . Первый попытается прочитать свойство с именем "txt" в возвращенной System.DateTime объект, и последний добавит строку «.txt» к строковому представлению даты. В первом случае .txt как свойство возвращает $null потому что он не существует. Это, в свою очередь, означает, что вы пытаетесь эффективно запустить new-item -path .\desktop\folder которая возвращает отказ в доступе, поскольку папка уже существует.

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