know-how:windows
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
know-how:windows [2024/02/01 15:02] – [Whitelist Absender] cc | know-how:windows [2024/02/21 17:52] – [reportIntuneDevices.php] cc | ||
---|---|---|---|
Zeile 694: | Zeile 694: | ||
... | ... | ||
</ | </ | ||
+ | ====== reportMissingNotebooksOwnerBased.php ====== | ||
+ | * Analog zu **reportMissingNotebooks.php** nur um die Schüler der 3. und 4. Klasse ergänzt | ||
+ | * **Achtung** - Da die API bei 500 Devices deckelt muss ab 500 eine andere Lösung gefunden werden / Ermittle alle betroffenen User über LDAP im AD und ermittle für jeden einzelnen User die Zugehörigkeit zu einem registrierten Gerät | ||
+ | * **Update** - es ist doch möglich mehr als 500 Devices zu erhalten mit pagination kann zum nächsten **Link** geblättert werden - danke an Herrn Christoph Pachler | ||
+ | |||
+ | < | ||
+ | <?php | ||
+ | |||
+ | $server = " | ||
+ | //domain user to connect to LDAP | ||
+ | $user = " | ||
+ | //user password | ||
+ | $passwd = " | ||
+ | |||
+ | $dn = array(0=>" | ||
+ | |||
+ | $classesRegex="/ | ||
+ | |||
+ | $search=" | ||
+ | |||
+ | |||
+ | $errUser=0; | ||
+ | $countAll=0; | ||
+ | $okUser=0; | ||
+ | |||
+ | |||
+ | |||
+ | echo "All Users that haven' | ||
+ | |||
+ | for ($j=0; $j< | ||
+ | { | ||
+ | $ds=ldap_connect($server); | ||
+ | | ||
+ | |||
+ | $sr=ldap_search($ds, | ||
+ | |||
+ | $data = ldap_get_entries($ds, | ||
+ | |||
+ | |||
+ | // $countAll+=$data[" | ||
+ | |||
+ | for ($i=0; $i< | ||
+ | { | ||
+ | |||
+ | //echo ($data[$i][" | ||
+ | //echo ($data[$i][" | ||
+ | //echo ($data[$i][" | ||
+ | |||
+ | $distinguishedName=strtolower($data[$i][" | ||
+ | $userPrincipalName=strtolower($data[$i][" | ||
+ | $department=strtolower(@$data[$i][" | ||
+ | |||
+ | |||
+ | $regMatch=preg_match($classesRegex, | ||
+ | |||
+ | if($regMatch !== 0) | ||
+ | { | ||
+ | |||
+ | if(!isset($data[$i][" | ||
+ | { | ||
+ | echo "FAIL - User: " | ||
+ | $errUser++; | ||
+ | } | ||
+ | |||
+ | |||
+ | $countAll++; | ||
+ | // | ||
+ | //echo $distinguishedName." | ||
+ | //echo $department." | ||
+ | |||
+ | $notFound=true; | ||
+ | |||
+ | $intuneDevices=getIntuneDevices($userPrincipalName); | ||
+ | |||
+ | # | ||
+ | sleep(rand(3, | ||
+ | |||
+ | for ($k=0; $k< | ||
+ | { | ||
+ | |||
+ | /* | ||
+ | [deviceOwnership] => Personal | ||
+ | [deviceVersion] => 2 | ||
+ | [displayName] => LAPTOP | ||
+ | [domainName] => | ||
+ | [enrollmentProfileName] => | ||
+ | [enrollmentType] => UserEnrollment | ||
+ | [externalSourceName] => | ||
+ | [isCompliant] => 1 | ||
+ | [isManaged] => 1 | ||
+ | [isRooted] => | ||
+ | [managementType] => MDM | ||
+ | [manufacturer] => LENOVO | ||
+ | |||
+ | |||
+ | */ | ||
+ | |||
+ | if($intuneDevices[$k][" | ||
+ | { | ||
+ | $notFound=false; | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | if($notFound) | ||
+ | { | ||
+ | |||
+ | echo "FAIL - User: " | ||
+ | $errUser++; | ||
+ | |||
+ | } | ||
+ | else | ||
+ | { | ||
+ | $okUser++; | ||
+ | } | ||
+ | |||
+ | // Device Details: print_r($intuneDevices[--$k]); | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | // close connection | ||
+ | | ||
+ | } | ||
+ | |||
+ | echo " | ||
+ | echo "All user objects found: " | ||
+ | echo "All user objects ok: " | ||
+ | echo " | ||
+ | printf(" | ||
+ | echo " | ||
+ | echo "Regex Classroom check: " | ||
+ | echo " | ||
+ | print_r($dn); | ||
+ | |||
+ | echo " | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | function getIntuneDevices($userUPN) | ||
+ | { | ||
+ | |||
+ | $curl_token= curl_init(); | ||
+ | //Azure AD Administration: | ||
+ | // | ||
+ | // Details: https:// | ||
+ | curl_setopt($curl_token, | ||
+ | curl_setopt($curl_token, | ||
+ | curl_setopt($curl_token, | ||
+ | curl_setopt($curl_token, | ||
+ | curl_setopt($curl_token, | ||
+ | |||
+ | |||
+ | |||
+ | $json_response=curl_exec($curl_token) or die(" | ||
+ | |||
+ | curl_close($curl_token); | ||
+ | |||
+ | |||
+ | $access_array=json_decode($json_response, | ||
+ | |||
+ | // | ||
+ | |||
+ | |||
+ | if(!isset($access_array[" | ||
+ | { | ||
+ | die(" | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | $curl_token= curl_init(); | ||
+ | |||
+ | |||
+ | curl_setopt($curl_token, | ||
+ | curl_setopt($curl_token, | ||
+ | curl_setopt($curl_token, | ||
+ | curl_setopt($curl_token, | ||
+ | curl_setopt($curl_token, | ||
+ | |||
+ | $json_response=curl_exec($curl_token) or die(" | ||
+ | |||
+ | curl_close($curl_token); | ||
+ | |||
+ | // | ||
+ | |||
+ | $intune_array=json_decode($json_response, | ||
+ | |||
+ | $intune_array=$intune_array[" | ||
+ | |||
+ | |||
+ | return $intune_array; | ||
+ | |||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | ?> | ||
+ | |||
+ | </ | ||
+ | |||
====== reportMissingNotebooks.php ====== | ====== reportMissingNotebooks.php ====== | ||
* Analog zu **reportRiskUsers.php** | * Analog zu **reportRiskUsers.php** | ||
* Finde alle Schüler der 1. und 2. Klasse die kein Notebook enrolled haben / zB: als Cron Job | * Finde alle Schüler der 1. und 2. Klasse die kein Notebook enrolled haben / zB: als Cron Job | ||
* Im LDAP Attribut **Department** befindet sich die Klassenbzeichnung zB: 2E | * Im LDAP Attribut **Department** befindet sich die Klassenbzeichnung zB: 2E | ||
+ | * **Achtung** Graph API deckelt bei 500 Devices d.h. ab 500 Notebooks muss eine andere Lösung gefunden werden | ||
+ | * **Update** Es ist doch möglich mehr als 500 Devices zu erhalten - es muss in den Results geblättert werden über den nächsten **Link** -> ** if(isset($intune_array[" | ||
+ | | ||
< | < | ||
Zeile 891: | Zeile 1102: | ||
* Analog zu **reportRiskUsers.php** | * Analog zu **reportRiskUsers.php** | ||
* Auszug aus dem relevanten Code für https:// | * Auszug aus dem relevanten Code für https:// | ||
+ | * **Update** bei mehr als 500 Geräten muss geblättert werden **nextLink** | ||
* Es sollen alle im Intune registrierten Geräte gezogen werden | * Es sollen alle im Intune registrierten Geräte gezogen werden | ||
< | < | ||
Zeile 900: | Zeile 1112: | ||
... | ... | ||
+ | $devicesLink=" | ||
+ | $intune_all=array(); | ||
+ | while(strlen($devicesLink)) | ||
+ | { | ||
- | $curl_token= curl_init(); | + | $curl_token= curl_init(); |
- | // https:// | + | // https:// |
- | // | + | // |
- | curl_setopt($curl_token, | + | curl_setopt($curl_token, |
- | curl_setopt($curl_token, | + | curl_setopt($curl_token, |
- | curl_setopt($curl_token, | + | curl_setopt($curl_token, |
- | curl_setopt($curl_token, | + | curl_setopt($curl_token, |
- | curl_setopt($curl_token, | + | curl_setopt($curl_token, |
- | $json_response=curl_exec($curl_token) or die(" | + | $json_response=curl_exec($curl_token) or die(" |
- | curl_close($curl_token); | + | curl_close($curl_token); |
- | // | + | // |
- | $intune_array=json_decode($json_response, | + | $intune_array=json_decode($json_response, |
+ | |||
+ | if(!isset($intune_array[" | ||
+ | { | ||
+ | $devicesLink="" | ||
- | $intune_array=$intune_array[" | + | } |
+ | else | ||
+ | { | ||
+ | | ||
+ | } | ||
- | print_r($intune_array); | ||
+ | $intune_array=$intune_array[" | ||
+ | |||
+ | $intune_all=array_merge($intune_all, | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | return $intune_all; | ||
+ | |||
+ | } | ||
/* | /* | ||
Zeile 4792: | Zeile 5027: | ||
===== Whitelist Absender ===== | ===== Whitelist Absender ===== | ||
* **Achtung** Befindet sich aktuell (2024) unter: https:// | * **Achtung** Befindet sich aktuell (2024) unter: https:// | ||
- | * **Antispam | + | * **Antispam-Eingangsrichtlinie** -> dort lassen sich Absendeadressen hinzufügen |
{{: | {{: |
know-how/windows.txt · Zuletzt geändert: 2024/02/26 10:30 von cc