如何编写可以调用以处理一个文件以及多个文件的Powershell脚本

时间:2018-09-28 21:15:08

标签: powershell

我创建了一个Powershell脚本,该脚本具有一个Foreach-Object循环,该循环格式化了位于InputFolder中的xml文件。 (Format-XML是一个函数)

Get-ChildItem C:\InputFolder -Filter *.xml | 
Foreach-Object {
        cat $_.FullName | Format-XML    
}

现在我们处于项目的不同阶段,我们不希望对所有文件都运行它,而只是对其中一个新文件运行。

我如何创建一个Powershell脚本,该脚本可以将一个文件名作为输入,而在其他时候调用它,以便在需要时也可以处理多个文件?

2 个答案:

答案 0 :(得分:0)

<div id="root-panel">属性上为函数参数设置ValueFromPipeline属性。

示例:

Parameter

用法:

function foo
{
    [CmdletBinding()]
    param( [Parameter( Mandatory = $true,
                       Position = 0,
                       ValueFromPipeline = $true )]
           [string] $File
         )

    process
    {
        Write-Host "The file is: $File"
    }
}

答案 1 :(得分:0)

您需要为脚本使用参数,以便您可以指定要处理的内容。像这样:

Param(
    $Path
)
Get-ChildItem $Path -Filter *.xml | 
Foreach-Object {
        cat $_.FullName | Format-XML    
}

然后您可以像这样调用脚本:

.\FormatXMLFiles.ps1 'C:\InputFolder'

将处理整个文件夹,或者

.\FormatXMLFiles.ps1 'C:\InputFolder\MyFile.xml'

仅会处理一个文件。