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 ...
Odpowiedzi:
Format ciągu DateTime zwracany przez
Get-Date
zawiera znaki, których nie można używać w nazwach plików. Wypróbuj coś takiego:Wystarczy zmienić ciąg formatu, aby spełnić Twoje potrzeby.
źródło
Problem w tym, że
-name (get-date).txt
to nie to samo co(get-date) + ".txt"
. Pierwszy z nich spróbuje odczytać właściwość o nazwie „txt” na zwróconymSystem.DateTime
obiekcie, a drugi doda ciąg „.txt” do ciągu reprezentującego datę. W pierwszym przypadku .txt jako właściwość zwraca,$null
ponieważ nie istnieje. To z kolei oznacza, że próbujesz skutecznie uruchomić,new-item -path .\desktop\folder
który zwraca odmowę dostępu, ponieważ folder już istnieje.źródło