2014-02-06 27 views
0

我一直在使用一个脚本来完成我所需要的功能。它将采用驱动器共享路径,获取访问控制列表,并将其导出到.csv文件以供日后编辑。我的问题是,我无法弄清楚如何将多个驱动器路径值传递给脚本。我想使用.txt或.csv文件将共享内容提供给脚本,并让它在一夜之间运行。起源网站说,分配在命令行中的变量,并使用此命令:将.csv值传递给PowerShell中的脚本

$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] 

这已经快把我逼疯了。任何帮助是极大的赞赏!

回答

2

这样做,这将是最简单的方法:

Get-Content C:\PathToInputFile.txt | ForEach-Object { .\MyPermissionsScript.ps1 $_ } | Export-Csv C:\Scripts\ScanResults.csv -NoTypeInformation 

获取内容读取某个文件作为一个数组的内容。然后它会调用你的脚本来获取数组中的每个元素,并且所有的输出都将被导出到文件中。

但是,如果你想导出为CSV,我会从你的函数中删除格式列表。它将结果转换为字符串,而不是对象,而Export-Csv需要对象。如果您只想选择这些属性,请使用Select-Object而不是Format-List。

+0

谢谢你的帮助!我还有几个问题需要解决,但这对我来说是一个很好的开始!再次感谢! – kanecain

相关问题