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

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

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.

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.

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

ConfigMgr 2012: Liste für Pakete ohne Deployment

SystemCenter Logo

Ca. ein Jahr nach der Migration der Pakete von ConfigMgr 2007 nach ConfigMgr 2012 ist es Zeit für einen Rückblick auf den Paket-Datenstand. In kurzer Zeit fand ich heraus, dass viele Paket noch ohne Deployment einfach so im System herumgeister, Speicherplatz verbrauchen und nichts nützen.

Kurzum: Zeit für einen Clean-Up ungebrauchter Pakete.

Nun braucht nicht jedes Paket ein Deployment. Pakete aus Task-Sequenzen sind solche Ausnahmen. Reports die das alles schön aussortieren sind ganz nett. Ich bevorzuge eine einfach Query um diese dann Nach belieben in Excel weiter zu verarbeiten:

select 
    PKG.PackageID,
	PKG.Name AS "Package Name",
	PKG.Manufacturer,
	PKG.Description,
	PKG.PkgSourcePath,
	PKG.SourceDate,
	PKG.LastRefreshTime,
	ADV.AdvertisementName,
	TSP.Name AS "TS-Name"
from
	v_Package AS PKG
LEFT JOIN v_Advertisement AS ADV ON PKG.PackageID = ADV.PackageID
LEFT JOIN v_TaskSequencePackage AS TSP ON PKG.PackageID = TSP.PackageID

ConfigMgr2012: Collection Query: Alle Devices mit spezifischer Datei

SystemCenter Logo

Abhängig davon welche Dateien in ConfigMgr2012 inventarisiert sind können diese natürlich auch für automatische befüllte Collections verwendet werden.

Mit folgender WQL Query können diese gesammelt werden:

select 
    SMS_R_SYSTEM.ResourceID,
    SMS_R_SYSTEM.ResourceType,
    SMS_R_SYSTEM.Name,
    SMS_R_SYSTEM.SMSUniqueIdentifier,
    SMS_R_SYSTEM.ResourceDomainORWorkgroup,
    SMS_R_SYSTEM.Client 
from 
    SMS_R_System inner 
join 
    SMS_G_System_SoftwareFile 
    on SMS_G_System_SoftwareFile.ResourceID = SMS_R_System.ResourceId 
inner join 
    SMS_G_System_OPERATING_SYSTEM 
    on SMS_G_System_OPERATING_SYSTEM.ResourceID = SMS_R_System.ResourceId 
where 
    SMS_G_System_SoftwareFile.FileName = "FileName" and SMS_G_System_OPERATING_SYSTEM.Caption not like "%Server%" 
order by 
    SMS_R_System.NetbiosName

Mit der Kondition:

SMS_G_System_OPERATING_SYSTEM.Caption not like “%Server%

können weiteres Devices mit Server-OS ausgeschlossen werden. Dies hilft bei der Isolierung der Client Devices.

ConfigMgr2012: Failed Deployment

SystemCenter Logo

Immer wieder kommt es vor. dass Deployments nicht erfolgreich laufen. Hierfür gibt es mehrere Gründe: Download fehlgeschlagen Zeitüberschreitung bei der Installation Unerwarteteter Neustart während der Installation Hash-Mismatch / Content-Mismatch etc. Zwar sollte das Deployment bei richtiger Konfiguration die fehlerhaften Installationenen noch einmal antriggern, das kann aber einige Zeit in Anspruch nehmen. Ein manuelles Abfangen dieser more

SQL Abfrage per Powershell

Sehr nützliche Funktion um Queries auf einer SQL Datenbank laufen zu lassen:

function Invoke-SQL 
{
    param(
    [string] $dataSource = 'Server-Name',
    [string] $database = "Database-Name",
    [string] $sqlCommand = $(throw "Please specify a query.")
        )
                                          
    $connectionString = "Data Source=$dataSource; " + 
                    "Integrated Security=SSPI; " + 
                    "Initial Catalog=$database"
                                                                      
    $connection = new-object system.data.SqlClient.SQLConnection($connectionString)
    $command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
    $connection.Open()
                                                                                  
    $adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
    $dataset = New-Object System.Data.DataSet
    $adapter.Fill($dataSet) | Out-Null
                                                                                              
    $connection.Close()
    $dataSet.Tables
                                                                                                      
}