Powershell Доступ к пути запрещен

11

Я уверен, что об этом спрашивали миллион раз, но я не могу понять, почему я не могу запустить эту простую команду в 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

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

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

ErOx
источник
Вы пробовали с параметром -Force?
EBGreen
только что попробовал, та же ошибка (я добавлю это в мой список выше)
ErOx
Делал некоторые тесты на XP, не может создавать файлы или папки в пользовательских папках (в моем случае C: \ Documents and Settings). Я могу выполнить это в C: \ однако. Должен что-то делать с ACL или чем-то подобным.
Mechaflash

Ответы:

9

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

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

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

Rynant
источник
1
Дух ... хороший улов.
EBGreen
1

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

x0n
источник