Sichere Passwörter

Wir kennen das alle. Ein Passwort für EMail, Computer, PIN fürs Handy, PIN für die Data-Card im Tablet, WLAN Passwort, Netbanking, Amazon Shop….. etc. Die Liste an Logins ist schier endlos und die Variationen von Passwörtern und PIN Codes für jeden einzelnen User überschaubar einfach. Klar. Wer will sich 30 verschiedene Logins merken? Und wer more

Powershell: Datum der letzen Installation des Betriebssystems / Letzter Neustart

Sehr einfach rauszufinden: Das Datum / Uhrzeit der letzten Installation des Windows Betriebssystems.

$IsDate = Get-WmiObject -class win32_operatingSystem
$IsDate.ConvertToDateTime($IsDate.InstallDate)

Diese Information hilft beim Einschätzen wie lange der Rechner schon auf dem entsprechenden Build läuft.

Analog können natürlich weitere Infos aus der selben WMI Klasse ausgelesen werden, wie zum Beispiel das letzte Datum / Uhrzeit eines Neustarts.

$LastBoot = Get-WmiObject -class win32_operatingSystem
$LastBoot.ConvertToDateTime($LastBoot.LastBootUpTime)

Pendente Neustarts, verursacht durch Software Updates, Software Installationen oder Windows Updates können seltsame Verhalten hervorrufen. Immerhin werden ja auch Module, Dateien und Bibliotheken verändert, welche möglicherweise gerade in Nutzung sind.

 

Microsoft & Google & Apple

Wie kann ich alle drei Konzerne einfach unter einen Hut bringen?

Microsoft schafft es offensichtlich doch mit allen zu kooperieren. Trotzdem schräg, wenn ich auf einer Microsoft Website ein iOS Device mit einer Google App paire 🙂

MS_Google_Apple

Für alle die diese Seite nicht kennen: Es handelt sich um das Microsoft Volume Licensing Portal. Um einen Rechner dauerhaft für die Seite als vertrauenswürdig zu koppeln kann über ein QR-Code ein Zahlencode zum Pairen erstellt werden.

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

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

MSI mit editieren

orca logo

Oft ist es hilfreich zu wissen, was eine MSI macht, welche Eigenschaften hinterlegt sind, eventuell auch Anpassungen vorzunehmen.

Hierzu gibt es ein “alt”-bewährtes Tool: Orca

Download Orca hier

Oder direkt bei Microsoft als Komponente des Windows SDK Components for Windows Installer Developers. Auch einige weiterführende Informationen können hier gefunden werden

MSI basierende Projekte aus InstallShield exe Installer extrahieren

Sehr oft ist in der professionellen Software Verteilung ein extrahieren von InstallShield Installern notwendig.

Ein Verarbeiten der gepackten Einzelkomponenten ist manchmal einfacher und oft Leistungsstärker. Auch der Funktionsumfang einer Installation kann dadurch angepasst werden. Es können einer extrahierten MSI aus einem InstallShield setup.exe eventuell einfacher Parameter mitgegeben werden.

Das Extrahieren passiert mit folgendem Befehl:

setup.exe /s /x /b"C:\temp\targetfolder" /v"/qn"

 

Linux: Passwort von Benutzer ROOT ändern

Es gibt die Notwendigkeit das Passwort für den Benutzer ROOT ändern zu müssen. Seid vorsichtig mit dieser Änderung. Das ROOT Benutzer-Konto hat die UID 0, ist somit das erste Konto das bei der Installation erstellt wird und hat alle Rechte über das installierte System. Hacker können durch Herrausfinden des Passwortes für das Konto ROOT ein more

Powershell: Active Directory mit Powershell – Einfach und Wirkungsvoll

Active Directory (AD) kann sehr einfach mit Powershell verwaltet werden.

Ein paar einfach Kniffe gibts hier:

Alle AD Objekte ausgeben, die Computer-Objekte sind

Get-ADComputer –Filter {Name –Like "*"}

Alle AD Computer-Objekte die seit 60 Tagen inaktiv sind

Search-ADaccount -AccountInactive -Timespan 60 -ComputersOnly

oder etwas dynamischer um gleich in einer Funktion weiter zu verwenden

$days = 60
$lastLogon = (get-date).adddays(-$days).ToFileTime()
Get-ADComputer -filter {lastLogonTimestamp -gt $lastLogon}

Deaktivierte Computer-Objekte löschen (Achtung! Vorsicht beim Löschen!)

Search-ADAccount -AccountDisabled -ComputersOnly | 
    Sort-Object | 
    Remove-ADComputer

Deaktivierte Computer-Objekte einer spezifischen OU löschen (Achtung! Vorsicht beim Löschen!)

Search-ADAccount -AccountDisabled -Searchbase "OU=OU-Name,DC=Domain,DC=Com" -ComputersOnly | 
    Sort-Object | 
    Remove-ADComputer

 

Weitere CMDlets werde ich noch hinzufügen.

Cookies help us deliver our services. By using our services, you agree to our use of cookies. More Info | Close