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.1Kann mir hier irgendwer Helfen oder einen Tipp geben?