Powershell Get-Item 找不到路径

Powershell Get-Item cannot find path

我正在使用 Powershell 脚本来更改文件夹(实际上是 $Recycle.Bin 文件夹)的 ACL,但我一直坚持对文件夹实际应用权限,因为 Get-Item cmdlet 没有找到路径。

这是(部分)脚本:

$acl = Get-Acl "$env:USERPROFILE\`$Recycle.Bin"
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("BUILTIN\Users",'FullControl', 'ContainerInherit, ObjectInherit', 'None', 'Allow')
$acl.SetAccessRule($AccessRule)
(Get-Item "$env:USERPROFILE\`$Recycle.Bin").SetAccessControl($acl)

我得到的错误是找不到路径:

Get-Item : Could not find item C:\Users\TestUser$Recycle.Bin.
At line:1 char:2
+ (Get-Item "$env:USERPROFILE\`$Recycle.Bin").SetAccessControl($acl)
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\test$Recycle.Bin:String) [Get-Item], IOException
    + FullyQualifiedErrorId : ItemNotFound,Microsoft.PowerShell.Commands.GetItemCommand

You cannot call a method on a null-valued expression.
At line:1 char:1
+ (Get-Item "$env:USERPROFILE\`$Recycle.Bin").SetAccessControl($acl)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Get-Item cmdlet 找不到路径,但我可以使用 CD 命令成功导航到该路径:

PS C:\Users\TestUser> cd "$env:USERPROFILE\`$Recycle.Bin"
PS C:\Users\RestUser$Recycle.Bin>

我怀疑这是因为 $Recycle.Bin 文件夹在路径中有一个“$”,但我又认为它不应该被解释为一个变量,因为我在其中添加了“`”字符.

虽然我对此可能是错误的。

最好指出此路径实际上是安装到服务器的用户配置文件磁盘(因此是 VHDX)。

如何才能让 Get-Item cmdlet 真正找到路径?

谢谢!

那是因为那不是 $env: 属性,也不是 Recycle.Bin 所在的地方。

它在这里:要访问回收站文件夹,粘贴...

C:$Recycle.Bin 

...在 运行.

也可以用这个访问它:

Get-RecycleBin - 显示回收站的内容 此功能旨在补充 Clear-RecycleBin cmdlet,它不提供查看存储在回收站中的文件的功能。

下载:Get-RecycleBin.ps1

假设您的路径是正确的并且不在默认位置 C:$Recycle.bin,您只需要用单引号引用该路径以防止 PowerShell 尝试评估 $Recycle 这很可能是不存在的变量。你可以这样获取回收站的ACL:

Get-Acl -Path (Join-Path -Path $env:USERPROFILE -ChildPath '$Recycle.bin')

如果您想获得更多信息(如 Get-Item),您必须添加 -Force 参数,因为它是一个隐藏的系统文件夹:

Get-Item -Path (Join-Path -Path $env:USERPROFILE -ChildPath '$Recycle.bin') -Force