powershellanfaenger1990
Goto Top

Suche jemanden der mir in Powershell helfen kann !!!

Hallo,

seit gestern bin auf Probearbeiten für eine Ausbildungsstelle, allerdings habe ich keinerlei vertiefte Erfahrung in Programmieren.

Nun wurde mir aber folgende Aufgabe gestellt :

Nachdem ich via Powershell eine Liste aller installierten Programme und deren Versionen in eine TXT-Datei speichen sollte ( welches ich noch hinbekommen habe) soll ich nun folgendes Szenario lösen :


Ich sollte mir ein Programm aus der Liste aussuchen und so tun als ob ich dieses Programm aus der Liste installieren will.

Nun soll geprüft werden ob wenn das Programm schon installiert ist, die Version veraltet oder noch auf dem neuesten Stand ist und dementsprechend eine Meldung ausgeben.

Das Programm das ich installieren will soll dann mit der registry oder so verglichen werden.


Falls mir jemand schnellstmöglich helfen kann würde ich es sehr nett finden !


Mit freundlichen Grüßen

Dominik

Content-Key: 250587

Url: https://administrator.de/contentid/250587

Ausgedruckt am: 28.03.2024 um 13:03 Uhr

Mitglied: aqui
aqui 30.09.2014 aktualisiert um 18:36:46 Uhr
Goto Top
Falsche Rubrik, denn das wäre hier doch eher was für den Bereich Batch & Shell, oder ??

Kannst du übrigens selber verschieben wenn du beim Thread auf "Bearbeiten" klickst !

P.S.: Ob du dann mit Forenhilfe immer so weiterarbeiten willst musst du für dich selber entscheiden... ?!
Mitglied: colinardo
colinardo 30.09.2014 aktualisiert um 18:47:44 Uhr
Goto Top
Probearbeiten für eine Ausbildungsstelle
dann solltest du dich fragen ob die Stelle überhaupt was für dich ist. Die Firmen machen die Tests ja nicht umsonst um zu Prüfen ob der Kandidat für die Stelle bzw. für die anstehenden Arbeiten geeignet ist!

Wir würden dem Arbeitgeber damit keinen Gefallen tun...

Grüße @colinardo

p.s. mit fremden Federn schmückt man sich besser nicht.
Mitglied: templier
templier 30.09.2014 aktualisiert um 19:04:22 Uhr
Goto Top

Wir würden dem Arbeitgeber damit keinen Gefallen tun...

Grüße @colinardo

p.s. mit fremden Federn schmückt man sich besser nicht.
Absolut korrekt. Oder hast Du dem AG etwas verschwiegen beim Vorstellungsgespräch?

Wenn nicht, würde ich nach einer Schulung in diesem Bereich fragen. Danach kann er Dich mit solchen Dingen konfrontieren.

Mir tönt das eher so, das Du beim Vorstellungsgespräch mehr angegeben hast, als das Du wirklich kannst. Und wir sollen jetzt dabei Helfen Deine Inkompetenz weiter zu verschleiern.

Das Unterstütze ich nicht.

Viel Glück,

Lügen rächen sich immer im Leben.
Mitglied: Xaero1982
Xaero1982 30.09.2014 um 19:26:56 Uhr
Goto Top
Jungs, eure Meinung in allen Ehren, aber hier geht es um eine AUSBILDUNGSStelle.

Warum der das will bei einer Ausbildung ist mir nicht klar. Die Frage die sich mir stellt ist eher: Willst du dort wirklich eine Ausbildung machen? Wer solche vertieften Aufgaben stellt sucht billige Arbeitskräfte und niemanden den er ausbilden kann.

Solche Sachen lernt man ggf. in der Ausbildung und nicht vorher.

Natürlich werden einem evtl. auch fachspezifische Fragen gestellt, aber Programmieraufgaben gehören in der Regel wohl nicht dazu.

Was ist das bitte für eine Stelle?

Die Aufgabe ist nicht mal so eben so runterzuschreiben in meinen Augen.

Gruß
Mitglied: Friemler
Friemler 30.09.2014 aktualisiert um 21:00:26 Uhr
Goto Top
Hi @ All,

wie Xaero schon richtig erkannt hat: Erst mal richtig lesen und dann aufregen. Allerdings bin ich der Meinung, dass die Aufgabe zwar schon eine kleine Herausforderung darstellt, aber für jemanden, der (wahrscheinlich) Fachinformatiker Anwendungsentwicklung werden möchte, die Latte nicht zu hoch gelegt wurde. Ich denke, hier soll der "Proband" vor allem auf seine Fähigkeit geprüft werden, sich in ein unbekanntes Themengebiet einzuarbeiten - Alltag für Entwickler.


@ Dominik
Zitat von @PowershellAnfaenger1990:

Nun soll geprüft werden ob wenn das Programm schon installiert ist, die Version veraltet oder noch auf dem neuesten Stand ist
und dementsprechend eine Meldung ausgeben.

Das Programm das ich installieren will soll dann mit der registry oder so verglichen werden.
Die Aufgabenbeschreibung klingt erstmal heftig. Die Komplexität einer Aufgabe lässt sich aber immer durch Zerlegung in kleinere Arbeitspakete reduzieren (das ist ggf. mehrfach zu wiederholen). Ich habe oben die Päckchen mal fett hervorgehoben. Daraus ergibt sich:

  1. Herausfinden, wie man an die Liste aller auf dem Rechner installierten Programme (incl. Versionsinfomation) kommt und darin ein bestimmtes Programm findet.
  2. Herausfinden, wie man aus einer EXE-Datei (dem Installer des Programms) die dort enthaltenen Versionsinformationen ausließt.
  3. Herausfinden, wie man die beiden Versionsinfos vergleichen kann (Zerlegen in Haupt- und Nebenversionsnummer).
  4. Herausfinden, wie man die Meldung ausgeben kann (sollte nicht schwer bzw. schon bekannt sein).

Außerdem hast Du noch einen Tipp bekommen (die letzte Hervorhebung): Die für Punkt 1. benötigte Information findet sich in der Registry.

Wenn man Google mit den richtigen Stichworten füttert, finden sich bestimmt schnell einige PowerShell-Schnipsel, die man dann "nur" noch richtig miteinander kombinieren muss, um zur Komplettlösung zu kommen. Hier fängt dann auch der eigentliche Lerneffekt an: Schnipsel per Google zu finden ist keine Kunst, sie zu verstehen, für die eigenen Zwecke anzupassen und zum Schluss integrieren zu können schon.

Gruß
Friemler
Mitglied: PowershellAnfaenger1990
PowershellAnfaenger1990 30.09.2014 um 21:56:28 Uhr
Goto Top
Nach langem suchen der " Schipsel " habe ich etwas zusammenbauen können und bei mir läuft es ( keine ahnung wie ich das hinbekommen habe )

Bin ich den Anforderungen bzw. der Aufgabe gerecht geworden ?

$ProgramName = "TeamSpeak 3 Client"
$ProgramVersion = "3.0"
$Programs = @()

$Programs += Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | select-object -Property DisplayName, Publisher, DisplayVersion


$Programs += Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\Currentversion\Uninstall\* | select-object -Property DisplayName, Publisher, DisplayVersion


If ($matchprogram = $Programs | Where-Object -FilterScript {$_.DisplayName -eq $ProgramName } )
{

If ([version]($matchprogram.DisplayVersion) -ge [version]$ProgramVersion)
{

Write-Host -Object "The installed $ProgramName is already up to date"
}
else
{
Write-Host -Object "Time to update $ProgramName "
#installion code
}
}


else
{
Write-Host -Object "$Program will be installed "
#installation code
}
Mitglied: Friemler
Friemler 30.09.2014 aktualisiert um 22:26:35 Uhr
Goto Top
Hallo Dominik,

das sieht gut aus. face-smile Und da haben andere schon länger gesucht und zusammengebastelt.

Wenn die 1990 in Deinem Nickname eine Bedeutung hat, bist Du 14. Ich denke mal, Softwareentwickler zu werden wäre durchaus eine Option für Dich.

Viel Glück
Friemler


[EDIT]

Allerdings solltest Du die Versionsnummer noch aus der EXE des Installers auslesen, nur dann ist das Script wirklich elegant.

[/EDIT]
Mitglied: PowershellAnfaenger1990
PowershellAnfaenger1990 30.09.2014 um 22:30:41 Uhr
Goto Top
1990 - ich bin 23 :D allerdings noch nie mit Programmieren selber zu tun gehabt aber habe ein Praktikum gemacht und fande es ziemlich interessant.

Was genau meinst du mit Versionsnummer der " EXE des Installers " habe ja eigtl keinen Installer oder wie ist das gemeint ?
Mitglied: Friemler
Friemler 30.09.2014 aktualisiert um 22:54:10 Uhr
Goto Top
1990 und 14, oh Mann! face-sad Tja, es ist schon spät...

In EXE-Dateien ist eine Versionsinformation integriert, die man auslesen und mit der Versionsnummer des bereits installierten Programms vergleichen kann. Google ist Dein Freund. face-wink

Gruß
Friemler
Mitglied: AnkhMorpork
AnkhMorpork 01.10.2014 aktualisiert um 08:02:34 Uhr
Goto Top
Hallo,

hier mal ein paar (für mich) nützliche Links. Nicht erschrecken - sind ne Menge - aber vielleicht ist was für dich dabei.

http://www.admin-source.de/BlogDeu/links

Technet-Forum:
http://social.technet.microsoft.com/Forums/de-DE/powershell_de/threads?page=1

Hey scripting guy:
http://blogs.technet.com/b/heyscriptingguy/?Redirected=true

Script-Center:
http://gallery.technet.microsoft.com/ScriptCenter/

Technet, What Can I Do With Windows PowerShell?
http://technet.microsoft.com/en-us/library/ee332526.aspx

Technet, Windows PowerShell Management Cmdlets:
http://technet.microsoft.com/de-de/library/hh849827.aspx

Technet, Windows PowerShell Tip of the Week:
http://technet.microsoft.com/en-us/library/ff730948.aspx

Technet, Windows PowerShell Tips:
http://technet.microsoft.com/en-us/library/ee692948.aspx

System.Windows.Forms Namespace:
http://msdn.microsoft.com/en-us/library/system.windows.forms%28VS.80%29.aspx

Dictionary-Object
http://technet.microsoft.com/en-us/library/ee198718.aspx

Tutorial:
http://www.computerperformance.co.uk/powershell/

Cmtlets:
http://www.colorconsole.de/PS_Windows/en/

WMI:
http://social.msdn.microsoft.com/Search/de-DE?query=wmi&emptyWatermark=true&ac=4

Win32 Classes:
http://msdn.microsoft.com/en-us/library/aa394084%28v=vs.85%29.aspx

Tutorials:
http://www.powershellpro.com/powershell-tutorial-introduction/powershell-providers/


GUI-Programmierung:
http://www.martinlehmann.de/wp/download/powershell-gui-programmierung-fur-dummies-step-by-step/

http://powershell.com/cs/


String-Manipulation:
http://www.amandhally.net/tag/string-manipulation-in-powershell/
http://www.amandhally.net/tag/text-manipulation-in-powershell/
https://blogs.technet.com/b/heyscriptingguy/archive/2011/09/21/two-simple-powershell-methods-to-remove-the-last-letter-of-a-string.aspx?Redirected=true
http://newdelhipowershellusergroup.blogspot.de/p/tutorial-series.html


Remote:
http://technet.microsoft.com/en-us/library/dd819505.aspx
http://www.computerperformance.co.uk/powershell/powershell_remote.htm


Das CMDlet Set-Service kann auch zum Starten & Stoppen von Diensten verwendet werden, es unterstützt den Parameter "-ComputerName" und zum Starten & Stoppen können wir den Parameter "-Status" verwenden.
Set-Service -Name W32Time -ComputerName pc01 -Status Running
Der Parameter "-Status" kennt übrigens folgende Modi:
    Running
    Stopped
    Paused
Quelle: http://www.newcotec.com/blog/entry/dienste-remote-via-powershell-starten


Neues in PS 3.0 und 4.0:
http://technet.microsoft.com/en-us/library/hh857339


Gruß

ankh