Powershell Methode Compare-Object als C-Sharp Methode
Hallo @ All
Ich beiße wieder mal an einem Problemchen und hoffe auf eure Unterstützung
Ich möchte folgendes Powershell-Scriptchen in C# umsetzen. Es sollen Änderungen in der Registry nachverfolgt werden. in diesem Beispiel also...
1)...ein Snap der Registry vor einer Installation / Deinstallation
2) es folgt die De/Installation
3) Snap der Registry danach
4) Ausgeben des Diff beider Snaps (die geänderten Values)
Resultat (bsp):
InputObject SideIndicator
@{DisplayName=testValue; DisplayVersion=1.2.3.4; PSPath=Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\... =>
Man kann in C# zwar via System.Management.Automation die Powershell ansprechen, mir kommt das aber etwas komisch vor PS via C# coden.
Gibt es denn in C# keine ähnliche Möglichkeit? Google spuckt dazu nix passendes aus. Kann natürlich auch sein, dass ich falsch suche.
Ein sehr vager Tipp war dies über Generische Methoden zu lösen, bloß fehlt mir dazu komplett der Ansatz.
Hat irgend jemand einen Tipp oder besser ein kleines Beispiel wie ich das lösen könnte?
Danke für eure Hilfe!
Grüße, Mayho
Ich beiße wieder mal an einem Problemchen und hoffe auf eure Unterstützung
Ich möchte folgendes Powershell-Scriptchen in C# umsetzen. Es sollen Änderungen in der Registry nachverfolgt werden. in diesem Beispiel also...
1)...ein Snap der Registry vor einer Installation / Deinstallation
2) es folgt die De/Installation
3) Snap der Registry danach
4) Ausgeben des Diff beider Snaps (die geänderten Values)
1
2
3
2
3
$before = Get-ItemProperty HKLM:"\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"
$after = Get-ItemProperty HKLM:"\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"
Compare-Object $before $after
Resultat (bsp):
InputObject SideIndicator
@{DisplayName=testValue; DisplayVersion=1.2.3.4; PSPath=Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\... =>
Man kann in C# zwar via System.Management.Automation die Powershell ansprechen, mir kommt das aber etwas komisch vor PS via C# coden.
Gibt es denn in C# keine ähnliche Möglichkeit? Google spuckt dazu nix passendes aus. Kann natürlich auch sein, dass ich falsch suche.
Ein sehr vager Tipp war dies über Generische Methoden zu lösen, bloß fehlt mir dazu komplett der Ansatz.
Hat irgend jemand einen Tipp oder besser ein kleines Beispiel wie ich das lösen könnte?
Danke für eure Hilfe!
Grüße, Mayho
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 303533
Url: https://administrator.de/forum/powershell-methode-compare-object-als-c-sharp-methode-303533.html
Ausgedruckt am: 03.04.2025 um 14:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo mayho,
schau mal hier vorbei:
https://github.com/GregFinzer/Compare-Net-Objects
bzw.
https://www.nuget.org/packages/CompareNETObjects
Das geht damit dann bspw. in dieser Art:
Grüße Uwe
schau mal hier vorbei:
https://github.com/GregFinzer/Compare-Net-Objects
bzw.
https://www.nuget.org/packages/CompareNETObjects
Das geht damit dann bspw. in dieser Art:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void testcompare(){
myclass o1 = new myclass("Test");
myclass o2 = new myclass("Test2");
KellermanSoftware.CompareNetObjects.CompareLogic logic = new KellermanSoftware.CompareNetObjects.CompareLogic();
logic.Config.MaxDifferences = 100;
MessageBox.Show(logic.Compare(o1, o2).DifferencesString);
}
public class myclass
{
public myclass(string prop) {
Myproperty = prop;
}
public string Myproperty { get; set; }
}
Das war ja nur ein total simples Beispiel mit der Eigenschaft DifferencesString. Es gibt da ja auch die Differences Eigenschaft die eine Liste der Unterschiede enthält, dazu die Werte und die Objektnamen separat als Eigenschaften abfragbar, damit kannst du dir so eine Ausgabe "zusammenlöten" wie du es brauchst.