Powershell 访问路径被拒绝

Powershell 访问路径被拒绝

我确信这个问题已经被问过一百万次了,但是我不明白为什么我不能在 powershell 中运行这个简单的命令:

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

我总是收到以下错误:

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

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

反正,

我尝试了以下所有方法,但都无济于事:

  • 以管理员身份运行 powershell (即“以管理员身份运行”)
  • 设置执行策略 RemoteSigned
  • 在文件夹上“takeown”
  • 将文件夹的安全设置设为:“所有人 > 完全控制”
  • -力量

我接下来该去哪里寻找答案?我是本地机器的管理员。没有权限执行诸如创建愚蠢的文本文件之类的简单操作,这真是令人沮丧……

拔掉头发...

答案1

返回的 DateTime 字符串格式Get-Date包含不能用于文件名的字符。请尝试以下操作:

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

只需更改格式字符串即可满足您的需要。

答案2

问题是-name (get-date).txt和 不一样(get-date) + ".txt"。前者会尝试读取返回System.DateTime对象上名为“txt”的属性,而后者会将字符串“.txt”附加到日期的字符串表示形式中。在前者中,.txt 作为属性返回,$null因为它不存在。这反过来意味着您正在尝试有效运行,new-item -path .\desktop\folder这会返回访问被拒绝,因为文件夹已经存在。

答案3

由于只读标志,我也收到此错误。可以使用以下方法修复此问题:

Set-ItemProperty -Path c:\users\me\desktop\testfolder -Name IsReadOnly -Value $true

相关内容