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-Key: 6060540857

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

Printed on: July 27, 2024 at 12:07 o'clock

Member: em-pie
em-pie Feb 20, 2023 at 15:50:25 (UTC)
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…
Member: Yuuto.Lucas
Yuuto.Lucas Feb 21, 2023 at 13:34:02 (UTC)
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
Member: Blitter
Blitter Mar 01, 2023 at 19:49:33 (UTC)
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...