创建文件夹的功能

时间:2014-09-04 07:27:40

标签: powershell piping

这可以很好地创建多个管道文件夹:

Function Add-Folders {

    $Permissions.Folder | ForEach-Object { 

        if (Test-Path "$Path\$_" -PathType Container) { 
            Write-Verbose "-Exists: $Path\$_"
        } 
        else {
            New-Item "$Path\$_" -Type Directory  > $null
            Write-Verbose "-Created: $Path\$_"
        }
    } 
}

当我向其管道多个文件夹名称时,这个不起作用:

Function Make-Folders {
    [CmdletBinding(SupportsShouldProcess=$True)]
    Param(
        [parameter(Mandatory=$true,Position=0)]
        [ValidateScript({Test-Path $_ -PathType Container})]
        [ValidateNotNullOrEmpty()]
        [String]$Path,
        [parameter(Mandatory=$true,ValueFromPipeline=$true,Position=1)]
        [ValidateNotNullOrEmpty()]
        [String[]]$Name
    )

    $Name | ForEach-Object { 

        if (Test-Path "$Path\$_" -PathType Container) { 
            Write-Verbose "-Exists: $Path\$_"
        } 
        else {
            New-Item "$Path\$_" -Type Directory  > $null
            Write-Verbose "-Created: $Path\$_"
        }
    } 
}
$Permissions.Folder | Make-Folders -Path c:\Root -Verbose

当我检查调试模式时,我可以看到$Name仅接收Permissions.Folder中可用的最后一个文件夹名称。我真的不明白为什么它没有把所有事情都弄清楚......可能我在这里错过了一些明显的东西。

1 个答案:

答案 0 :(得分:1)

修正了我的愚蠢错误,我错过了Process部分:

Function Make-Folders {
    [CmdletBinding(SupportsShouldProcess=$True)]
    Param(
        [parameter(Mandatory=$true,Position=0)]
        [ValidateScript({Test-Path $_ -PathType Container})]
        [ValidateNotNullOrEmpty()]
        [String]$Path,
        [parameter(Mandatory=$true,ValueFromPipeline=$true,Position=1)]
        [ValidateNotNullOrEmpty()]
        [String[]]$Name
    )
    Process {

        $Name | ForEach-Object { 

            if (Test-Path "$Path\$_" -PathType Container) { 
                Write-Verbose "-Exists: $Path\$_"
            } 
            else {
                New-Item "$Path\$_" -Type Directory  > $null
                Write-Verbose "-Created: $Path\$_"
            }
        }
    } 
}


$Permissions.Folder | Make-Folders -Path $Target -Verbose

对不起伙计们,我的坏人。