HP Access Control Secure Pull Printing mit Active Directory abgleichen
Bei einem Kunden nutzen wir in der neuen Druckerlandschaft von HP unter anderem das „HP Access Control (HPAC) Secure Pull Printing“ für den sicheren Druck per userspezifischer Smartcard oder Token.
Wer aber kontrolliert ob alle Anwender, die in der HPAC Datenbank angelegt sind im AD (Active Directory) überhaupt noch bestehen oder aktiv sind?
Für den Fall, dass ein Mitarbeiter das Unternehmen verlässt, gibt es zwar schon Mechanismen, das der Useraccount im AD automatisch deaktiviert wird, im HPAC wäre das dann allerdings eine Datenleiche.
Sobald das HR (Human Resources) Abteil den ehemaligen Mitarbeiter im SAP als „ausgeschieden“ markiert, gibt SAP diese Information an das IDM Tool, in diesem Fall dem von „Novell“ weiter und dieses deaktiviert den Anwender im AD.
Jetzt haben wir noch andere Anwendungen, wie das HPAC (HP Access Control), das nicht mit einem IDM Tool kompatibel ist. Hierfür habe ich ein kleines Script geschrieben, das als automatischer Task täglich in der Nacht ausgeführt wird.
Hierbei wird ein Export der aktuellen HPAC-Datenbank gemacht und die darin enthaltenen User mit dem AD abgeglichen.
Ist ein Useraccount nun als „deaktiviert“ markiert oder nicht mehr existent, wird dieser aus dem Export gelöscht, so das später nach dem Abgleich nur noch die aktiven Anwender reimportiert werden.
Das folgende Powershell Script als *.ps1 abspeichern und mit einem Useraccount, der die notwendigen Recht besitzt starten.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | Import-Module ActiveDirectory # # HPAC < -> AD Abgleich # © 2018 by Patrick Boschert - www.boschert-consulting.com # cls # # Variablen Deklarierung # $NewPath = "C:\HPUserImport\NewImport" $NewPathOK = "C:\HPUserImport\NewImport\Finished" $HPExportcsv = "C:\HPUserImport\User_HP.csv" $HPExportcsvnew = "C:\HPUserImport\NewImport\User_HP_$(get-date -f yyyy-MM-dd).csv" $HPExportcsvnewrenamed = "C:\HPUserImport\NewImport\User_HP_$(get-date -f yyyy-MM-dd)_$(get-date -f HH.mm.ms).csv" $HPExporttemp = "C:\HPUserImport\NewImport\User_HP_tmp.csv" $DeletetUserCSV = "C:\HPUserImport\NewImport\Finished\Deleted_User_$(get-date -f yyyy-MM-dd).csv" $ImportUserEXE = "C:\Program Files\HP\HP Access Control\Tools\ImportUser.exe" $ImportUserEXEupdateHP = "-update $HPExportcsvnew" $ImportUserEXEexportHP = "-export $HPExportcsv" $DeleteUserEXEupdate = "-deleteuser" $DeleteLogAfter = -10 # # Prüfen ob Ordner "NewImport" & "NewImport\Finished" vorhanden. # If(!(Test-Path $NewPath)) { New-Item -type Directory -Force -Path $NewPath } If(!(Test-Path $NewPathOK)) { New-Item -type Directory -Force -Path $NewPathOK } ########################################################################################################### # # Export der aktuellen User aus der HP-Datenbank # Start-Process -FilePath $ImportUserEXE $ImportUserEXEexportHP # # Prüfen ob Import-Prozess noch offen, wenn NEIN, mache weiter # $ImportProcess = Get-Process ImportUser if ($ImportProcess) { $ImportProcess.WaitForExit() "Userimport wurde beendet!" # # Löschen der aktuellen HP-Datenbank # Start-Process -FilePath $ImportUserEXE $DeleteUserEXEupdate # # Prüft ob alle User aus dem Export der HP-SQL-Datenbank im AD noch aktiv sind. # Wenn NEIN, dann löschen. # Import-Csv $HPExportcsv | foreach { $a = ($_.user) $b = ($_.alias) $c = ($_.card) $d = ($_.code) $e = ($_.rights) $f = ($_.fullname) $g = ($_.domain) $h = ($_.mail) $i = ($_.department) $deletedate = $(get-date -f yyyy-MM-dd) $searcher = new-object DirectoryServices.DirectorySearcher([ADSI]””) $searcher.filter = “(&(objectClass=user)(sAMAccountName= $a))” $founduser = $searcher.findOne() $founduser.Properties.useraccountcontrol $value = $founduser.Properties.useraccountcontrol if ($Value -eq 514 -or $Value -eq 546 -or $Value -eq 66050 -or $Value -eq 66082 -or $Value -eq 262658 -or $Value -eq 262690 -or $Value -eq 328194 -or $Value -eq 328226) { $outputdeactivated = “Account " + $a + " ist nicht aktiviert” Write-Output $outputdeactivated $deleteduser = $a + " deleted at " + $deletedate add-content $DeletetUserCSV $deleteduser } if ($Value -eq 512 -or $Value -eq 544 -or $Value -eq 66048 -or $Value -eq 66080 -or $Value -eq 262656 -or $Value -eq 262688 -or $Value -eq 328192 -or $Value -eq 328224) { $outputactivated = “Account " + $a + " ist aktiviert” Write-Output $outputactivated $activateduser = $a + "," + $b + "," + $c + "," + $d + "," + $e + "," + $f + "," + $g + "," + $h + "," + $i add-content $HPExporttemp $activateduser } } $delete = import-csv $HPExporttemp -header user,alias,card,code,rights,fullname,domain,mail,department | export-csv -path $HPExportcsvnew -NoTypeInformation # # Anführungszeichen in CSV werden entfernt # (Get-Content $HPExportcsvnew) | Foreach-Object {$_ -replace """", ""} | Set-Content $HPExportcsvnew # # Starte Reimport der aktualisierten Datenbank von HP # Start-Process -FilePath $ImportUserEXE $ImportUserEXEupdateHP } else { "Userimport war nicht gestartet!" } # # Prüfen ob Import-Prozess beenden, wenn Ja, verschiebe die HP-CSV # $ImportProcess = Get-Process ImportUser if ($ImportProcess) { $ImportProcess.WaitForExit() "Userimport wurde beendet!" Rename-Item -Path $HPExportcsvnew -NewName $HPExportcsvnewrenamed Move-Item $HPExportcsvnewrenamed $NewPathOK } else { "Userimport war nicht gestartet!" } # # Lösche nicht mehr benötigte Daten + Logs älter als 10 Tage # if(Test-Path $NewPathOK\*.csv) { Get-ChildItem -Path $NewPathOK\*.csv -recurse | Where-Object {$_.LastWriteTime -lt (get-date).adddays($DeleteLogAfter)} | Remove-Item -Force } if(Test-Path $HPExporttemp) { Remove-Item $HPExporttemp -Force } if(Test-Path $HPExportcsv) { Remove-Item $HPExportcsv -Force } |