Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Return PSCustomObject Problem

$
0
0

Hallo,

wenn ich folgenden Code ausführe bekomme ich den String "test123" ausgegeben.

function test1 { $test = New-Object PSObject $test | Add-Member -MemberType NoteProperty -Name "a" -Value "test123" $test | Add-Member -MemberType NoteProperty -Name "b" -Value "test456" return $test } $var1 = test1 $var1.a

Dieses Prinzip habe ich auf etwas komplexeres angewandt und bekomme nun nichts mehr zurückgegeben.

function test2
{
    [IO.FileInfo]$FilePath = "PFAD ZU EINER BELIEBIGEN MSI DATEI"
    $PropertyList = @("ProductCode","ProductVersion","ProductName")
    $ReturnObject = New-Object PSObject

    Try
    {
        $WindowsInstaller = New-Object -ComObject WindowsInstaller.Installer
        $MSIDatabase = $WindowsInstaller.GetType().InvokeMember("OpenDatabase","InvokeMethod",$Null,$WindowsInstaller,@($FilePath.FullName,0))

        Foreach ($Property in $PropertyList)
        {
            $Query = "SELECT Value FROM Property WHERE Property = '$Property'"
            $View = $MSIDatabase.GetType().InvokeMember("OpenView","InvokeMethod",$null,$MSIDatabase,($Query))
            $View.GetType().InvokeMember("Execute", "InvokeMethod", $null, $View, $null)
            $Record = $View.GetType().InvokeMember("Fetch","InvokeMethod",$null,$View,$null)
            $Value = $Record.GetType().InvokeMember("StringData","GetProperty",$null,$Record,1)
            $ReturnObject | Add-Member -MemberType NoteProperty -Name "$Property" -Value $Value
        }
    }

    Catch
    {
        Write-Output $_.Exception.Message
    }

    return $ReturnObject

}

$var2 = test2
$var2.ProductCode


In der Variable

$var2

steht bei mir folgender Inhalt

PS C:\Windows\system32> $var2 | get-member


   TypeName: System.Management.Automation.PSCustomObject

Name           MemberType   Definition
----           ----------   ----------
Equals         Method       bool Equals(System.Object obj)
GetHashCode    Method       int GetHashCode()
GetType        Method       type GetType()
ToString       Method       string ToString()
ProductCode    NoteProperty System.String ProductCode={C43920E3-2939-455A-B1E2-8A0673A5FFCA}
ProductName    NoteProperty System.String ProductName=Cisco AnyConnect Start Before Login Module
ProductVersion NoteProperty System.String ProductVersion=4.2.04018 

trotzdem bekomme ich bei

$var2.ProductCode

keine Ausgabe.

PowerShell Version:

Name                           Value
----                           -----
CLRVersion                     2.0.50727.5485
BuildVersion                   6.1.7601.17514
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1                         
Kann mir hier irgendwer Helfen oder einen Tipp geben?


Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>