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
+ 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
+ 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
+ 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
+ FullyQualifiedErrorId : InvokeMethodOnNull
Kann mir da jemand auf die Sprünge helfen?
Danke Euch
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
... $os = Get-WmiObject -computername $object.("ComputerName") -class ...
~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: ( [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
... $vol = Get-WmiObject -computername $object.("ComputerName") -class ...
~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: ( [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
... $net = Get-WmiObject -computername $object.("ComputerName") -class ...
~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: ( [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
$DeviceInfo.add("Operating System", $os.name.split("|"))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: ( , RuntimeException+ FullyQualifiedErrorId : InvokeMethodOnNull
Kann mir da jemand auf die Sprünge helfen?
Danke Euch
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6060540857
Url: https://administrator.de/contentid/6060540857
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
3 Kommentare
Neuester Kommentar
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...
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...