Powershell Odmowa dostępu do ścieżki

11

Jestem pewien, że zadawano to milion razy, ale nie mogę zrozumieć, dlaczego nie mogę uruchomić tego prostego polecenia w PowerShell:

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

Zawsze otrzymuję następujący błąd:

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

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

Tak czy siak,

Próbowałem WSZYSTKIE z poniższych, ale bezskutecznie:

  • Uruchamianie programu PowerShell jako administrator (tj. „Uruchom jako administrator”)
  • Set-ExecutionPolicy RemoteSigned
  • „takeown” w folderze
  • ustawienie ustawień zabezpieczeń w folderze na: „wszyscy> pełna kontrola”
  • -SIŁA

Gdzie, u licha, powinienem poszukać odpowiedzi? Jestem administratorem mojego komputera lokalnego. To bardzo frustrujące, że nie mam prawa robić czegoś tak prostego, jak tworzenie głupiego pliku tekstowego ...

Wyciąganie włosów ...

ErOx
źródło
Czy próbowałeś z parametrem -Force?
EBGreen,
właśnie próbowałem, ten sam błąd (dodam teraz to do powyższej listy)
ErOx
Zrobiłem test na XP, nie mogę utworzyć plików lub folderów w folderach użytkowników (w moim przypadku C: \ Documents and Settings). Mogę to jednak wykonać w C: \. Ma coś wspólnego z listami ACL lub podobnymi.
Mechaflash,

Odpowiedzi:

9

Format ciągu DateTime zwracany przez Get-Datezawiera znaki, których nie można używać w nazwach plików. Wypróbuj coś takiego:

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

Wystarczy zmienić ciąg formatu, aby spełnić Twoje potrzeby.

Rynant
źródło
1
Hmm ... dobry chwyt.
EBGreen,
1

Problem w tym, że -name (get-date).txtto nie to samo co (get-date) + ".txt". Pierwszy z nich spróbuje odczytać właściwość o nazwie „txt” na zwróconym System.DateTimeobiekcie, a drugi doda ciąg „.txt” do ciągu reprezentującego datę. W pierwszym przypadku .txt jako właściwość zwraca, $nullponieważ nie istnieje. To z kolei oznacza, że ​​próbujesz skutecznie uruchomić, new-item -path .\desktop\folderktóry zwraca odmowę dostępu, ponieważ folder już istnieje.

x0n
źródło