Powershell eigenes Objekt in Funktion verändern
Hallo,'
ich habe Folgende Funktion:
Obwohl "Gettype" ein Object erkennt, kann ich nicht auf die einzelnen Eigenschaften zugreifen.
Habe Ihr einen Tipp?
ich habe Folgende Funktion:
{
return [pscustomobject] @{
'Date' = Get-Date
'Beschreibung' = "Was"
'Verantwortlich' = "ich"
}
}
function Write-Obj
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)]
[Object[]]$InputObject
)
begin {}
process
{
Write-Host $InputObject.GetType()
$M= Get-Member $InputObject
Write-Host $M
$InputObject
$InputObject.Date = $InputObject.Date.AddDays(100)
$InputObject.Beschreibung = "neue Zeit"
$InputObject.Verantwortlich = "Mein zukünftiges ICH"
Write-Host "Innen: $InputObject " # Does not return anything
return $InputObject
}
end {}
}
$ReqData = CreateObject
Write-Host "Außen: $ReqData "
$NewData = Write-Obj ($ReqData)
Write-Host "Außen2: $NewData"
Obwohl "Gettype" ein Object erkennt, kann ich nicht auf die einzelnen Eigenschaften zugreifen.
Habe Ihr einen Tipp?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6198042713
Url: https://administrator.de/contentid/6198042713
Ausgedruckt am: 19.12.2024 um 09:12 Uhr
2 Kommentare
Neuester Kommentar
Moin,
Beachte, dass der Parameter hier kein Objekt ergibt, sondern ein Array aus Objekten!
Wenn du dann später Get-Member ausführst, bekommst du (ohne Angabe eines Index) die Member des Arrays und nicht die des Objekts. Das Hinzufügen von Eigenschaften führt dann gar zu einem Fehler, da man keine Eigenschaften zu einen Array hinzufügen kann.
Get-Member muss hier die Parameterangabe -InputObject bekommen. Dieser kann abgekürzt sein, aber in dem Fall nicht ausgelassen werden.
Bei Write-Host-Ausgaben von Objekten empfielt es sich immer, diese vorher in eine Zeichenkette zu konvertieren
Gruß Thomas
Zitat von @SPSman:
Hier fehlt offensichtlich das {
return [pscustomobject] @{
'Date' = Get-Date
'Beschreibung' = "Was"
'Verantwortlich' = "ich"
}
}
Function CreateObject
[Object[]]$InputObject
Wenn du dann später Get-Member ausführst, bekommst du (ohne Angabe eines Index) die Member des Arrays und nicht die des Objekts. Das Hinzufügen von Eigenschaften führt dann gar zu einem Fehler, da man keine Eigenschaften zu einen Array hinzufügen kann.
$M= Get-Member $InputObject
Write-Host $M
Write-Host ($M | Out-String)
Gruß Thomas
Serie: Powershell
Powershell für User in KMU6GPO Passwortrichtlinie finden18Powershell: Office Programme inkl.- Bit-Version Auslesen2W11: Aufgabenplanung führt PS Copy-item nicht aus3Powershell remote Session: UnauthorizedAccessException3Powershell eigenes Objekt in Funktion verändern2Powershell individueller Rückgabewert von AddClick7Aufgabenplanung: Powershell Script im Hintergrund mit Userbenachrichtigung im VordergrundPowershell: Aufgabe im Hintergrund MsgBox in Vordergrund25