Tenho certeza de que isso foi perguntado um milhão de vezes, mas não consigo entender por que não consigo executar este comando simples no PowerShell:
PS> new-item -path c:\users\me\desktop\testfolder -name (get-date).txt -value (get-date).toString() -itemtype file
Estou sempre recebendo o seguinte erro:
New-Item : Access to the path 'C:\Users\Me\desktop\testfolder' is denied.
... PermissionDenied: ... UnauthorizedAccessException
... FullyQualifiedErrorId: NewItemUnauthorizedAccessError,Microsoft.PowerShell...
De qualquer forma,
Eu tentei TODOS os seguintes, sem sucesso:
- Executando o PowerShell como Administrador (ou seja, "Executar como Administrador")
- Set-ExecutionPolicy RemoteSigned
- "takeown" na pasta
- definindo as configurações de segurança na pasta para: "todos> controle total"
- -FORÇA
Onde diabos devo procurar uma resposta a seguir? Sou um administrador na minha máquina local. É extremamente frustrante não ter direitos para fazer algo tão simples como criar um arquivo de texto estúpido...
Tirando os cabelos...
Responder1
O formato de string DateTime retornado por Get-Date
contém caracteres que não podem ser usados para nomes de arquivos. Tente algo assim:
new-item -path .\desktop\testfolder -name "$(get-date -format 'yyyyMMdd_HHmm').txt" `
-value (get-date).toString() -itemtype file
Basta alterar a string de formato para atender às suas necessidades.
Responder2
A questão é que -name (get-date).txt
não é o mesmo que (get-date) + ".txt"
. O primeiro tentará ler uma propriedade chamada "txt" no System.DateTime
objeto retornado, e o último anexará a string ".txt" a uma representação de string da data. No primeiro caso, .txt como propriedade retorna $null
porque não existe. Isso, por sua vez, significa que você está tentando executar efetivamente new-item -path .\desktop\folder
o que retorna acesso negado porque a pasta já existe.
Responder3
Também recebi esse erro devido ao sinalizador somente leitura. Isso pode ser corrigido usando:
Set-ItemProperty -Path c:\users\me\desktop\testfolder -Name IsReadOnly -Value $true