Я уверен, что этот вопрос задавался миллион раз, но я не могу понять, почему я не могу выполнить эту простую команду в 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 Удаленная подпись
- "takeown" на папке
- установка параметров безопасности для папки: «все > полный доступ»
- -СИЛА
Куда, черт возьми, мне теперь идти за ответом? Я администратор на своей локальной машине. Это крайне раздражает, когда нет прав на что-то такое простое, как создание дурацкого текстового файла...
Вырывание волос...
решение1
Формат строки DateTime, возвращаемый функцией, Get-Date
содержит символы, которые нельзя использовать для имен файлов. Попробуйте сделать что-то вроде этого:
new-item -path .\desktop\testfolder -name "$(get-date -format 'yyyyMMdd_HHmm').txt" `
-value (get-date).toString() -itemtype file
Просто измените строку формата в соответствии со своими потребностями.
решение2
Проблема в том, что это -name (get-date).txt
не то же самое, что и (get-date) + ".txt"
. Первый попытается прочитать свойство с именем "txt" в возвращаемом System.DateTime
объекте, а последний добавит строку ".txt" к строковому представлению даты. В первом случае возвращается свойство .txt, $null
поскольку оно не существует. Это, в свою очередь, означает, что вы пытаетесь эффективно запустить , new-item -path .\desktop\folder
который возвращает отказ в доступе, поскольку папка уже существует.
решение3
Я также получил эту ошибку из-за флага «только для чтения». Это можно исправить с помощью:
Set-ItemProperty -Path c:\users\me\desktop\testfolder -Name IsReadOnly -Value $true