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, 287 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 ...

Installation
Entwickler PC?
gelöst Frage von gmossinInstallation11 Kommentare

Hallo Zusammen Ich habe wieder mal eine Frage an euch. Wie wird die Problematik mit Entwicklern und Clients bei ...

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 ...

Windows 7
Gäste PC
gelöst Frage von gmossinWindows 79 Kommentare

Hallo Zusammen Ich hätte eine Frage an euch. Wie löst ihr die Handhabung von Gäste PC's ? Also sprich ...

Neue Wissensbeiträge
Datenschutz

SiSyPHuS Win10: Analyse der Telemetriekomponenten in Windows 10

Tipp von freesolo vor 3 TagenDatenschutz1 Kommentar

Alle die sich detailliert für die Datensammlung interessieren die unter Windows 10 stattfindet, sollten sich folgende Analyse des BSI ...

Sicherheit
Adminrechte dank Intel-Grafikkarte
Information von DerWoWusste vor 3 TagenSicherheit2 Kommentare

ist das Advisory, welches beschreibt, welche Intel HD Graphics Modelle Sicherheitslücken haben, mit denen sich schwache Nutzer zu Admins ...

Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 3 TagenInternet1 Kommentar

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 4 TagenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Heiß diskutierte Inhalte
Hyper-V
Hyper-V Manager startet, jedoch keine VM
Frage von NaleorHyper-V14 Kommentare

Hallo zusammen, auf meinem Windows 10 (Build 1703) Notebook von der Arbeit scheint Hyper-V plötzliche nicht mehr zu funktionieren. ...

DNS
50 EUR für Telekom-, Unitymedia- und Vodafone-Kunden
Frage von Zorro1199DNS14 Kommentare

Hallo zusammen, wie evaluieren gerade das korrekte Einhalten von DNS-TTLs durch verschiedene Provider. Aktuell suchen wir noch Kunden der ...

Windows Server
Sonntagsfrage: Welchen Sinn seht Ihr noch im Server 2019 Essentials
Frage von ashnodWindows Server13 Kommentare

Guten Morgen, ich habe gestern den Windows Server 2019 Essentials als Trial in einer VM installiert um mir das ...

Windows Server
Windows 2012 R2 - Skript um Druckerkonfiguration auszulesen und zu setzen
gelöst Frage von Der-PhilWindows Server11 Kommentare

Hallo! Kennt ihr eine Möglichkeit, per Skript die Konfiguration eines Druckers auszulesen und auf einen anderen anzuwenden? Hintergrund: Ich ...