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

How to list folder permissions located on a different server

我对 PowerShell 还很陌生,运行 遇到了问题。

我想做以下事情:

获取与我 运行 我的 PowerShell window 来自的不同服务器上的单个文件夹中的 permissions/users 列表。

当前命令失败:

Get-acl -path "\servername\folder" 

错误信息:

Get-acl : Cannot find path '\servername\folder' because it does not exist

这个命令只能在本地机器上运行吗?

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

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

事实证明 permissions/authentications 在我的环境中设置的方式阻止了我的代码工作。

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

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 复制到我想要的位置,因为再一次,由于 permission/authentication 问题,在 PowerShell 中任何复制到另一个 server/share 的命令都无法工作。

这篇文章解释 authentication/permissions 比我好一点:

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,做一件事有很多种方法...我认为这种方法best/most简单!谢谢!