我确信这个问题已经被问过一百万次了,但是我不明白为什么我不能在 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