Запутавшись: я не могу передать параметры в метод PSObject - PullRequest
0 голосов
/ 03 мая 2019

Я создал PSObject, у него есть несколько свойств и несколько методов.Единственная проблема состоит в том, чтобы передать параметры в методы.

после создания объекта, его свойств и методов. Я вижу элементы с помощью метода get-members.Метод Equals имеет параметр, мои методы - нет.

function get_ExcelObj {
         param ([string] $SheetName, [string] $AppDir, [string] $NameApp )

         [string] $SheetName  = "DB"
         [string] $BaseDir    = ""
         [object] $ExcelHash  = @{}  
         [object] $Index      = @{}

         $EE_DB = New-Object -TypeName PSObject

         Add-Member -InputObject $EE_DB -MemberType NoteProperty -Name ExcelDB        -Value $ExcelHash
         Add-Member -InputObject $EE_DB -MemberType NoteProperty -Name IndexDB        -Value $Index
         Add-Member -InputObject $EE_DB -MemberType NoteProperty -Name SheetName      -Value $SheetName
         Add-Member -InputObject $EE_DB -MemberType ScriptMethod -Name InitExcel      -Value $InitExcel
         Add-Member -InputObject $EE_DB -MemberType ScriptMethod -Name GetSheetName   -Value $GetSheetName
         Add-Member -InputObject $EE_DB -MemberType ScriptMethod -Name OpenExcelFile  -Value $OpenExcelFile
         Add-Member -InputObject $EE_DB -MemberType ScriptMethod -Name OpenExcelsheet -Value $OpenExcelsheet

         return  $EE_DB

}
$OpenExcelFile = { 
     param ( [string] $ExcelFile )
     $WorkBook = $this.ObjExcel.Workbooks.Open($ExcelFile)
     Add-Member -InputObject $this -MemberType NoteProperty -Name WorkBook  -Value $WorkBook 
}
$ExcelObj = get_ExcelObj -SheetName "DB" -AppDir $MedGovDir -NameApp "MedGov"
$ExcelObj | Get-Member # Lots of members, eg: Method bool Equals(System.Object obj)  
$ExcelObj.OpenExcelFile() -ExcelFile $file # does not work

Есть идеи?Большое спасибо за любую помощь.Я действительно в замешательстве.

1 Ответ

1 голос
/ 03 мая 2019

При вызове метода для объекта .NET вы передаете параметры так же, как в C # или VB.NET, через запятую в том порядке, в котором параметры отображаются в сигнатуре метода в скобках. Попробуйте что-то вроде следующего:

$ExcelObj = get_ExcelObj -SheetName "DB" -AppDir $MedGovDir -NameApp "MedGov"
$ExcelObj | Get-Member # Lots of members, eg: Method bool Equals(System.Object obj)
$ExcelObj.OpenExcelFile($file) # this should work
$ExcelObj.OpenExcelFile() -ExcelFile $file # does not work
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...