ConfigMgr: SQL Query für MAC Addresse

SystemCenter Logo

Ich hab hier mal eine kurze, ausformulierte Query gebastelt, die das Auffinden eines Rechners mittels MAC Adresse erleichtern kann.

declare @MAC nvarchar(17);
set @MAC = '98:E7:F4:F7:12:0C'

SELECT     
    v_RA_System_ResourceNames.Resource_Names0 AS [Resource name], 
    v_RA_System_MACAddresses.MAC_Addresses0 AS [MAC Address],
    v_RA_System_IPAddresses.IP_Addresses0 AS [IP Address]
FROM         
    v_RA_System_MACAddresses 
INNER JOIN v_RA_System_ResourceNames ON v_RA_System_MACAddresses.ResourceID = v_RA_System_ResourceNames.ResourceID 
INNER JOIN v_RA_System_IPAddresses ON v_RA_System_MACAddresses.ResourceID = v_RA_System_IPAddresses.ResourceID
WHERE v_RA_System_MACAddresses.MAC_Addresses0 = @MAC

ConfigMgr: Task Sequence locked

SystemCenter Logo

Sollte die ConfigMgr Konsole mal unerwartet beenden und zufälliger Weise noch der Task Sequence Editor noch offen gewesen sein, kann das eine Sperre der Task Sequence in der Datenbank zur Folge haben. Es gibt einen kleinen Workaround um den Lock Datensatz aus der Datenbank zu entfernen. Lasst folgende Query auf dem Server (CAS / Primary) more

ConfigMgr: SMS_DMP_DOWNLOADER – Component stopped *Resolved*

SystemCenter Logo

Eine echt glanzvolle Leistung! Danke. Microsoft löscht beim Update auf 1606 einfach Regkey. Schaut Euch hier mal um: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\SMS_DMP_CONNECTOR Erstellt 2 neue leere string-values mit dem Namen “ProxyUserName” und “ProxyUserPassword“. Startet den SMS_EXECUTIVE Dienst neu SMS_DMP_DOWNLOADER startet dann automatisch und verbindet zu Microsoft um die Paket Meta Daten herunterzuladen. Lösung hier gefunden: Service connection point more

Powershell: Metric der Ethernet Karte einstellen

Die Metrik der Ethernet Karte kann über Powershell bzw. Netsh recht einfach verändert werden. Windows verwendet hier eine automatische Metrik als Standard-Einstellung. Nicht immer ist das die beste Lösung. Über die Metrik der Netzwerk-Karte wird die Priorisierung des Datenfluss gesteuert. Ein hoher Wert gibt eine niedrige Priorität an. Werte von 1 – 50 können automatisch more

Powershell: Alle Sites von CAS extrahieren

Kurz und knackig:

Get-WmiObject -ComputerName '[Server-Name]' -Class 'SMS_SiteANDSubsites' -Namespace 'root\SMS\site_[Site-Code]' | 
    Select-Object ServerName, SiteName, SiteCode | 
    Export-Csv -Path C:\Temp\CM_Sites.csv
    
    
    

Natürlich müssen Server Namen und Site-Code geändert werden. Der Pfad für die CSV Datei kann, muss aber nicht gewählt werden.

Powershell: WMI Abfrage auf Sites in ConfigMgr 2012

Einfach den Server-Namen, SiteCode, Filter-Text anpassen und läuft.

$ServerName = <ServerName>
$SiteCode = <SiteCode>
$NameFilter = '<Naming Filter>'

Get-WmiObject -ComputerName $ServerName -Namespace "root\SMS\site_$SiteCode" -Class 'SMS_Site' -Filter "SiteName  like '%$NameFilter%'" | Select-Object SiteName, ServerName | Export-Csv -Path c:\temp\secsites.csv 


Könnte natürlich auch noch als Funktion ausgebaut werden. Für eine Quick-And-Dirty Anwendung reicht das sicher so.

Powershell: SQL Edition und Version live abfragen

In einer Hierarchie mit mehr als 70 Siteservern einer ConfigMgr 2012 R2 Umgebung stellt sich vielleicht mal die Frage der verwendeten Editionen und deren Versionen. Basierend auf einer schon früher veröffentlichten SQL Query Abfrage habe ich dann folgendes kurzes Script erstellt: Das Script holt sich aus der WMI des Servers eine Liste aller SiteServer (CAS more

Powershell: Pending Reboots in Sharepoint Liste

Aus der Notwendigkeit raus, Pending Reboots zu reporten hab ich folgendes Script entwickelt. Basis des Scripts ist eine Baseline, die die Pending Reboots, aufgrund verschiedener Tatsachen, in die CM12 Datenbank bringt. Die Compliance Daten können dann mit Hilfe dieses Scripts in eine Sharepoint Liste übertragen werden und damit als Historie verwendet werden. Die Baseline muss more

Powershell / ConfigMgr2012: Non-Persistant Cache löschen

Ein zu kleiner CCM-Cache kann verhindern, dass neue Pakete, die nicht mehr in den Cache geladen werden können, nicht mehr installiert werden. Mit folgendem Snippet kann der Cache geleert werden Die Ursprüngliche Idee war dieses Snippet als Script in ein ConfigMgr Paket einzubinden und vorrangig den Cache zu bereinigen. Folgender Befehl muss dazu genutzt werden more

ConfigMgr2012: Alle Laptops für alle OUs in Active Directory filtern

SystemCenter Logo

Und wieder mal eine kleine aber nützliche Query. Diesmal filtere ich alle Laptops (… etc…) nach Chassistype.

select distinct
    SYS.Netbios_Name0 as [Computer Name],
	GSSE.ChassisTypes0 as [Chassis Type],
	GSOS.Caption0 as [OS],
	RASS.System_OU_Name0 as [OU Name]
from v_R_System as SYS
inner join v_GS_SYSTEM_ENCLOSURE as GSSE on GSSE.ResourceID = SYS.ResourceID
inner join v_GS_OPERATING_SYSTEM as GSOS on GSOS.ResourceID = SYS.ResourceID
inner join v_RA_System_SystemOUName as RASS on RASS.ResourceID = SYS.ResourceID
where GSSE.ChassisTypes0 in ('8', '9', '10', '14') 

Da es für die Chassistypes eine ganze Liste gibt und diese auch nicht immer nachvollziehbar und logisch verwendet sind….. ( 🙂 ) müssen gleich einige Typen berücksichtigt werden. Die Liste an verfügbaren Chassistype Codes hab ich mal mit gepostet.

1 = "Other"
2 = "Unknown"
3 = "DeskTop"
4 = "Low Profile Desktop"
5 = "Pizza Box"
6 = "Mini Tower"
7 = "Tower"
8 = "Portable"
9 = "Laptop"
10 = "Notebook"
11 = "Handheld"
12 = "Docking Station"
13 = "All-in-One"
14 = "Sub-Notebook"
15 = "Space Saving"
16 = "Lunch Box"
17 = "Main System Chassis"
18 = "Expansion Chassis"
19 = "Sub-Chassis"
20 = "Bus Expansion Chassis"
21 = "Peripheral Chassis"
22 = "Storage Chassis"
23 = "Rack Mount Chassis"
24 = "Sealed-Case PC"
25 = "Tablet"

Den effektiven Filter mach ich persönlich gerne in Excel mit einer Pivot Tabelle.

Powershell: MSI Infos auslesen

Und wieder ein kleines, aber feines, Script, das den IT Alltag versüßen kann.

Hiermit lassen sich wichtig Infos, wie z.B. die Produkt ID einer MSI Datei auslesen.

function get-msiinfo
<#
.SYNOPSIS
funktion to get MSI details
.DESCRIPTION
get ProductCode, ProductVersion, ProductName
.PARAMETER $Path
specifies the path of MSI file
.PARAMETER $Property
Properies can be specified for ProductCode, ProductVersion, ProductName
.EXAMPLE
get-msiinfo -Path C:\temp\file.msi -Property ProductCode
get-msiinfo -Path C:\temp\file.msi -Property ProductVersion
get-msiinfo -Path C:\temp\file.msi -Property ProductName
#>
    {
    [CmdletBinding()]
    param(
        [parameter(Mandatory=$true)]
        [IO.FileInfo]$Path,
        [parameter(Mandatory=$true)]
        [ValidateSet("ProductCode","ProductVersion","ProductName")]
        [string]$Property
        )
    try {    
        $WindowsInstaller = New-Object -ComObject WindowsInstaller.Installer    
        $MSIDatabase = $WindowsInstaller.GetType().InvokeMember("OpenDatabase","InvokeMethod",$Null,$WindowsInstaller,@($Path.FullName,0))    
        $Query = "SELECT Value FROM Property WHERE Property = '$($Property)'"    
        $View = $MSIDatabase.GetType().InvokeMember("OpenView","InvokeMethod",$null,$MSIDatabase,($Query))    
        $View.GetType().InvokeMember("Execute", "InvokeMethod", $null, $View, $null)    
        $Record = $View.GetType().InvokeMember("Fetch","InvokeMethod",$null,$View,$null)    
        $Value = $Record.GetType().InvokeMember("StringData","GetProperty",$null,$Record,1)    
        return $Value
        } 
    catch {    
        Write-Output $_.Exception.Message
        }
    }

Diese Informationen können Installationen und Deinstallationen von MSI’s im Bereich von Software Deployment eine deutliche Erleichterung bedeuten.

ConfigMgr 2012: Schell mal den Last Logon anschauen

SystemCenter Logo

Ganz rudimentär. Einfach Computer Name eingeben und Last Logged on User und Timestamp bekommen.

Alle Felder befinden sich in der selben View, somit für ein ganz einfaches Resultat auch keine JOINS.

select 
    SYS.Netbios_Name0 AS [Computer Name],
	SYS.Last_Logon_Timestamp0 AS [Last Logon Timestamp],
	SYS.User_Name0 AS [Last Logged on User]
from v_R_System AS SYS
where SYS.Netbios_Name0 like 'MachineNumber'

Das lässt sich natürlich auch ganz schön als SSRS Report verwirklichen mit einem Parameter Eingabefeld.

Powershell: Computer soll sich selbst zur einer AD Gruppe hinzufügen

Wenn das Active Directory nicht manuelle OU’s für Desktops und Laptops hat, die auch noch akribisch gepflegt werden, gibt es hin und wieder die Notwendigkeit die Computer der Einen oder Anderen Benutzergruppe, also die Rechner der Laptop-Anwender bzw. Desktop Anwender separat zu bedienen. Der Microsoft Configuration Manager macht das recht einfach möglich. Nun kann ich more

ConfigMgr 2012: Paket Source Pfad

SystemCenter Logo

Mit folgender SQL Query können alle Pakete mit einem definierten Sub-String gelistet werden:

select distinct
    PKG.PackageID,
	PKG.Name,
	PKG.Description,
	PKG.PkgSourcePath
from v_Package AS PKG
where PKG.PkgSourcePath LIKE '%path sub string%'

Dies kann bei einer Source Pfad Migration nützlich sein. Vorsicht beim Ändern des Paket Source Pfad, da damit automatisch eine Replikation des Paketes angestossen wird. Bei der Nutzung von zeitlichen Replikations-Einschränkungen wird damit ein Paket, das eventuell auch in einer Task Sequenz referenziert ist nicht verfügbar. Die Folge ist, dass Installationen nicht gestartet werden können bzw. auch Task Sequenzen an dieser Stelle scheitern