Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Permission Denied When Trying to Overwrite Hidden File

I have been searching for a while and can't seem to understand why this is happening.

I have a script that maintains a file. I want to keep that file hidden, but changing the file attribute is causing permissions problems when trying to overwrite it.

Setup is this:

"Test Text" | Out-file 'C:\Test\Test.txt' -Force
Set-ItemProperty 'C:\Test\Test.txt' -name Attributes -Value "Hidden"

Now if I try to overwrite it like so I get the following error:

"New Text" | Out-file 'C:\Test\Test.txt' -Force

Out-file : Access to the path 'C:\Test\Test.txt' is denied. At line:1 char:15 + "Test Text" | Out-file 'C:\Test\Test.txt' -Force + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OpenError: (:) [Out-File], UnauthorizedAccessException + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand

But permissions don't seem to be the issue because I can get the content and I can remove the file just fine.

Get-Content 'C:\Test\Test.txt'

rm 'C:\Test\Test.txt' -force

The workaround is to remove the file then write my new one, but I would prefer to maintain the existing file and just add to it if possible.

like image 841
malexander Avatar asked Dec 25 '22 17:12

malexander


1 Answers

Hidden files have to be deleted before you can "overwrite" them as Out-File does (without the -Append parameter). Add-Content and Set-Content work around this by modifying the existing file's content without overwriting it. See the docs on the FileMode.Create enum value.

like image 140
Keith Hill Avatar answered Jan 04 '23 22:01

Keith Hill