在多个函数powershell中使用全局变量

时间:2015-06-08 08:55:44

标签: powershell

我有这段代码:

$Count=0

Function DryRun-UploadFile($DestinationFolder, $File, $FileSource, $Count)
{


    if($FileSource -eq $null){
        $FileSource = $Folder
    }
    $path= [String]$FileSource+'\'+$File
            $Size = get-item $Path
        $Size = $Size.length

    if($Size -lt 160000){
    Write-Host "Passed"
    }else{
    $Count=$Count+1

    }
}

function DryRun-PopulateFolder($ListRootFolder, $FolderRelativePath, $Count)
{

        Write-Host "Uploading file " $file.Name "to" $WorkingFolder.name -ForegroundColor Cyan
        if(!($File -like '*.txt')){

        #Upload the file
        DryRun-UploadFile $WorkingFolder $File $FileSource $Count
        }else{
            $Count=$Count+1

        }

    }



}


Function DryRun-Copy-Files{


    $AllFolders = Get-ChildItem -Recurse -Path $Folder |? {$_.psIsContainer -eq $True}

    #Get a list of all files that exist directly at the root of the folder supplied by the operator
    $FilesInRoot = Get-ChildItem -Path $Folder | ? {$_.psIsContainer -eq $False}

    #Upload all files in the root of the folder supplied by the operator
    Foreach ($File in ($FilesInRoot))
    {

        #Notify the operator that the file is being uploaded to a specific location
        Write-Host "Uploading file " $File.Name "to" $DocLibName -ForegroundColor Cyan

        if(!($File -like '*.txt')){
        #Upload the file
        DryRun-UploadFile($list.RootFolder) $File $null $Count
        }else{
             $Count=$Count+1

        }



    }

    #Loop through all folders (recursive) that exist within the folder supplied by the operator
    foreach($CurrentFolder in $AllFolders)
    {

        DryRun-PopulateFolder ($list.RootFolder) $FolderRelativePath $Count



    }

Write-output "Number of files excluded is: "$Count | Out-file DryRun.txt -append



}

为了简单起见,我删除了一些代码,因为它与我的问题无关。我的代码通过文件结构,如果文件大于160000字节或是txt文件,则计数。运行调用DryRun-Copy-Files。 我有一个名为$ count的变量,我希望在所有函数中使用它,然后将计数输出到文件中。 问题是它只计入第一个功能DryRun-Copy-Files而不是其他功能

1 个答案:

答案 0 :(得分:1)

使用global定义变量:

$global:count=0 

并在函数中使用它(不要显式传递它)