我一直在使用一个脚本,该脚本几乎可以完全满足我的需要。它将采用驱动器共享路径,获取访问控制列表,并将其导出到.csv文件以供以后编辑。我的问题是我不知道如何将多个驱动器路径值传递给脚本。我想使用.txt或.csv文件将共享提供给脚本,并使其运行一整夜。原始站点说要在命令行中分配一个变量,然后使用以下命令:
$allServersVariable -FilePath C:\Scripts\MyPermissionsScript.ps1 -ArgumentList "E:\list" | Export-Csv C:\Scripts\ScanResults.csv –NoTypeInformation
但是,我无法使此命令正常工作。但是,我可以执行以下操作,并一次处理一个共享:
.\MyPermissionsScript.ps1 \\\192.168.1.1\SharedFiles | Export-Csv C:\Scripts\ScanResults.csv -NoTypeInformation
这是脚本:
function Get-PathPermissions {
param (
[Parameter(Mandatory=$true)]
[System.String]${Path}
)
begin {
$root = Get-Item $Path
($root | get-acl).Access | Add-Member -MemberType NoteProperty -Name "Path" -Value $($root.fullname).ToString() -PassThru
}
process {
$containers = Get-ChildItem -path $Path -recurse | ? {$_.psIscontainer -eq $true}
if ($containers -eq $null) {break}
foreach ($container in $containers)
{
(Get-ACL $container.fullname).Access | format-list -property Path, AccessToString
}
}
}
Get-PathPermissions $args[0]
这让我发疯。任何帮助是极大的赞赏!
最简单的方法是:
Get-Content C:\PathToInputFile.txt | ForEach-Object { .\MyPermissionsScript.ps1 $_ } | Export-Csv C:\Scripts\ScanResults.csv -NoTypeInformation
Get-Content读取文件的内容作为数组。然后,它将为数组的每个元素调用脚本,所有输出将导出到文件中。
但是,如果要导出为CSV,我将从功能中删除“格式列表”。它将结果转换为字符串,而不是对象,而Export-Csv需要对象。如果只想选择这些属性,请使用Select-Object而不是Format-List。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句