Powershell Access to the path denied

11

1

I'm sure this has been asked a million times, but I can't figure out why I can't run this simple command in powershell:

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

I am forever getting the following error:

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

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

Anyway,

I've tried ALL of the following, to no avail:

  • Running powershell as Administrator (i.e, "Run as Administrator")
  • Set-ExecutionPolicy RemoteSigned
  • "takeown" on the folder
  • setting the security settings on the folder to: "everyone > full control"
  • -FORCE

Where the heck should I go hunting for an answer next? I'm an administrator on my local machine. This is extremely frustrating not to have rights to do something as simple as creating a stupid text file...

Pulling hair-out...

ErOx

Posted 2012-01-25T15:43:11.267

Reputation: 211

Have you tried with the -Force parameter? – EBGreen – 2012-01-25T15:48:54.150

just tried, same error (i'll add that to my above list now) – ErOx – 2012-01-25T15:53:08.023

Did some test on XP, can't create files or folders in user folders (in my case C:\Documents and Settings). I can perform this in C:\ however. Has to do something with ACLs or the like. – Mechaflash – 2012-01-25T16:40:18.403

Answers

9

The the DateTime string format returned by Get-Date contains characters that can't be used for file names. Try something like this:

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

Just change the format string to meet your needs.

Rynant

Posted 2012-01-25T15:43:11.267

Reputation: 1 785

1Duh...good catch. – EBGreen – 2012-01-25T16:56:01.873

1

The issue is that -name (get-date).txt is not the same as (get-date) + ".txt". The former will try to read a property named "txt" on the returned System.DateTime object, and the latter will append the string ".txt" to a string representation of the date. In the former, .txt as a property returns $null because it does not exist. This, in turn, means you're trying to effectively run new-item -path .\desktop\folder which returns access denied because folder already exists.

x0n

Posted 2012-01-25T15:43:11.267

Reputation: 558