我试图得到所有smb共享我的windows服务器上的所有用户权限对他们的库存检查。
这就是我所拥有的:
$Shares = Get-SmbShare
foreach($Share in $Shares)
{
Get-SmbShareAccess -Name $Share.Name | Where-Object {$_.AccountName -Match "DOMAINNAME"}
}
它能让我找到所有的域用户及其共享和访问权限。
但它只显示文件夹的名称。我想它会在服务器上显示完整的路径(不显示)
它将以CSV格式导出。
当我这样做的时候:
$Shares = Get-SmbShare
foreach($Share in $Shares)
{
Get-SmbShareAccess -Name $Share.Name | Where-Object {$_.AccountName -Match "PRAGUELOFTS"} | Export-Csv -Path C:\perms.csv
}
它只导出最后一个用户。
2条答案
按热度按时间0sgqnhkj1#
当你传递给
Select-Object
一个哈希数组时,你可以非常精确地定义你的输出列:@{name="xyz"; expr={ calculated value }}
。通过这种方式,您可以将来自多个来源的值(例如“共享”和“共享访问”)以及手动计算的值统一到一个自定义结果中。
然后,您可以继续将其导入
Export-Csv -Path C:\perms.csv
。至于你的第二个问题,
只给你CSV文件中的最后一个结果,因为它字面上说“为每个共享,写一个CSV文件”。在每次循环迭代中,您都保持相同的文件。
首先将所有结果收集到变量中
然后创建输出文件
qlzsbp2j2#
我对单个服务器的方法: