2014-02-06 64 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

相關問題