【问题标题】:Passing .csv values to a script in Powershell将 .csv 值传递给 Powershell 中的脚本
【发布时间】:2014-02-06 22:45:55
【问题描述】:

我一直在使用一个几乎完全符合我需要的脚本。它将采用驱动器共享路径,获取访问控制列表,并将其导出为 .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]

这让我发疯了。非常感谢任何帮助!

【问题讨论】:

    标签: python powershell csv


    【解决方案1】:

    最简单的方法是:

    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。

    【讨论】:

    • 感谢您的帮助!我还有几个错误要解决,但这对我来说是一个很好的开始!再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 2013-04-27
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多