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

Softwareinventur auf einem anderen PC mit Abfrage

Mitglied: chkdsk

chkdsk (Level 1) - Jetzt verbinden

14.03.2019, aktualisiert 15:54 Uhr, 371 Aufrufe, 11 Kommentare

Hallo Zusammen,

ich habe folgendes Powershell Skript, welches sämtliche Software auflistet, auf dem es ausgeführt wird. Ich würde das Skript gerne dahingehend abändern, das ich gefragt werde, auf welchem PC es ausgeführt werden soll, ich dann den PC Namen eingebe und die Datei abgespeichert wird.
Hier mal mein bisheriges Skript, welches auch wunderbar funktioniert.

01.
[cmdletbinding()]
02.
param(
03.
    [parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
04.
    [string[]]$ComputerName = $env:computername,
05.
    [string]$OutputFile = "C:\Installierte_Software\Installierte_Software.csv"
06.
) 
07.

08.
function Get-InstalledApps
09.
       {
10.
        foreach ($App in $Applications)
11.
        {           
12.
            $AppRegistryKey = $UninstallRegKey + "\\" + $App
13.
            $AppDetails = $HKLM.OpenSubKey($AppRegistryKey)
14.
            #$AppGUID = $App
15.
			if (($($AppDetails.GetValue("DisplayName")) -notlike "Security Update*") -and ($($AppDetails.GetValue("DisplayName")) -notlike "Microsoft App Update for*") -and ($($AppDetails.GetValue("DisplayName")) -notlike "Update for Microsoft*") )
16.
			{
17.
				$AppDisplayName = $($AppDetails.GetValue("DisplayName"))
18.
				$AppVersion = $($AppDetails.GetValue("DisplayVersion"))
19.
				#$AppPublisher = $($AppDetails.GetValue("Publisher"))
20.
				$AppInstalledDate = $($AppDetails.GetValue("InstallDate"))
21.
				#$AppUninstall = $($AppDetails.GetValue("UninstallString"))
22.
				if(!$AppDisplayName) { continue }
23.
				$OutputObj = New-Object -TypeName PSobject
24.
				#$OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer.ToUpper()
25.
				$OutputObj | Add-Member -MemberType NoteProperty -Name AppName -Value $AppDisplayName
26.
				$OutputObj | Add-Member -MemberType NoteProperty -Name AppVersion -Value $AppVersion
27.
				#$OutputObj | Add-Member -MemberType NoteProperty -Name AppVendor -Value $AppPublisher
28.
				$OutputObj | Add-Member -MemberType NoteProperty -Name InstalledDate -Value $AppInstalledDate
29.
				#$OutputObj | Add-Member -MemberType NoteProperty -Name UninstallKey -Value $AppUninstall
30.
				#$OutputObj | Add-Member -MemberType NoteProperty -Name AppGUID -Value $AppGUID
31.
				if ($RegistryView -eq 'Registry32')
32.
				{
33.
					$OutputObj | Add-Member -MemberType NoteProperty -Name Arch -Value '32'
34.
				} else {
35.
					$OutputObj | Add-Member -MemberType NoteProperty -Name Arch -Value '64'
36.
				}
37.
				$OutputObj
38.
			            $OutputObj | export-csv -append -noTypeinformation -path $OutputFile
39.
			}
40.
        }
41.
    }
42.

43.
    if((Test-Path "C:\Installierte_Software") -eq $false){
44.
    New-Item -Path "C:\Installierte_Software" -ItemType Directory -Force}
45.

46.
    $UninstallRegKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
47.
    Remove-Item $OutputFile -ErrorAction SilentlyContinue
48.

49.
    
50.
    foreach($Computer in $ComputerName)
51.
    {
52.
        Write-Output "Computer: $Computer" 
53.
        if(Test-Connection -ComputerName $Computer -Count 1 -ea 0)
54.
        {
55.
            # Get the architecture 32/64 bit
56.
            if ((Get-WmiObject -Class Win32_OperatingSystem -ComputerName $Computer -ea 0).OSArchitecture -eq '64-bit')
57.
            {
58.
                # If 64 bit check both 32 and 64 bit locations in the registry
59.
                $RegistryViews = @('Registry32','Registry64')
60.
            } else {
61.
                # Otherwise only 32 bit
62.
                $RegistryViews = @('Registry32')
63.
            }
64.

65.
            foreach ( $RegistryView in $RegistryViews )
66.
            {
67.
                # Get the reg key(s) where add/remove program information is stored.
68.
                $HKLM = [microsoft.win32.registrykey]::OpenRemoteBaseKey('LocalMachine',$computer,$RegistryView)
69.
                $UninstallRef = $HKLM.OpenSubKey($UninstallRegKey)
70.
                $Applications = $UninstallRef.GetSubKeyNames()               
71.
                Get-InstalledApps
72.
            }
73.
        }
74.
    }
Mitglied: emeriks
14.03.2019 um 15:47 Uhr
C
o
d
e

T
a
g
s

b
e
n
u
t
z
e
n

!
Bitte warten ..
Mitglied: erikro
14.03.2019 um 15:52 Uhr
Zitat von emeriks:

C
o
d
e

T
a
g
s

b
e
n
u
t
z
e
n

!

.negas hcua hci etllow saD
Bitte warten ..
Mitglied: chkdsk
14.03.2019 um 15:55 Uhr
fertig sorrryyyyy
Bitte warten ..
Mitglied: chkdsk
15.03.2019 um 08:41 Uhr
Hat keiner eine Idee?
Bitte warten ..
Mitglied: Demonix
15.03.2019 um 09:48 Uhr
Moin

du kannst bspw. die ersten 6 zeilen ersetzen durch:
01.
$ComputerName = Read-Host "Welcher pc?"
02.
$OutputFile = "C:\Installierte_Software\$Computername.csv"
das sollte so schick sein.

LG
Bitte warten ..
Mitglied: erikro
15.03.2019 um 10:30 Uhr
Moin,

Zitat von Demonix:
du kannst bspw. die ersten 6 zeilen ersetzen durch:
01.
$ComputerName = Read-Host "Welcher pc?"
02.
> $OutputFile = "C:\Installierte_Software\$Computername.csv"
03.
> 

Warum? Die Angaben sind doch schon parameterisiert. Der TO braucht das Skript doch nur mit

01.
script.ps1 -computername gewuenschter_computer -outputfile Pfad_Zur_Datei
aufzurufen.

Liebe Grüße

Erik
Bitte warten ..
Mitglied: chkdsk
15.03.2019, aktualisiert um 11:17 Uhr
@Erik
Vielen Dank. Sollen die Zeilen in das Skript oder via Powershell mit übergeben werden?

In Batch kann man ja ähnlich
</code>
01.
@echo off
02.
set /p target=Enter target hostname: 
03.
echo %target%
eine Abfrage direkt einbauen. Das geht ja in Powershell auch, finde aber keine Lösung.
Bitte warten ..
Mitglied: erikro
15.03.2019 um 11:28 Uhr
Moin,

Zitat von chkdsk:

@Erik
Vielen Dank. Sollen die Zeilen in das Skript oder via Powershell mit übergeben werden?

In Batch kann man ja ähnlich
01.
> @echo off
02.
> set /p target=Enter target hostname: 
03.
> echo %target%
04.
> 
eine Abfrage direkt einbauen. Das geht ja in Powershell auch, finde aber keine Lösung.

Grundsätzlich hast Du zwei Möglichkeiten. Die eine ist in Deinem Skript schon drin. Das nennt man Parameter. Die gibt man zu Beginn eines Skripts (oder einer Funktion) im PARAM-Block an. Da stehen in Deinem Skript zwei drin:

01.
    [string[]]$ComputerName = $env:computername,
02.
    [string]$OutputFile = "C:\Installierte_Software\Installierte_Software.csv"
Diese beiden Parameter sind vorbelegt. Das heißt aber nicht, dass Du sie nicht ändern kannst. Die Parameter, die im PARAM-Block stehen, übergibst Du so, wie es auch bei den Befehlen der PS übelich ist:

01.
srkiptname -variablenname_ohne_$
Oder, wenn Du es interaktiv haben willst, dann machst Du das, was @Demonix vorgeschlagen hat.

01.
$variable = Read-Host "Gib was ein!"
Das wäre das, was Du aus dem Batch kennst.

hth

Erik
Bitte warten ..
Mitglied: chkdsk
15.03.2019 um 11:38 Uhr
Die Idee von Demonix läuft so leider nicht, da er das Skript nicht auf dem angegebenen PC ausführt.
Prinzipiell wäre mir die Lösung am liebsten.

VG
Bitte warten ..
Mitglied: erikro
15.03.2019 um 11:58 Uhr
Zitat von chkdsk:

Die Idee von Demonix läuft so leider nicht, da er das Skript nicht auf dem angegebenen PC ausführt.
Prinzipiell wäre mir die Lösung am liebsten.

Das ist ein ganz anderes Problem. Guck mal hier: https://www.computerweekly.com/de/tipp/PowerShell-fuer-die-Remoteverwalt ...
Bitte warten ..
Mitglied: Demonix
15.03.2019 um 12:16 Uhr
Zitat von chkdsk:
das ich gefragt werde, auf welchem PC es ausgeführt werden soll, ich dann den PC Namen eingebe und die Datei abgespeichert wird.

Ein aufruf des Scrips mit Parametern war ja nicht das Ziel, sondern die Abfrage des Rechnernamens bei Ausführung ;)

Von konfiguriertem WinRM bin ich mal ausgegangen,. Oder warum sollte man den Rechnernamen abfragen, wenn sowieso nur lokal gearbeitet wird?!
Bitte warten ..
Ähnliche Inhalte
Windows 10
Gesamter PC auf neuen PC klonen?
gelöst Frage von leebaumannWindows 1011 Kommentare

Hallo Ich möchte meinen vorhanden PC inklusive aller Programmeinstellungen und Dateien auf einen neuen PC "klonen". Ist so etwas ...

CPU, RAM, Mainboards
Lautloser PC
Frage von MarkowitschCPU, RAM, Mainboards12 Kommentare

Hallo zusammen, ich möchte mir gerne einen komplett lautlosen und Lüfterlosen PC fürs Wohnzimmer zusammenstellen. Dabei habe ich an ...

CPU, RAM, Mainboards
Wohnzimmer PC
gelöst Frage von MarkowitschCPU, RAM, Mainboards8 Kommentare

Hallo, Ich habe mal folgendes Gerät fürs Wohnzimmer rausgesucht : Intel NUC Kit NUC5I7RYH (BOXNUC5I7RYHR/BOXNUC5I7RYH) Dazu habe ich auch ...

Microsoft
Konfiguration PC
Frage von jensgebkenMicrosoft2 Kommentare

Konfiguration PC Hallo Gemeinschaft, Habe einen PC im Netzwerk und dieser soll so konfiguriert werden, dass der User nicht ...

Neue Wissensbeiträge
Administrator.de Feedback
Was als Noob hier mal gesagt werden musste
Information von th30ther vor 1 TagAdministrator.de Feedback2 Kommentare

Moinsen wertes Forum, ich möchte mich an dieser Stelle mal beim Forum generell und bei aqui speziell bedanken! Ich ...

Windows 10
Windows 10 Mai 2019 Update (Version 1903) ist da
Information von kgborn vor 1 TagWindows 104 Kommentare

Nur ein kurzer Infosplitter: Microsoft hat die Nacht (21. Mai 2019) das Funktionsupdate auf Windows 10 Version 1903 freigegeben. ...

E-Mail

Newsletter: Unread News - IT News in Byte Länge

Tipp von franktaylor vor 1 TagE-Mail11 Kommentare

Hallo, würde gerne auf einen Newsletter hinweisen, den ich heute per Zufall gefunden und mit euch gerne teilen möchte: ...

Outlook & Mail

Outlook 2016 stürzt ab, wenn man ein (at)- Zeichen im Text einer neuen E-Mail schreibt

Tipp von Enriqe vor 2 TagenOutlook & Mail4 Kommentare

Bei uns in der Firma häuften sich die Fälle, bei denen sich Outlook kommentarlos verabschiedet, wenn man ein - ...

Heiß diskutierte Inhalte
Hyper-V
Novell virtualisieren
Frage von spoboeHyper-V20 Kommentare

Hallo zusammen, ich habe absolut keine Ahnung von Novell, aber wir haben hier ein ganz altes Schätzchen (vermutlich Novell ...

Windows Server
Ungewollte IP Änderung am DC sorgt für Probleme
Frage von thomas-99Windows Server19 Kommentare

Hallo Zusammen, wir haben ein kleines Netz mit 5 verschiedenen VMs (DC, AD, Fileserver, Exchange, TK Anlage - alle ...

Windows Netzwerk
Netzlaufwerk: einfache Liste der täglich gelöschten, geänderten+neuen Files
gelöst Frage von mylightWindows Netzwerk17 Kommentare

wir haben Windows Clients, das zentrale Teamlaufwerk liegt auf einem Netzwerkserver (ca. 100Gb, 10.000 Verzeichnisse, 180.000Dateien), auf die Konsole ...

Netzwerkmanagement
Gateprotect Firewall - Internetseiten werden teilw. nicht geladen
Frage von KivasFNetzwerkmanagement16 Kommentare

Morgen Zusammen, ich habe ein Problem mit einer Gateprotect Firewall welches mir echt Kopfschmerzen bereitet. Die Firewall hängt an ...