2016-08-17 6 views
-1

Ich bin neu in PS und ich versuche, eine Funktion zu schreiben, die Parameter von einer globalen Variablen übernimmt. Ich möchte einen Pfadnamen aus einer TXT-Datei in eine Funktion im selben Skript übergeben.Übergeben eines Pfadverzeichnisses an eine Funktion in PowerShell

function GetCorrectChildren ([string] $homepath,$min,$max,$row) 
{ 
    #Testpoint 2 
    write-host "homepath = $homepath" 
    $ColItem = (Get-ChildItem $homepath |? {$_.PSIsContainer} | sort-object) 
} 

foreach ($homepath in (Get-Content $PSScriptRoot\homepath_short.txt)) 
{ 
    $freeSpace = [win32api]::GetDiskFreeSpace("$homepath").FreeBytesAvailable/1073741824 
    $totalSpace = [win32api]::GetDiskFreeSpace("$homepath").TotalNumberOfBytes/1073741824 
    $percentageFreeSpace = $freeSpace/$totalSpace * 100 

    if($freeSpace -lt $threshold) 
    { 
    #Testpoint 1 
    write-host "homepath = $homepath" 
    GetCorrectChildren ("$homepath",$min,$max,$OriRow) 
} 

Für #Testpoint 1, es gibt die Pfadnamen richtig was \\C:\test1\test_a ist. In #Testpoint 2 gibt es jedoch \\C:\test1\test_a 20 30 System.Object zurück.
Ich verstehe nicht, was die 20 30 System.Object bedeutet und woher kommt es? Kann jemand etwas Licht darauf werfen? Dank

Antwort

3

Ändern der letzten Zeile

GetCorrectChildren ("$homepath",$min,$max,$OriRow) 

zu

GetCorrectChildren $homepath $min $max $OriRow 

als ("$homepath",$min,$max,$OriRow) mit den vier Werten ein einzelnes Array erzeugt und übergibt sie an die Funktion GetCorrectChildren als ersten Parameter so daß write-host "homepath = $homepath" darin Druckt alle 4 Werte

Verwandte Themen