Hallo allerseits,
nach längerer Pause melde ich mich wieder mal zu Wort mit einem äusserst hartnäckigem Problem. Es sollen über verrschiedene Button bestimmte Powershellbefehle abgearbeitet werden, diese zunächst ins Temp geschrieben werden. Leider weigert sich das PS so zu arbeiten, das merkwürdige, vor ein paar Tagen, hatte es noch funktioniert. Vielleicht sieht ja jemand was da falsch eingebunden wurde, würde mich freuen, unten steht der PS Fehler der zurückgegeben wird. Der Befehl selber einzeln in PS funktioniert jeweils
lg
Casi
Aufruf im Mainloop:
AutoIt
Case $AllDomPCButton
Local $psCommand = 'Get-ADComputer -Filter "OperatingSystem -like ''*Windows 10*''" | Select-Object -ExpandProperty Name'
ConsoleWrite("Generierter PowerShell-Befehl: " & $psCommand & @CRLF)
ShowDomPCs($psCommand, 'alldompc.txt')
Case $AllDomPCsWithAButton
Local $psCommand = 'Get-ADComputer -Filter {Name -like "A*"} | Select-Object -ExpandProperty Name'
ConsoleWrite("Generierter PowerShell-Befehl: " & $psCommand & @CRLF)
ShowDomPCs($psCommand, 'alldompcA.txt')
die Funktion die dan aufgerufen wird:
AutoIt
Func ShowDomPCs($psCommand, $filename)
Global $username, $password
Local $outputFilePath = @TempDir & "\" & $filename
; Zeige den Splash-Screen
Local $hSplash = ShowSplashBox("Bitte warten...")
; PowerShell-Befehl zum Speichern der Ergebnisse
Local $fullPsCommand = 'powershell.exe -ExecutionPolicy Bypass -Command "' & $psCommand & ' | Out-File -FilePath "' & $outputFilePath & '" -Encoding utf8"'
; PowerShell-Befehl ausführen und die Ergebnisse anzeigen
Local $iResult = RunWait(@ComSpec & ' /c ' & $fullPsCommand, "", @SW_HIDE)
Sleep(3000)
; Schließe den Splash-Screen
CloseSplashBox($hSplash)
If FileExists($outputFilePath) Then
Local $scriptDir = @ScriptDir
FileCopy($outputFilePath, $scriptDir & "\" & $filename, 1)
$hostFilePath = $scriptDir & "\" & $filename
$ComputerList = FileRead($hostFilePath)
$ComputerArray = StringSplit($ComputerList, @CRLF, 1)
If $ComputerArray[1] = "" Then _ArrayDelete($ComputerArray, 1)
; Sortiere die Liste
_ArraySort($ComputerArray, 0, 0, 0, 1)
; Lösche den Inhalt des Edit-Feldes
GUICtrlSetData($Edit1, "")
; Füge die sortierte Liste zum Edit-Feld hinzu
For $i = 1 To UBound($ComputerArray) - 1
GUICtrlSetData($Edit1, $ComputerArray[$i] & @CRLF, 1)
Next
Else
MsgBox(48, "Fehler", "Die Datei '" & $filename & "' wurde nicht erstellt.")
EndIf
EndFunc
Alles anzeigen
PS Meldung:
Code
Get-ADComputer : Fehler beim Analysieren der Abfrage: "OperatingSystem -like Windows 10*" Fehlermeldung: "syntax
error" an folgender Position: "23".
In Zeile:1 Zeichen:1
+ Get-ADComputer -Filter 'OperatingSystem -like Windows 10*' | Select-O ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Get-ADComputer], ADFilterParsingException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Micr
osoft.ActiveDirectory.Management.Commands.GetADComputer