我对PowerShell很新,遇到了问题。
我想做以下事情:
获取与运行PowerShell窗口的服务器不同的服务器上的单个文件夹上的权限/用户列表。
当前命令失败:
Get-acl -path "\\servername\folder"
错误讯息:
Get-acl:无法找到路径' \\ servername \ folder'因为它不存在
此命令是否仅适用于本地计算机?
答案 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中对另一台服务器/共享的任何复制命令都不起作用。
本文比我更好地解释了身份验证/权限:
使用较少的代码执行此操作的第二种方法,而不需要使用用户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可以在远程系统上为我工作。