Warum nutzt du nicht gleich Powershell für die Abfrage - wenn ich das richtig interpretiere, willst du die Gruppenzugehörigkeit für 2 Member vergleichen. Kommt nur drauf an, ob du die Übereinstimmungen oder Unterschiede suchst.
Komplexe PS-Skripte lassen sich aus AutoIt heraus super ausführen (wie ich nach zweitägigem K(r)ampf endlich herausgefunden habe). ![]()
Spoiler anzeigen
AutoIt
$sRet = _PowerShell_Run( _
'[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")' & @CRLF & _
'$MB = [System.Windows.Forms.MessageBox]' & @CRLF & _
'$out = ""' & @CRLF & _
'$out += "Hallo"' & @CRLF & _
'$out += " Welt!"' & @CRLF & _
'$result = $MB::Show("$out","WPS >> AutoIt",0)' & @CRLF _
)
Func _PowerShell_Run($_sCmd, $_iOutput=0)
Local Const $sKey32 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell"
Local Const $sKey64 = "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell"
Local Static $sKey = @CPUArch = 'X64' ? $sKey64 : $sKey32
Local Static $sPSexe = RegRead($sKey, 'Path')
Local $sPathTMP = StringFormat('%s\__%s%s%s%s%s%s%s.ps1', @TempDir, @YEAR, @MON, @MDAY, @HOUR, @MIN, @SEC, @MSEC)
Local $fH = FileOpen($sPathTMP, 2+8+128)
FileWrite($fH, $_sCmd)
FileClose($fH)
Local $sRun = StringFormat('%s -ExecutionPolicy UnRestricted -File %s', $sPSexe, $sPathTMP)
Local $iPID = Run($sRun, @ScriptDir, @SW_HIDE, 0x2)
If $_iOutput = 1 Then
Local $sOut
Do
$sOut &= StdoutRead($iPID)
Until @error
StdioClose($iPID)
Else
While ProcessExists($iPID)
Sleep(350)
WEnd
EndIf
FileDelete($sPathTMP)
Return ($_iOutput = 1 ? $sOut : 1)
EndFunc
Alles anzeigen
Edit: zum Vergleich existiert eine eigene AD-Funktion: Compare two users groups membership