Zeit das Inventarprogramm abzugleichen oder mit neuen Daten zu füttern?
Hier ein Skript mit einer Funktion, die das notwendige enthält.
Wie immer als Anregung gedacht um das Skript an die eigenen Bedürfnisse anzupassen...
Code:
<#
.Synopsis
Liest die nötigen Computerinformationen aus Rechner aus um diesen im Inventar korrekt erfassen zu können.
.DESCRIPTION
Die Computerinformationen werden vom Rechner geholt und zusammengefasst ausgegeben.
Dies gibt uns die Möglichkeit die Daten für das Inventar zu sammeln oder diese mit den bestehenden Daten aus der Inventardatenbank abzugleichen.
Sind auf dem Zielsystem oder den Zielsystemen andere Anmeldeinformationen erforderlich, so ist der Parameter Anmeldeinformationen auszuwählen.
.EXAMPLE
Der Aufruf kann mit oder ohne Anmeldeinformationen erfolgen, im Beispiel wird nur ein Computer ausgewertet.
Get-Hardwaredaten Computer0815
Get-Hardwaredaten Computer0815 -Anmeldeinformationen
Get-Hardwaredaten -ComputerName Computer0815
Get-Hardwaredaten -ComputerName Computer0815 -Anmeldeinformationen
.EXAMPLE
Der Aufruf kann mit oder ohne Anmeldeinformationen erfolgen, im Beispiel wird ein ganzes Array von Computern ausgewertet.
Get-Hardwaredaten (Get-ADComputer -Filter *).Name
Get-Hardwaredaten (Get-ADComputer -Filter *).Name -Anmeldeinformationen
Get-Hardwaredaten -ComputerName (Get-ADComputer -Filter *).Name
Get-Hardwaredaten -ComputerName (Get-ADComputer -Filter *).Name -Anmeldeinformationen
#>
function Get-Hardwaredaten
{
[CmdletBinding()]
[Alias()]
[OutputType([int])]
Param
(
# Computername der geprüft werden soll oder ein Array aus Computernamen.
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
[string[]]
$ComputerName,
# Werden andere Anmeldeinformationen für den Computer benötigt?
[switch]
$Anmeldeinformationen
)
Begin
{
Clear-Host
$skript = {
$computerinfo = Get-ComputerInfo -Property *
$computerCPU = Get-CimInstance CIM_Processor
$computerHDD = Get-CimInstance Win32_LogicalDisk -Filter "DriveType = '3'"
$computerNET = Get-NetAdapter -Physical | where {$_.Status -eq "Up"}
Write-Host "Auswertung der Hardwaredaten" -BackgroundColor Blue
"Computer: " + $computerinfo.CsDNSHostName
"Benutzer: " + $computerinfo.CsUserName
"Hersteller: " + $computerinfo.CsManufacturer
"Modell: " + $computerinfo.CsModel
"Seriennummer: " + $computerinfo.BiosSeralNumber
" - Software - "
"Letzter Start: " + $computerinfo.OsLastBootUpTime
"System: " + $computerinfo.CsSystemType + ", installiert ist: " + $computerinfo.OsArchitecture
"Sprache: " + $computerinfo.OsLocale + ", Systemsprache: " + $computerinfo.OsLanguage
"Betriebssystem: " + $computerinfo.WindowsProductName + ", Version: " + $computerinfo.OsHardwareAbstractionLayer + ", installiert am: " + $computerinfo.OsInstallDate.ToString()
"BIOS Version: " + $computerinfo.BiosSMBIOSBIOSVersion
"TeamViewer ID: " + (Get-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\TeamViewer" -Name ClientID).ClientID
" - Hardware - "
"CPU: " + $computerCPU.Name
"RAM: " + "{0:N2}" -f ($computerinfo.OsFreePhysicalMemory/1MB) + " GB / {0:N2}" -f ($computerinfo.CsPhyicallyInstalledMemory/1MB) + " GB Frei - Prozentual noch {0:P2}" -f ($computerinfo.OsFreePhysicalMemory/$computerinfo.CsPhyicallyInstalledMemory) + " Frei"
foreach($HDD in $computerHDD) {"HDD " + $HDD.DeviceID + " {0:N2}" -f ($HDD.FreeSpace/1GB) + " GB / {0:N2}" -f ($HDD.Size/1GB) + " GB Frei - Prozentual noch {0:P2}" -f ($HDD.FreeSpace/$HDD.Size) + " Frei"}
foreach($NET in $computerNet) {
$IP = $NET | Get-NetIPAddress
$NET.LinkSpeed + " Netzwerk: " + $NET.InterfaceDescription + ", MAC-Adresse: " + $Net.MacAddress + ", IP-Adresse(n): " + $IP}
" - Installierte HotFix-Updates - "
Get-HotFix | Format-Table
}
}
Process
{
foreach ($C in $ComputerName){
if ($Anmeldeinformationen.IsPresent) {icm $C -Credential (Get-ComputerInfo).CsUserName $skript}
else {icm $C $skript}
}
}
End
{
}
}