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.ProductCodeIn 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?