Jump to content

Tician

Mitglieder
  • Gesamte Inhalte

    498
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    8

Tician hat zuletzt am 10. August 2018 gewonnen

Tician hat die beliebtesten Inhalte erstellt!

1 Benutzer folgt diesem Benutzer

Profil Info

  • Ort
    127.0.0.1

Letzte Besucher des Profils

6.535 Profilaufrufe
  1. Tician

    Overcooked 2

    Heyho! Ich wollte wissen ob jemand Overcooked 2 spielt. Der erste lässt sich nur lokal Multiplayer spielen, der 2. ist über Steam auch Online spielbar. Overcooked ist ein super-lustiges, chaotisches und freundschaften-zerstörendes Co-Op Spiel, das man lieber nicht alleine und nur mit Kommunikationsmöglichkeit (voice) spielt. Meldet euch!
  2. Tician

    C# PowerShell Output lesen

    Exakt. Normalerweise benutz ich die EventArgs und die beinhalten auch meine Fehlermeldungen - was hier wohl nicht der Fall war, ich hatte nur geraten. Ich brauch irgendein Interface von meinem sender, hatte eben noch ein tolles Beispiel... und find es nicht mehr. Wie gesagt, ab hier sollte ich erstmal wieder alleine klar kommen @KeeperOfCoffeeDanke! ❤️
  3. Tician

    C# PowerShell Output lesen

    Edit: Mein Gedankengang war, dass ich keinen neuen Thread brauche, weil ps.Invoke ja schon einen neuen Thread erstellt. Jetzt hab ich trotzdem alles mal in einen neuen Thread verschoben und nun funktioniert es auch. Mein Error-Text stimmt zwar nicht, aber das sollte ich jetzt auch noch hinkriegen
  4. Tician

    C# PowerShell Output lesen

    Ich verzweifel. Ich hab aber auch keine AHnung wie man Multi-Threading debuggt. Auf jedenfall hab ich das hier und haufenweise Haltepunkte (weswegen ich zumindest weiß wo mein Programm sich verabschiedet: using (PowerShell ps = PowerShell.Create()) { ps.AddScript("Blabla"); ps.Streams.Error.DataAdded += Error_DataAdded; Collection<PSObject> psOutput = ps.Invoke(); } private void Error_DataAdded(object sender, DataAddedEventArgs e) { InvokeMethod(Convert.ToString(e)); } public void InvokeMethod(string text) { if (InvokeRequired) { this.Invoke(new Action<string>(InvokeMethod), new object[] { text }); //hier passiert nichts mehr return; } richTextBox1.AppendText("Bla "); } Meiner Meinung nach hab ich quasi genau das kopiert was auf stackoverflow stand und ich hab es auch in einem neuen Projekt ausprobiert, da funktioniert es, aber in meinem Projekt passiert ab 'this.Invoke(....)' gar nichts mehr. Ich hab es 5 Minuten laufen lassen bevor es mir zu blöd wurde. Die GUI ist zu dieser Zeit auch nicht ansprechbar (logisch, sie wartet eigentlich darauf dass mein ps.Invoke fertig ist - glaube ich). Ich seh im Debug-Modus das noch kurz der Balken für die Ereignisse 2-3 mal ausschlagen, dann ist tote Hose und mein Programm veravschiedet sich ins Nirvana... macht irgendwas und kommt nicht mehr zurück. Was mach ich nur falsch?
  5. Tician

    C# PowerShell Output lesen

    Die Anleitung ist irgendwie... unvollständig. Ich hab mir zwar ein wenig über Delegaten und auch Threads durchgelesen, aber ich fürchte es reicht nicht aus um zu verstehen was bei mir eigentlich falsch läuft und warum ich auch im Debug-Modus nicht weiter komme - und irgendwas gewaltig falsch mache und dabei die nächste Exception bekomme. Folgendes hab ich jetzt (auf wesentliches gekürzt): private delegate void InvokeDelegate(string text); using (PowerShell ps = PowerShell.Create()) { ps.Streams.Error.DataAdded += Error_DataAdded; ps.AddScript("..."); Collection<PSObject> psOutput = ps.Invoke(); //geht hier in das Ereignis } private void Error_DataAdded(object sender, DataAddedEventArgs e) { //richTextBox1.AppendText(Convert.ToString(e)); richTextBox1.BeginInvoke(new InvokeDelegate(InvokeMethod)); //Macht 'nichts' //InvokeMethod(Convert.ToString(e)); //InvokeDelegate(Convert.ToString(e)); } public void InvokeMethod(string text) { richTextBox1.AppendText("Bla "); } Was passiert: Sichtbar quasi nichts, die TextBox bleibt leer, der Code läuft ne ganze Weile bis er dann in 'Program.cs' bei folgendem hängen bleibt: Die Dinge die ich nicht verstehe: 'ps.Invoke()' wird in einem anderen Thread ausgeführt, weswegen ich trotz Haltepunkt (das Delegaten-Zeug auskommentiert) direkt die Exception bekomme. Gibt es in VS eine Möglichkeit auch hier irgendwie einen Haltepunkt für andere Threads zu setzen? Im Microsoft-Beispiel wird 'InvokeMethod()' direkt ausgeführt ohne vorher ein Objekt erstellt zu haben anhand dessen man die Methode aufrufen könnte. Ich hab alles versucht irgendwie noch meinen string-Parameter an den Delegaten ran zu packen, aber mir erschließt sich der Aufbau nicht. Ich hab hier nochmal ein Beispiel mit Parameter gefunden: https://www.codeproject.com/Articles/10311/What-s-up-with-BeginInvoke richTextBox1.BeginInvoke(new InvokeDelegate(InvokeMethod),new object[] { e }); Ich schätze also es müsste so aussehen, aber trotzdem läuft irgendwas gewaltig schief, er versucht New Form1() mit dem Parameter aufzurufen, deswegen hier nun die Ausnahme dass Form1 keinen Parameter vom Typ string mag. Aber warum es überhaupt dorthin geht statt zu 'InvokeMethod()' ... keine Ahnung. 😕
  6. Tician

    C# PowerShell Output lesen

    @KeeperOfCoffee richTextBox1 kennt kein Dispatcher 🤨 Im Microsoft-Doc steht "System.Windows.Threading", was es aber bei mir nicht gibt, ich hätte nur "System.Threading" anzubieten, das scheint es aber nicht zu sein. Muss ich da was hinzufügen?
  7. Tician

    C# PowerShell Output lesen

    OK, ich bin etwas weiter. Jetzt kriege ich Rückmeldung, kann sie aber nicht ausgeben weil mein Steuerelement (textBox) nicht im selben Thread wie mein PowerShell läuft. using (PowerShell ps = PowerShell.Create()) { ps.AddScript("$Session = New-PSSession") .AddParameter("ConfigurationName", "Microsoft.Exchange") .AddParameter("ConnectionUri", "https://outlook.office365.com/powershell-liveid/") .AddParameter("Credential", cred) .AddParameter("Authentication", "Basic") .AddParameter("AllowRedirection"); ps.AddScript("Import-PSSession $Session").AddParameter("DisableNameChecking"); ps.AddScript("Remove-PSSession $Session"); ps.Streams.Progress.DataAdded += Progress_DataAdded; ps.Streams.Error.DataAdded += Error_DataAdded; //rutscht hier rein ps.Streams.Information.DataAdded += Information_DataAdded; ps.Streams.Warning.DataAdded += Warning_DataAdded; Collection<PSObject> psOutput = ps.Invoke(); foreach(PSObject outputItem in psOutput) { if (outputItem != null) { richTextBox1.AppendText(outputItem.ToString()); } } } private void Error_DataAdded(object sender, DataAddedEventArgs e) { richTextBox1.AppendText(Convert.ToString(e)); //InvalidOperationException } "Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement richTextBox1 erfolgte von einem anderen Thread, für den es erstellt wurde" Ich verstehe warum ich das kriege, aber ich hab bisher kein solches Problem gehabt, mal schauen ob ich das irgendwie gelöst kriege... auch wenn ich keine Ahnung habe wie ich etwas zwischen Threads übergebe... oder so...
  8. Tician

    C# PowerShell Output lesen

    PowerShell direkt sieht so aus und funktioniert auch (Im Anhang). Ich erwarte nicht dass mir das so angezeigt wird, aber auch nicht... nichts. Ich glaub aber auch nicht dass sie Befehle momentan ausgeführt werden, der erste scheint durchzulaufen (ich weiß es nicht, ich rkieg ja keinen Output sondern nur einen Sprung in mein allgemeines Exception bei 'ps.Invoke()' mit einem der beiden oben beschriebenen Fehler.
  9. Tician

    C# PowerShell Output lesen

    Ich bin auch ein Powershell-Noob, aber ich hab denke ich verstanden was du meinst. Der neue Code sieht so aus: PSCredential cred = new PSCredential(mail,password); using (PowerShell ps = PowerShell.Create()) { //ps.Commands.AddScript("$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $cred -Authentication Basic -AllowRedirection"); ps.AddScript("$Session = New-PSSession") .AddParameter("ConfigurationName", "Microsoft.Exchange") .AddParameter("ConnectionUri", "https://outlook.office365.com/powershell-liveid/") .AddParameter("Credential", cred) .AddParameter("Authentication", "Basic") .AddParameter("AllowRedirection"); ps.AddCommand("Import-PSSession $Session")/*.AddParameter("$Session")*/.AddParameter("DisableNameChecking"); ps.AddCommand("Remove-PSSession").AddParameter("$Session"); ps.Streams.Progress.DataAdded += Progress_DataAdded; ps.Streams.Error.DataAdded += Error_DataAdded; ps.Streams.Information.DataAdded += Information_DataAdded; ps.Streams.Warning.DataAdded += Warning_DataAdded; Collection<PSObject> psOutput = ps.Invoke(); /*if (ps.Streams.Error.Count > 0) { }*/ foreach(PSObject outputItem in psOutput) { if (outputItem != null) { //richTextBox1.AppendText(outputItem.BaseObject.GetType().FullName); richTextBox1.AppendText(outputItem.ToString()); } } } Mein Problem: Bei den letzten 2 Commands krieg ich entweder ein "Kennt kein cmdlet 'Import-PSSession $Session'" oder "Kennt kein Parameter '$Session"' - ich hab keine Ahnung mit was ich meine Variable da ran hängen muss, der Command an sich wäre einfach nur "Import-PSSession $Session". Was ich auch nicht verstehe ist warum meine Ereignisse nicht ziehen, bzw ich immer noch keinen Output bekomme. Alles was passiert ist das das Programm immer in meinen großen Try/Catch geht und mir dort dann den Fehler ausgibt. Noch Ideen? 🤨 PS: Nach einigen weiteren Beispielen ist 'AddScript' sowieso totaler Schwachsinn, aber mit 'AddCommand' funktioniert es ja auch nicht. Dachte ich... ich bin verwirrt, mal schreiben Leute direkt den Befehl rein, mal verweise sie nur auf eine Datei...
  10. Tician

    C# PowerShell Output lesen

    Huhu, ich versuch verzweifelt in C# ein Programm zu basteln mit dem man Office 365 Benutzer verwalten kann. Über PowerShell selbst funktioniert das einwandfrei, aber in C# krieg ich einfach keine Rückmeldungen, nichts was ich auslesen könnte das mir sagt was falsch läuft. Code sieht quasi so aus: PSCredential cred = new PSCredential(mail,password); using (PowerShell ps = PowerShell.Create()) { ps.Commands.AddScript("$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $cred -Authentication Basic -AllowRedirection"); ps.Commands.AddScript("Import-PSSession $Session -DisableNameChecking"); ps.Commands.AddScript("Remove-PSSession $Session"); Collection<PSObject> psOutput = ps.Invoke(); ps.Streams.Progress.DataAdded += Progress_DataAdded; /*if (ps.Streams.Error.Count > 0) { }*/ foreach(PSObject outputItem in psOutput) { if (outputItem != null) { //richTextBox1.AppendText(outputItem.BaseObject.GetType().FullName); richTextBox1.AppendText(outputItem.ToString()); } } } Was genau passiert: - Programm läuft durch ohne Fehler - aber auch ohne irgendwelche Meldungen. Kein Output, keine Errors, nichts, die foreach-Schleife wird übersprungen weil nichts drin ist. Auch das versuchte Event (egal ob Streams.Warning, 'Progress' oder 'Information' triggert nicht. Was mir fehlt: - Der Output des PS-Scripts fehlt mir wie gesagt, aber ich tu mich verdammt schwer irgendwas nützliches im Internet zu finden - Das Objekt der Klasse PSCredential mit dem ich in C# die Benutzerdaten abfrage muss irgendwie in den Befehl als PS-Variable rein, auch hier konnte ich noch nicht raus finden wie ich das schreiben muss damit es funktioniert. Könnte mir da jemand helfen?
  11. <client> <endpoint address="http://UnserServer:8080/WorkflowInterface" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Executor" contract="VExecutor.Executor" name="BasicHttpBinding_Executor" /> <endpoint address="http://UnserServer:8080/WorkflowInterface" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Executor" contract="VExecutor.Executor" name="BasicHttpBinding_Executor1" /> </client> Nur ein AUsschnitt, aber es sagt alles, ich musste erstmal darauf kommen, dass das da drin steht. Ich hab die eine Zeile raus geschmissen und jetzt funktioniert es. Jetzt muss ich nur noch rausfinden wie Execute funktioniert... hinsenden ist nicht das Problem, aber ich seh keine FUnktion um die xml aufzufangen die zurück kommen sollte~
  12. Ich weiß nicht wie so eine Konfigurationsdatei aussehen soll. Ich hab viel XML-Zeug, aber wenn soapUI automatisiert anfragen ausführen kann nur mit der wsdl-datei, dann kann es doch nirgendwo anders stehen oder? In der WSDL steht hier ein einziges mal die Adresse die auch SoapUI automatisch als Endpoint benutzt: - <wsdl:service name="Executor"> - <wsdl:port name="BasicHttpBinding_Executor" binding="i0:BasicHttpBinding_Executor"> <soap:address location="http://UnserServer:8080/WorkflowInterface" /> </wsdl:port> </wsdl:service> Krieg ich die benannte Konfigurationsdatei auch irgendwie direkt vom server? Ich find keine Möglichkeit diese svcutil.exe irgendwie installiert zu bekommen~
  13. Dann stimmt ja doch alles. Ich hab es mal probiert (Die Execute-Methode) ohne dass ich etwas veränder, aber die Fehlermeldung dass es mehr als eine EndpointKonfiguration gibt bleibt. Der Hersteller bietet zwar die Schnittstellen an, aber es gibt weder eine Doku, noch eine Unterstützung dafür. Alles was ich habe ist diese Seite wenn ich meine Ziel-Adresse direkt in den Browser eingebe: Den Pfad zur WSDL hab ich ja als Connected Service hinzugefügt und hab ja auch die Klasse und alles zur Verfügung. Im Prinzip genau diesen Beispielcode als 3-Zeiler mit einer Execute-Methode drin.
  14. Wie bekomme ich das svcutil.exe? Der Ordner den Microsoft beschreibt existiert bei mir nicht.
  15. ServiceDing.ExecutorClient client = new ServiceDing.ExecutorClient(); client.Endpoint.Address = new System.ServiceModel.EndpointAddress(new Uri("http://unserServer:8080/WorkflowInterface")); client.ExecuteWithLog("Label:Print", serializedWorkItem); client.Close(); Ich versuch die Ziel-Adresse zu überschreiben, bekomme aber den Fehler dass mehr als eine Endpunktkonfiguration für diesen vertrag gefunden wurde. Was fehlt mir? Edit: Ich hab das hier gefunden: Ich muss den also schon beim erstellen des Object angeben, allerdings ist das ein String und ich hab keine Ahnung was mit dem ConfigurationName gemeint ist...

Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung