Estoy seguro de que me han preguntado esto un millón de veces, pero no puedo entender por qué no puedo ejecutar este simple comando en PowerShell:
PS> new-item -path c:\users\me\desktop\testfolder -name (get-date).txt -value (get-date).toString() -itemtype file
Siempre recibo el siguiente error:
New-Item : Access to the path 'C:\Users\Me\desktop\testfolder' is denied.
... PermissionDenied: ... UnauthorizedAccessException
... FullyQualifiedErrorId: NewItemUnauthorizedAccessError,Microsoft.PowerShell...
De todos modos,
Intenté TODO lo siguiente, sin éxito:
- Ejecutar powershell como administrador (es decir, "Ejecutar como administrador")
- Set-ExecutionPolicy RemoteSigned
- "quitar" en la carpeta
- establecer la configuración de seguridad en la carpeta en: "todos > control total"
- -FUERZA
¿Dónde diablos debería ir a buscar una respuesta a continuación? Soy administrador en mi máquina local. Es extremadamente frustrante no tener derechos para hacer algo tan simple como crear un archivo de texto estúpido...
Arrancándose el pelo...
Respuesta1
El formato de cadena DateTime devuelto por Get-Date
contiene caracteres que no se pueden usar para nombres de archivos. Pruebe algo como esto:
new-item -path .\desktop\testfolder -name "$(get-date -format 'yyyyMMdd_HHmm').txt" `
-value (get-date).toString() -itemtype file
Simplemente cambie la cadena de formato para satisfacer sus necesidades.
Respuesta2
El tema es que -name (get-date).txt
no es lo mismo que (get-date) + ".txt"
. El primero intentará leer una propiedad denominada "txt" en el System.DateTime
objeto devuelto y el segundo agregará la cadena ".txt" a una representación de cadena de la fecha. En el primero, .txt como propiedad regresa $null
porque no existe. Esto, a su vez, significa que estás intentando ejecutar de manera efectiva el archivo new-item -path .\desktop\folder
que devuelve el acceso denegado porque la carpeta ya existe.
Respuesta3
También recibí este error debido al indicador de solo lectura. Esto se puede solucionar usando:
Set-ItemProperty -Path c:\users\me\desktop\testfolder -Name IsReadOnly -Value $true