kellbidden
Goto Top

Powershell Script: OS Build, PC-Name etc

Hallo Community
Zu erwähnen ist: Ich bin absoluter Neuling in PowerShell.

Ich sollte von unseren PCs die OS-Build Nummer rauslesen.
Nun habe ich ein Script gefunden -> leider funktioniert es nicht so, wie ich das wollte:

Script:
#>

Param(
[Parameter(Mandatory=$true, position=0)][string]$infile,
[Parameter(Mandatory=$true, position=1)][string]$outfile
)

#Column header in input CSV file that contains the host name
$ColumnHeader = "ComputerName"
$HostList = import-csv $infile | select-object $ColumnHeader
$out = @()

foreach($object in $HostList) {

$os = Get-WmiObject -computername $object.("ComputerName") -class win32_operatingsystem
$vol = Get-WmiObject -computername $object.("ComputerName") -class Win32_Volume
$net = Get-WmiObject -computername $object.("ComputerName") -class Win32_NetworkAdapterConfiguration | where-object { $_.IPAddress -ne $null }

$DeviceInfo= @{}
$DeviceInfo.add("Operating System", $os.name.split("|"))
$DeviceInfo.add("Version", $os.Version)
$DeviceInfo.add("Architecture", $os.OSArchitecture)
$DeviceInfo.add("Serial Number", $os.SerialNumber)
$DeviceInfo.add("Organization", $os.Organization)
$DeviceInfo.add("Disk Capacity", "$([math]::floor($vol.Capacity/ (1024 * 1024 * 1024 )) )" + " GB" )
$DeviceInfo.add("Free Capacity", "$([math]::floor($vol.FreeSpace/ (1024 * 1024 * 1024 )))" + " GB" )
$DeviceInfo.add("System Name", $vol.SystemName)
$DeviceInfo.add("File System", $vol.FileSystem)
$DeviceInfo.add("IP Address", ($net.IPAddress -join (", ")))
$DeviceInfo.add("Subnet", ($net.IPSubnet -join (", ")))
$DeviceInfo.add("MAC Address", $net.MACAddress )

$out += New-Object PSObject -Property $DeviceInfo | Select-Object `
"System Name", "Organization", "Serial Number","Operating System", `
"Version","Architecture","File System","Disk Capacity", `
"Free Capacity","MAC Address","IP Address","Subnet"

Write-Verbose ($out | Out-String) -Verbose
$out | Export-CSV $outfile -NoTypeInformation
}

Fehlermeldungen:
Get-WmiObject : Das Argument für den Parameter "ComputerName" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das
nicht NULL oder leer ist, und führen Sie den Befehl erneut aus.
In Zeile:15 Zeichen:39

back-to-top... $os = Get-WmiObject -computername $object.("ComputerName") -class ...

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidData: (face-smile [Get-WmiObject], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Get-WmiObject : Das Argument für den Parameter "ComputerName" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das
nicht NULL oder leer ist, und führen Sie den Befehl erneut aus.
In Zeile:16 Zeichen:40

back-to-top... $vol = Get-WmiObject -computername $object.("ComputerName") -class ...

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidData: (face-smile [Get-WmiObject], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Get-WmiObject : Das Argument für den Parameter "ComputerName" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das
nicht NULL oder leer ist, und führen Sie den Befehl erneut aus.
In Zeile:17 Zeichen:40

back-to-top... $net = Get-WmiObject -computername $object.("ComputerName") -class ...

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidData: (face-smile [Get-WmiObject], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In Zeile:20 Zeichen:5

back-to-top$DeviceInfo.add("Operating System", $os.name.split("|"))

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: (face-smile , RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Kann mir da jemand auf die Sprünge helfen?

Danke Euch

Content-ID: 6060540857

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

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

em-pie
em-pie 20.02.2023 um 16:50:25 Uhr
Goto Top
Moin,

Erstens: nutze bitte die Code-Tags

Zweitens: gib bitte beim Aufruf des Scripts die Datei ($infile) mit an. Die erwartet das Script. Ebenso wie eine Outfile…
Yuuto.Lucas
Yuuto.Lucas 21.02.2023 um 14:34:02 Uhr
Goto Top
Get-ComputerInfo -Property OsBuildNumber

Moin, das wäre so erstmal der Standard Befehl für die Ausgabe der OSBuildNumber.
Kann man natürlich noch erweitern, sollte grundlegend für deine Anforderung aber reichen oder?

MfG
Blitter
Blitter 01.03.2023 um 20:49:33 Uhr
Goto Top
https://learn.microsoft.com/en-us/powershell/module/activedirectory/get- ...

Für dich interessante Felder:

Name :
OperatingSystem :
OperatingSystemHotfix :
OperatingSystemServicePack :
OperatingSystemVersion :

Ein Beispiel, wie man sowas ausfiltert, findet man hier: https://woshub.com/get-adcomputer-getting-active-directory-computers-inf ...

Kann man sich dann auch noch per export-csv in eine Datei schreiben lassen...