Accès Powershell au chemin refusé

11

Je suis sûr que cela a été demandé un million de fois, mais je ne peux pas comprendre pourquoi je ne peux pas exécuter cette commande simple dans PowerShell:

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

Je reçois toujours l'erreur suivante:

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

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

En tous cas,

J'ai essayé TOUT ce qui suit, en vain:

  • Exécution de PowerShell en tant qu'administrateur (c'est-à-dire "Exécuter en tant qu'administrateur")
  • Set-ExecutionPolicy RemoteSigned
  • "takeown" sur le dossier
  • définir les paramètres de sécurité du dossier sur: "tout le monde> contrôle total"
  • -OBLIGER

Où diable devrais-je aller chercher une réponse ensuite? Je suis administrateur sur ma machine locale. C'est extrêmement frustrant de ne pas avoir le droit de faire quelque chose d'aussi simple que de créer un stupide fichier texte ...

Tirer les cheveux ...

ErOx
la source
Avez-vous essayé avec le paramètre -Force?
EBGreen
vient d'essayer, même erreur (j'ajouterai cela à ma liste ci-dessus maintenant)
ErOx
A fait des tests sur XP, ne peut pas créer de fichiers ou de dossiers dans les dossiers des utilisateurs (dans mon cas C: \ Documents and Settings). Je peux cependant effectuer cela dans C: \. Doit faire quelque chose avec les ACL ou similaires.
Mechaflash

Réponses:

9

Le format de chaîne DateTime renvoyé par Get-Datecontient des caractères qui ne peuvent pas être utilisés pour les noms de fichiers. Essayez quelque chose comme ceci:

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

Modifiez simplement la chaîne de format pour répondre à vos besoins.

Rynant
la source
1
Duh ... bonne prise.
EBGreen
1

Le problème est que ce -name (get-date).txtn'est pas la même chose que (get-date) + ".txt". Le premier tentera de lire une propriété nommée "txt" sur l' System.DateTimeobjet retourné , et le second ajoutera la chaîne ".txt" à une représentation sous forme de chaîne de la date. Dans le premier, .txt en tant que propriété renvoie $nullcar il n'existe pas. Cela, à son tour, signifie que vous essayez d'exécuter efficacement new-item -path .\desktop\folderce qui retourne l'accès refusé car le dossier existe déjà.

x0n
la source