Remote SN von angeschlossenen Monitoren per PS auslesen
Ich habe eine Liste der PCs im Netzwerk per PS erstellen und zwar mit folgenden Befehl:
Jetzt möchte Ich noch die Angeschlossenen Monitore (S/N) auslesen und mit auf die Liste bekommen, dieses gerne uch per PS auslesen und in die CSV Datei importieren.
Kann mir wer dabei helfen, jemand ne Idee wie man das realisieren könnte, meine Versuche haben nichts passenden ausgegeben.
Dankeschön.
Get-ADComputer -Filter {enabled -eq $true} -Properties *|select Name, OperatingSystem, LastLogonDate | Export-Csv C:\ad_objects.csv -NoTypeInformation -Encoding UTF8 -Delimiter ";"
Jetzt möchte Ich noch die Angeschlossenen Monitore (S/N) auslesen und mit auf die Liste bekommen, dieses gerne uch per PS auslesen und in die CSV Datei importieren.
Kann mir wer dabei helfen, jemand ne Idee wie man das realisieren könnte, meine Versuche haben nichts passenden ausgegeben.
Dankeschön.
Please also mark the comments that contributed to the solution of the article
Content-ID: 667845
Url: https://administrator.de/contentid/667845
Printed on: September 11, 2024 at 22:09 o'clock
3 Comments
Latest comment
Auch kein Moin,
hier eine Funktion, die ich dafür verwende. Kombiniere das mit deinem Code, um mehrere PCs abzufragen:
hier eine Funktion, die ich dafür verwende. Kombiniere das mit deinem Code, um mehrere PCs abzufragen:
function Get-MonitorInfo {
[CmdletBinding()]
param (
[Parameter(ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
[string[]]$ComputerName = $env:COMPUTERNAME
)
process {
foreach ($Computer in $ComputerName) {
try {
$Monitors = Get-CimInstance -ClassName WmiMonitorID -Namespace root\wmi -ComputerName $Computer -ErrorAction Stop
foreach ($Monitor in $Monitors) {
$Manufacturer = ($Monitor.ManufacturerName -notmatch 0 | ForEach-Object {[char]$_}) -join ""
$Name = ($Monitor.UserFriendlyName -notmatch 0 | ForEach-Object {[char]$_}) -join ""
$Serial = ($Monitor.SerialNumberID -notmatch 0 | ForEach-Object {[char]$_}) -join ""
[PSCustomObject]@{
ComputerName = $Computer
Manufacturer = $Manufacturer
Name = $Name
SerialNumber = $Serial
}
}
}
catch {
Write-Error "Failed to retrieve monitor information from $Computer. Error: $_"
}
}
}
}
Versuchs mal damit, als ps1 speichern und mit entsprechenden Rechten ausführen
function Get-MonitorInfo {
[CmdletBinding()]
param (
[Parameter(ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
[string[]]$ComputerName = $env:COMPUTERNAME
)
process {
foreach ($Computer in $ComputerName) {
try {
$Monitors = Get-CimInstance -ClassName WmiMonitorID -Namespace root\wmi -ComputerName $Computer -ErrorAction Stop
foreach ($Monitor in $Monitors) {
$Manufacturer = ($Monitor.ManufacturerName -notmatch 0 | ForEach-Object {[char]$_}) -join ""
$Name = ($Monitor.UserFriendlyName -notmatch 0 | ForEach-Object {[char]$_}) -join ""
$Serial = ($Monitor.SerialNumberID -notmatch 0 | ForEach-Object {[char]$_}) -join ""
[PSCustomObject]@{
ComputerName = $Computer
Manufacturer = $Manufacturer
Name = $Name
SerialNumber = $Serial
}
}
}
catch {
Write-Error "Failed to retrieve monitor information from $Computer. Error: $_"
}
}
}
}
$MonitorInfo = @()
(Get-ADComputer -Filter {enabled -eq $true}).name | ForEach-Object {
If (Test-Connection $_ -Count 1 -Quiet) {
$MonitorInfo += Get-MonitorInfo -ComputerName $_
} else {
Write-Output "$_ ist nicht online"
}
}
$MonitorInfo | Export-Csv C:\monitor-serials.csv -NoTypeInformation -Encoding UTF8 -Delimiter ";"
Series: PowerShell
Remote SN von angeschlossenen Monitoren per PS auslesen (german)3