我正在尝试使用C $内置共享来远程获取用户“我的文档”文件夹的大小。
我可以浏览共享,我可以'设置位置'到共享,但是一旦我尝试'Get-ChildItem',我就会被拒绝许可。
我无法弄清楚这是否是Powershell的一些内置限制?
目前在PS2上尝试过PS3同样的结果。
(用户对共享和NTFS都具有完全访问权限)
我尝试使用'Get-Credentials'提供凭据,我也试过'New-PSDrive'映射,同样的问题,位置很好但是只要我GCI吐出'PermissionDenied ”。
$compList = [LIST OF COMPUTERS]
$exclude = [LIST OF EXCLUDED USERS]
$userSizes = @()
foreach ($computer in $compList){
gci ("\\$computer\c$\users\") | where {$exclude -notcontains $_.name}| foreach-object {
$curUser = $_.name
New-PSDrive -name "Map" -PSProvider FileSystem -Root "\\$computer\c$\users\$_\My Documents"
$size = "{0:N2}" -f ((gci "Map:\" -recurse | Measure-Object -property length -sum).sum /1MB)
$properties = @{'Computer'=$computer;'User'=$curUser;'Size (MB)'=$size}
$curObject = New-Object –TypeName PSObject –Prop $properties
$userSizes += $curObject
Remove-PSDrive -name "Map"
}
}
$userSizes | Out-GridView
$usersizes = $null
请记住,PS2中的GCI不允许提供凭据,“FileSystem”提供商也不允许!
答案 0 :(得分:1)
您可能需要凭据才能在远程共享上使用Get-ChildItem
,我发现我已经完全访问了我的NAS,但是PowerShell给了我同样的错误"权限被拒绝",它似乎很奇怪,我无法解释为什么当我获得完全权限时它失败了但是当我给PowerShell我的凭据时它起作用了。
首先尝试声明凭据:
$creds = get-credential
然后使用像这样的凭证
Get-ChildItem "\\server\c$\users\user\My Documents" -credentials $creds
答案 1 :(得分:0)
呃耻辱。
原因是路径实际上是
\\[server]\c$\users\[user]\documents
对于一些未知的,上帝抛弃的原因,Windows资源管理器将路径显示为“我的文档”。但实际的路径是' Documents'。
我不知道为什么他们会这样做,但确实如此。现在工作正常,又浪费了几个小时......