Powershell访问路径被拒绝


11

我敢肯定,这已经被问了一百万遍了,但是我不知道为什么我不能在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(即“以管理员身份运行”)
  • Set-ExecutionPolicy RemoteSigned
  • 文件夹上的“ takeown”
  • 将文件夹上的安全设置设置为:“所有人>完全控制”
  • -力

接下来我应该去哪里寻找答案?我是本地计算机上的管理员。没有权限执行像创建愚蠢的文本文件一样简单的操作,这非常令人沮丧。

拔头发...


您是否尝试过-Force参数?
EBGreen 2012年

刚刚尝试过,同样的错误(我现在将其添加到上面的列表中)
ErOx 2012年

在XP上进行了一些测试,无法在用户文件夹中创建文件或文件夹(在我的情况下为C:\ Documents and Settings)。我可以在C:\中执行此操作。必须使用ACL或类似的东西。
Mechaflash 2012年

Answers:


9

由返回的DateTime字符串格式Get-Date包含不能用于文件名的字符。尝试这样的事情:

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

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


1
h ...好抓。
EBGreen 2012年

1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.