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, 271 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
Sicherheits-Tools
Putty hat heftige Bugs korrigiert!
Information von Lochkartenstanzer vor 1 TagSicherheits-Tools5 Kommentare

Moin, Wie man aus herauslesen kann, sind in den Versionen vor 0.71 gravierende Bugs, die es angeraten erscheinen lassen, ...

Off Topic
Sachen die die Welt nicht braucht - Platz 1
Tipp von brammer vor 3 TagenOff Topic18 Kommentare

Hallo, ich habs als Tipp angelegt als Erfahrungsbericht nein Danke brammer

Humor (lol)
Spirit of Health-Kongress in Berlin
Information von AnkhMorpork vor 4 TagenHumor (lol)5 Kommentare

tgif! Beim dritten Spirit of Health-Kongress trafen sich am Wochenende Alternativmediziner und Naturheilkundler im Maritim Hotel Berlin, um sich ...

Windows 7

Updates zum Nachrüsten des SHA-2-Support für Windows 7 SP1, Windows Server 2008 (R2) und WSUS 3.0 SP2 sind da

Information von kgborn vor 5 TagenWindows 7

Wie bereits früher angekündigt (Windows 7 u. Server 2008 (R2) SHA-2-Update kommt am 12. März 2019) hat Microsoft die ...

Heiß diskutierte Inhalte
Cloud-Dienste
Remotedesktopverbindungen beeinflussen sich gegenseitig
gelöst Frage von Samy89Cloud-Dienste15 Kommentare

Moin, ich habe mehrere RDPs gleichzeitig laufen, auf denen jeweils ein Script via Powershell läuft. In diesem Prozess benutzt ...

DNS
Größere DNS Probleme nach zweitem DC. Eigentlich sollte es auch dadurch besser werden
Frage von TeWutzDNS12 Kommentare

Hallo zusammen, nachdem ich letzte Woche erfolgreich einen zweiten DC ) an den Start gebracht habe melden sich weiterhin ...

LAN, WAN, Wireless
Switch als Verbindung von 2 Netzwerken
gelöst Frage von Lutz-ReLAN, WAN, Wireless12 Kommentare

Guten Tag Ich hab folgendes Problem 2 Rechner und 2 IP Kameras sind ohne dhcp in einen IP4 Netzwerk ...

Netzwerkgrundlagen
Reicht 10GBit Uplink Port für Stacking für ein 10GBit Switch?
gelöst Frage von walnickNetzwerkgrundlagen12 Kommentare

Hallo, Ich habe eine frage. Ich überlege gerade 2 neue Switche von CiscoSG350XG-24F  zu kaufen und die als Core ...