Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Konvertieren eines Tools von PowerShell nach etwas, was man kompilieren kann VB, C, ..

Frage Entwicklung Basic

Mitglied: goooly

goooly (Level 1) - Jetzt verbinden

27.05.2011, aktualisiert 21:27 Uhr, 4971 Aufrufe, 5 Kommentare

Also, ich habe ein VirtualServer, auf dem Programme laufen und der immer hart an der RAM-Obergrenze schrammt. Ich habe nun ein kl. PowerShell Script geschrieben, dass das Laufen der Programme überwacht und, falls abgestürzt, sie wieder startet. Allein, die PowerShell frißt knapp 100MB meines Rams und deren Scripte kann man nicht kompilieren - also möchte ich das Script in 'was anderes übertragen und kompilieren und ich denke vielleicht gibt es hier neben Interesse auch Hilfe. Zu Zeit ist der Prg-Filename "terminal.exe" und die Pfade noch 'hard-coded', später soll das als Attribute übergeben werden.

So, mein Script läuft, es gibt sogar auf der Konsole eine Statusmeldung aus. Erschwerend bei meinem Problem ist der Umstand, dass dreimal dasselbe Programm gestartet wird, nur aus unterschiedlichen Foldern, es muss also der Pfad überprüft werden.
Als final denke ich mir: checkRun.exe "Filname.exe", "pfad1", "pfad 2", .... Zur Zeit ist es halt noch fest eingeschrieben.
Und es geht mir um die die Programm in VBasic, oder C, oder ... und dann kompiliert.
Hat jemand Interesse das mitzumachen? Ich denke es mir als frei für alle...
01.
 
02.
$pN      = "terminal" ## later: $args[0] 
03.
$orgPaths = @("C:\Program Files (x86)\FIBO Group Holdings Limited", "C:\Program Files (x86)\GFT MT4 Powered by BT", "C:\Program Files (x86)\MT4") 
04.
$noPATH  = $orgPaths.length 
05.
$debug   = $false ## later -debug -Option 
06.
 
07.
 
08.
while (1) { 
09.
	$nRunning = 0 
10.
	$checkPaths = $orgPaths.Clone() 
11.
	$ProgressHeadLine = "checking MT4 Traders at "+(Get-Date) 
12.
	$ProgressStatus = "" 
13.
	if ( $allProcesses = get-process -name $pN -errorAction SilentlyContinue ) { 
14.
 
15.
		foreach ($oneProcess in $allProcesses) { 
16.
			$idx = -1 
17.
			$prg = $oneProcess.path 
18.
			$aPR = $prg.split("\ ") 
19.
			$txtDebug = " check:`t"+$prg+"`n" 
20.
			$filled = " found:`t" 
21.
			$failed = "FAILED:`t" 
22.
			for($k=0; $k -lt $noPATH; $k++) { 
23.
				$pth   = $orgPaths[$k] 
24.
 
25.
				$txtDebug += "Idx["+$k+"]:`t"+$pth+"`n" 
26.
				if ($pth -match "^ok") { continue } 
27.
				$aPcs  = $pth.Split("\ ") ## split into Pieces 
28.
				$nPcs  = $aPcs.count			 
29.
				$tmp = ""; 
30.
				for( $n=0; $n -lt $nPcs; $n++ ) { 
31.
					$p = $aPcs[$n] 
32.
					if ( $aPR[$n] -match $p ) { 
33.
						$filled = $filled+" "+$p 
34.
						if ( $n -eq 4 ) { 
35.
							$tmp += "   "+$p 
36.
37.
						if ( $n -eq 5 ) { 
38.
							$tmp += "-"+$p 
39.
40.
					} else { 
41.
						$failed = $failed+"#"+$p 
42.
						break 
43.
44.
					if ( $n -eq ($nPcs - 1) ) { 
45.
						$ProgressStatus += $tmp+":ok" 
46.
						$txtDebug += $filled+"`n"+$failed+"`n"+"ret:`t"+$k+"`n" 
47.
						$idx  = $k 
48.
49.
50.
51.
 
52.
			if ( $idx -lt 0 ) { 
53.
				$txtDebug += "NOT fnd:`t"+$oneProcess.path+"`n" 
54.
				$ProgressStatus += " NOT FOUND  " 
55.
			} else { 
56.
				$txtDebug += "fnd["+$idx+"]:`t"+$checkPaths[$idx]+"`n" 
57.
				$checkPaths[$idx] = "ok" 
58.
				$nRunning++ 
59.
60.
			write-progress -activity $ProgressHeadLine -status $ProgressStatus 
61.
			## start-sleep 1 
62.
63.
	} else { 
64.
		## nothing is running start them all 
65.
		foreach ($p in $orgPaths) { 
66.
			$start = $p+"\"+$pN+".exe" 
67.
			$txtDebug += " checkd "+(Get-Date)+" going to start "+$start+"`n" 
68.
			## $mt4 = [System.Diagnostics.Process]::Start( $start ) 
69.
70.
		continue 
71.
72.
 
73.
	if ( $nRunning -eq $noPATH ) { 
74.
		$txtDebug += "check`t"+(Get-Date)+"  all "+$nRunning+" MT4 (of "+$noPATH+") are running`n" 
75.
	} else { 
76.
		$txtDebug += "check`t"+(Get-Date)+" just "+$nRunning+" MT4 (of "+$noPATH+") are running`n" 
77.
		for($i=0; $i -lt $noPATH; $i++) { 
78.
			if ( $checkPaths[$i] -match "^ok" ) { 
79.
				if ( $debug -eq $true ) { echo("ok:`t"+(Get-Date)+" running  "+$orgPaths[$i]) } 
80.
			} else { 
81.
				$start = $checkPaths[$i]+"\"+$pN+".exe" 
82.
				$txtDebug += "##:`t"+(Get-Date)+" to start "+$start+"`n" 
83.
				$mt4 = [System.Diagnostics.Process]::Start( $start ) 
84.
85.
86.
87.
 
88.
	if ( $debug -eq $true ) { $txtDebug } 
89.
	start-sleep 10 
90.
91.
 
Mitglied: Pjordorf
27.05.2011 um 23:15 Uhr
Hallo an dich "Also, ich habe ein...",

Zitat von goooly:
Also, ich habe ein VirtualServer, auf dem Programme laufen und der immer hart an der RAM-Obergrenze schrammt. Ich habe nun ein kl. PowerShell Script geschrieben, dass das Laufen der Programme überwacht und, falls abgestürzt, sie wieder startet.
Warum nicht einfach mehr RAM in deine Kiste stecken? Und stürzen diese Programm wirklich wegen zu wenig RAM ab?

Gruß,
Peter
Bitte warten ..
Mitglied: goooly
27.05.2011 um 23:34 Uhr
Warum monatlich mehr zahlen, wenn nicht nötig?
Ob sie abstürzen - weiß ich nicht, es soll aber nicht passieren, wen ich gerade nicht da bin - und meistens ist es so!
Calli
Bitte warten ..
Mitglied: TsukiSan
28.05.2011 um 15:20 Uhr
Hallo goooly,

die 100MB erschrecken mich auch bei Powershell. Habe damit noch nicht gearbeitet, aber diesen Aspekt
hätte ich nicht erwartet. Skripte sind meistens die schnellsten.

Naja, man kann das sicher auch mit Batch, VBS oder VB machen ( hier mal ein Beispiel in VB , wie man die aktuellen Fenster/Programme ermittelt im Taskmanager.). VBS und VB lassen sich kompilieren und Batch - so meine ich - auch.
Bei deiner Fragestellung würde ich fast zu Batch tendieren. Diese sollte am schnellsten und resourcensparenden sein.
Aber bitte belehrt mich da eines besseren. Ob man die dann noch in eine exe wandeln muss - ok, deine Entscheidung

Soweit erst mal,

Gruss
Tsuki

[Edit]
und hier im Vergleich zu VB das ganze als Einzeiler in Batch:
01.
tasklist >task.txt
[/Edit]
Bitte warten ..
Mitglied: TsukiSan
28.05.2011 um 15:54 Uhr
ich nochmal:

also, wenn ich mit zum Beispiel
01.
call "D:\Eigene Programme\MeinProgramm.exe"
starte, werden gerade mal 1,5MB im Speicher verbraten (WinXP Pro SP3)
Das ist erst einmal ein 70stel von der Powershell!

Batch kann man nach exe mit zum Beispiel Bat_To_Exe_Converter.exe konvertieren. Auch das habe ich mal getestet und würde funktionieren.

also ich tendiere nach wie vor zu Batch, wenn es schnell sein soll und resourcensparend.
In einer Schleife laufen lassen mit ein bisschen Prozesse abfragen-ping-goto-etc. da sollte dein Vorhaben umsetzbar sein.

Viele Grüße
Tsuki
Bitte warten ..
Mitglied: goooly
29.05.2011 um 13:11 Uhr
Danke, batch in der alten Dos cmd scheint mir interessant, aber ich habe gleich einen Dämpfer bekommen:
Wie komme ich an den File-Name der laufenden Programme?
Zwar kriege ih alle laufenden terminal.exe:
tasklist /FI "IMAGENAME eq terminal.exe"
aber dann gibt's keinen Pfad dieser terminal.exe
Bin weiter am suchen, aber wenn jemand schnel eine Idee hat?
LG, gooly
Bitte warten ..
Ähnliche Inhalte
Windows Server
C sharp oder Powershell oder VB?
Frage von 1410640014Windows Server4 Kommentare

Hallo, ich würde gerne ein paar Dinge automatisieren. Geeignet und bekannt sind mir alle 3 Sprachen - C#, PS ...

Windows Server
Powershell: UInt32 in String konvertieren
gelöst Frage von Susie1703Windows Server2 Kommentare

Hallo an Alle, ich stehe gerade auf dem Schlauch und mein Powershell Guru Kollege ist im Urlaub. Habe folgendes ...

Batch & Shell
Powershell DMTF Datumsformat konvertieren
gelöst Frage von MarabuntaBatch & Shell2 Kommentare

Ich versuche "TimeGenerated" vom Dmtf Format in ein lesbares YYYY-MM-DD HH:MM:SS umzuwandeln. Der jetzige Code sieht so aus: $objEvents ...

Visual Studio
C-Sharp Code in native Code kompilieren?
gelöst Frage von clragonVisual Studio3 Kommentare

Hey Leute Ich hab nach ausgiebiger suche verschiedene Antworten rausbekommen welche mir alle etwas unklar vorkommen. Es geht mir ...

Neue Wissensbeiträge
Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 2 StundenMicrosoft Office10 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Erkennung und -Abwehr

Sicherheitslücke Spectre und Meltdown: Status prüfen

Anleitung von Frank vor 8 StundenErkennung und -Abwehr2 Kommentare

Nach all den Updates der letzten Woche sollte man unbedingt auch den Status prüfen, ob die Sicherheitslücken Spectre, Meltdown ...

Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 1 TagMicrosoft Office10 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 1 TagDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Drucker und Scanner
Gesucht DIN A3 Drucker
Frage von NebellichtDrucker und Scanner15 Kommentare

Hallo, ich möchte einen neuen DIN A3 Drucker kaufen. Um ab und zu, ca. 1 mal die Woche Farbausdrucke ...

iOS
Einladung vom iphone kalender
Frage von jensgebkeniOS15 Kommentare

Hallo Gemeinschaft, folgendes Problem - immer wenn ich von meinem Iphone einen Termin einztrage und diesem Termin Teilnehmer zuweise, ...

Batch & Shell
Dateien verschieben mit batch
gelöst Frage von michi-ffmBatch & Shell13 Kommentare

Hallo Zusammen hat jemand evtl eine Idee? Zunächst hier das Skript: Leider werden keine UNC-Pfade unterstüzt, kann mir jemand ...