引数として渡す、戻り値として渡すときに、コピーが行われるからだ。
こういう場合は、参照型変数を使う。
function addArray {
param( $fileName, [ref]$arrayRef)
#参照型変数(引数)のValueで使う
$array = $arrayRef.Value
$content = Get-Content $fileName
foreach( $line in $content) {
if( $line.StartWith( "username")) {
$array.add( $line)
}
}
}
$logArray = New-Object -TypeName ArrayList
$files = Get-ChildItem -Filter *.log
foreach( $oneFile in $files) {
#参照型として渡すには頭に[ref]をつけて()で囲む
addArray( $oneFile, ([ref]$logArray))
}