HP Access Control Secure Pull Printing mit Active Directory abgleichen

 in Entwicklung

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
}



Schreibe deinen Suchbegriff und drücke Enter oder auf die Lupe