如何列出位于其他服务器上的文件夹权限

时间:2015-01-23 21:36:15

标签: powershell acl

我对PowerShell很新,遇到了问题。

我想做以下事情:

获取与运行PowerShell窗口的服务器不同的服务器上的单个文件夹上的权限/用户列表。

当前命令失败:

Get-acl -path "\\servername\folder" 

错误讯息:

  

Get-acl:无法找到路径' \\ servername \ folder'因为它不存在

此命令是否仅适用于本地计算机?

3 个答案:

答案 0 :(得分:5)

事实证明,在我的环境中设置权限/身份验证会阻止我的代码工作。

以下是我验证是否可以连接到服务器的步骤:

Test-Path \\server\folder

这返回" False",这就是我的代码破解的原因。 我使用的工作是:

#Step 1: remotely connect to server
Enter-PSSession -ComputerName servernamegoeshere

#Step 2: get list of permissions on folder and save to csv
get-acl E:\foldernamehere | 
select -expand access |
export-csv C:\Users\usernamegoeshere\Documents\listofperms.csv |
#Step 3: close remote connection
Exit-PSSession

我仍然需要远程进入服务器并将csv复制到我想要的位置,因为再次,由于权限/身份验证问题,PowerShell中对另一台服务器/共享的任何复制命令都不起作用。

本文比我更好地解释了身份验证/权限:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/14/enable-powershell-quot-second-hop-quot-functionality-with-credssp.aspx


使用较少的代码执行此操作的第二种方法,而不需要使用用户Ansgar Wiechers创建远程会话:

Invoke-Command -Computer server -ScriptBlock {get-acl E:\folder | 
select -expand access } |
export-csv \\server\folder\accesslist.csv 

使用PowerShell,有很多方法可以做一件事...我认为这种方式最好/最简单!谢谢!

答案 1 :(得分:2)

该命令也适用于UNC路径,但UNC路径与本地路径略有不同。您需要一个访问点才能进入远程主机的文件系统。对于SMB / CIFS访问(通过UNC路径),访问点是共享文件夹,因此您需要路径\\server\share\\server\share\path\to\subfolder

使用管理员帐户,您可以使用管理共享(例如\\server\C$\Users\Administrator),否则您需要先创建共享。

答案 2 :(得分:0)

输出错误消息路径似乎缺少反斜杠。 您的原始代码是否也缺失了? Get-acl可以在远程系统上为我工作。