1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Racer

Beiträge von Racer

  • JSON-UDF

    • Racer
    • 4. Oktober 2019 um 11:43

    Hallo!

    Ich scheitere an den JSON Files, egal was ich mache;( und bin schon etwas verzweifelt. Kurz zur Umgebenung: Ich lade per InetRead ein Json-File via REST-API von einem IPAM Server herunter. So weit so gut. Es wird mir auch korrekt im z.B.: Browser angezeigt. Für alle die nicht wissen was ein ipam ist: Ein DHCP/DNS/Netzwerkmanagment Verwaltung.

    Jetzt möchte ich aus den Output z.B. alle IPAdressen Aliasnamen und ganz wichtig den REF String herausgebkommen.

    Für meine "Gehversuch" habe ich ein Script hier aus dem Forum genommen und versucht diese zu verwenden. Es endet aber immer damit das ich nur einen Fehler bekomme:

    "D:\Doc\Autoit\test_ipam.au3" (64) : ==> Variable must be of type "Object".:

    Local $aCards[$vTmp.Count]

    Local $aCards[$vTmp^ ERROR

    Info: Den Output aus dem Json-File habe ich alle @LG und " " entfernt. Ebenso die Klammern [ und ] am Anfang und am Ende. Da es bei keinen der Script hier vorgekommen ist, denke ich das gehört nicht dazu. Der Rest ist ein der Variable als "Input" zusammen gestellt!

    Testscript:

    C
    #include <JSON.au3>
    #include <Array.au3>
    
    $sJSONTest = '{"_ref":"record:host/ZG5zLmhvc3QkLl9kZWZhdWx0LmF0Lmd2Lm1hZ3dpZW4ub3NkLm5iMzU2ODAx:nb12345.meins.at/default","aliases":["vpnchecker.meins.at"],"ipv4addrs":[{"_ref":"record:host_ipv4addr/ZG5zLmhvc3RfYWRkcmVzcyQuX2RlZmF1bHQuYXQuZ3YubWFnd2llbi5vc2QubmIzNTY4MDEuMTAuMTU1LjEwLjE0OS4:10.10.10.10/nb12345.meins.at/default","configure_for_dhcp":true,"host":"nb12345.meins.at","ipv4addr":"10.10.10.12","mac":"00:00:00:dd:e0:7c"}],"name":"nb12345.meins.at","view":"default"}'
    
    Local $oObject = _JSON_Parse($sJSONTest)
    
    $vTmp = _JSON_Get($oObject, "._ref")    ;Egal was ich hier eingebe: Es kommt der oben beschriebene Fehler
    
    Local $aCards[$vTmp.Count]
    For $i = 0 To $vTmp.Count - 1
        $aCards[$i] = $vTmp.Keys[$i]
    Next
    
    _ArrayDisplay($aCards)
    Alles anzeigen

    Ich hoffe ihr könnt mir helfen!

    lg

    Racer

  • Windows-Aufgabenplanung - per schtasks.exe einen Task erstellen und abfragen

    • Racer
    • 27. August 2019 um 14:48
    Zitat von Professor Bernd

    Hallo Racer, die Möglichkeiten der XML-Files habe ich vor kurzem auch entdeckt.

    Hier im Thread geht es ja um die schtasks.exe, deshalb dachte ich am Anfang, dass das nichts miteinander zu tun hätte. Nach dem Lesen von vielen, vielen verstreuten Infos habe ich gesehen, dass man die XML-Files auch mit der schtasks.exe handhaben kann. Also: Gute Sache! Danke für den Hinweis! :)

    Water hat geschrieben, dass der Import/Export bereits angedacht ist. Damit ist nicht die schtasks.exe gemeint, sondern water schreibt an einer neuen UDF mit COM-Objekten. Es gibt Infos und eine Umfrage dazu, die sehr interessant sind.

    Finden und abstimmen (wenn du willst) kannst du das hier: Neue, aktualisierte UDF für den Windows Task Scheduler?

    Gruß,

    Bernd.

    Alles anzeigen

    Hallo!

    Ja, Water spielt in einer anderen Liga. Ich verwende seine AD-UDF, die ist einfach genial!

    Ich mag es persönlich lieber wenn alles in AutoIT ist und nicht das ich immer auf die externen Tools zurückgreifen muss. Mit dem Taskplaner geht es ja noch, da er in jeder Windows Version vorhanden ist. Schöner ist es auf jedenfall einen sauberen Code zu haben.

    Noch ein Tipp: Task mit der GUI erstellen, dann das XML mit z.B.: Notepad++ editiern. Hier kann man auch einstellen das ein Task z.B.: nach 1 Min. schon beendet werden soll, falls er scheitert oder das für 24 Stunden alle 5 Minuten der Task ausgeführt werden soll....also alles was die GUI nicht zulässt ;)

    lg

    Racer

  • Windows-Aufgabenplanung - per schtasks.exe einen Task erstellen und abfragen

    • Racer
    • 26. August 2019 um 13:20

    Hallo!

    Ich finde das Thema hier sehr interessant, da ich doch öffter auch Tasks benötigte die etwas vom Standard abweichen. Um z.B.: Tasks erstellen zu können die die GUI nicht zulässt bin ich übergegangen mit die XLM-Files selber zu schreiben. Hört sich wilder an als es ist!

    Wäre das für Dich ein Weg? XLM-schreiben und dann mit schtasks /create /XML <meinTask.xml>.... zu importieren?

    lg

    Racer

  • WinPESE

    • Racer
    • 13. August 2019 um 17:56

    Hallo!

    Ich kenne das Problem, da ich selbst viel unter WinPE arbeite und etliche installationsroutinen geschrieben habe!

    Du muss, wenn Du ein PE im 32Bit Modus hast, die AutoIT-Programme mit 32bit kompilieren (eh klar;)) und wenn Du PE x64 erstellst (auch wenn Du den Winbuilder verwendest der eine 64/32 Bit variante zulässt) muss Du die AutoIT-Programme als x64 laufen lassen. Warum ist das so? Micha_he hat es schon beschrieben: AutoIT 32bit Programm greift auf Syswow64 zu statt auf system32. Und hier liegt der Hund begraben.

    Es gibt ein paar Programme die sich dann ganz eigen verhalten z.B.: Coffee.exe ist so etwas. Unter x86 kein Problem und x64 will es nicht so richtig! AutoIT gehört auch dazu, aber hier gibt es die Option als x64 zu kompilieren und damit ist es gut:)

    lg

    Harald

  • QuickAccess Objekt

    • Racer
    • 11. Juli 2019 um 13:43

    Wow!

    Respekt! Ich bin sehr dankbar für Deine Hilfe!

    lg

    Racer

  • QuickAccess Objekt

    • Racer
    • 11. Juli 2019 um 06:33

    Guten Morgen!

    Ich stehe mal mit meinen Kenntnissen an und hoffe das Ihr mir weiterhelfen könnt! Folgendes versuche ich mit AutoIT zu lösen: Es soll unter Windows 10 eine "Verknüpfung" (ist eigentlich keine) unter dem Schnellzugriff (QuickAccess) erstellt bzw. gelöscht werden.

    Leider ist es nicht mehr so einfach wie unter Windows 7 wo man einfach einen Link im Profileordner hinterlassen hat :rolleyes:

    Nach ein bisschen suchen im Internet bin ich auf ein Powershellscript gestossen das zumindest Ordner anpinnen und lösen kann. Das würde mir schon reichen. Schöner wäre es wenn ich es direkt in AutoIT machen kann ohne den Umweg für die Powershell.

    Powershell:

    Code
    ################### 
    # Set-QuickAccess # 
    ################### 
    #Version: 2017-08-10.01 
    #Author: johan.carlsson@innovatum.se 
     
    <# 
     
    .SYNOPSIS 
    Pin or Unpin folders to/from Quick Access in File Explorer. 
     
    .DESCRIPTION 
    Pin or Unpin folders to/from Quick Access in File Explorer. 
     
    .EXAMPLE 
    .\Set-QuickAccess.ps1 -Action Pin -Path "\\server\share\redirected_folders\$env:USERNAME\Links" 
    Pin the specified UNC server share to Quick Access in File Explorer. 
     
    .EXAMPLE 
    .\Set-QuickAccess.ps1 -Action Unpin -Path "\\server\share\redirected_folders\$env:USERNAME\Links" 
    Unpin the specified UNC server share from Quick Access in File Explorer. 
     
    .NOTES 
    Thanks to the below sources for inspiration :) 
    https://blogs.technet.microsoft.com/heyscriptingguy/2013/04/26/use-powershell-to-work-with-windows-explorer/ 
    https://www.reddit.com/r/sysadmin/comments/6g5hz4/removing_pinned_quick_access_pins_via_powershell/ 
     
    .LINK 
    https://gallery.technet.microsoft.com/Set-QuickAccess-117e9a89 
     
    #> 
     
    [CmdletBinding()] 
    Param 
    ( 
        [Parameter(Mandatory=$true,Position=1,HelpMessage="Pin or Unpin folder to/from Quick Access in File Explorer.")] 
        [ValidateSet("Pin", "Unpin")] 
        [string]$Action, 
        [Parameter(Mandatory=$true,Position=2,HelpMessage="Path to the folder to Pin or Unpin to/from Quick Access in File Explorer.")] 
        [string]$Path 
    ) 
     
    Write-Host "$Action to/from Quick Access: $Path.. " -NoNewline 
     
    #Check if specified path is valid 
    If ((Test-Path -Path $Path) -ne $true) 
        { 
            Write-Warning "Path does not exist." 
            return 
        } 
    #Check if specified path is a folder 
    If ((Test-Path -Path $Path -PathType Container) -ne $true) 
        { 
            Write-Warning "Path is not a folder." 
            return 
        } 
     
    #Pin or Unpin 
    $QuickAccess = New-Object -ComObject shell.application 
    $TargetObject = $QuickAccess.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items() | where {$_.Path -eq "$Path"} 
    If ($Action -eq "Pin") 
        { 
            If ($TargetObject -ne $null) 
                { 
                    Write-Warning "Path is already pinned to Quick Access." 
                    return 
                } 
            Else 
                { 
                    $QuickAccess.Namespace("$Path").Self.InvokeVerb(“pintohome”) 
                } 
        } 
    ElseIf ($Action -eq "Unpin") 
        { 
            If ($TargetObject -eq $null) 
                { 
                    Write-Warning "Path is not pinned to Quick Access." 
                    return 
                } 
            Else 
                { 
                    $TargetObject.InvokeVerb("unpinfromhome") 
                } 
        } 
     
    Write-Host "Done"
    Alles anzeigen

    Leider kenne ich mich so gar nicht mit den Objekten aus, aber ich weiß das hier im Forum einige sehr kluge Köpfe gibt die so manches hervorgezaubert haben.

    Für Hilfe wäre ich sehr dankbar!

    lg

    Racer

  • PID des eigenen Programmes

    • Racer
    • 21. Mai 2019 um 13:52

    Danke!

    Ich habe es doch gewußt: Ich stehe doch am Schlauch...:S

    ein peinlicher Racer

  • PID des eigenen Programmes

    • Racer
    • 21. Mai 2019 um 13:45

    Hallo!

    Mein Problem: Ich habe ein kleines Programm (exe) geschrieben das als Task alle 5 Minuten läuft. Jetzt kommt es aber vereinzelt vor das diese nicht beendet wird (warum ist mir bekannt). Um den entgegenzuwirken ist der Task so eingestellt das nach 1 Stunde der Lauf beendet wird. Das ist aber die kürzeste Zeit die ich einstellen kann!

    Jetzt ist mir die Idee gekommen, mehrere Instanzen zuzulassen, aber das erste was abgefragt werden soll läuft schon ein Prozess. Dazu muss ich aber die eigene PID kennen. Gibt es da eine Möglichkeit diese festzustellen? Ich möchte nur sehr ungern über ein Lock-File oder dergleichen gehen.

    Mit Prozesslist und den "Namen" kann ich das nicht unterscheiden. Gibt es da noch etwas anderes?

    lg

    Racer

  • CmdLine Abfrage Werte Prüfen

    • Racer
    • 5. März 2019 um 12:14

    Mahlzeit!

    Das sind hier sehr interessante Ansätze wie man Parameter auswerten kann! :thumbup:

    Ohne das ich Eigenwerbung machen möchte: Ich habe vor einiger Zeit eine kleine Funktion für eine Parameterauswertung geschrieben: wenn Du möchtest: hier


    Vielleich hilft sie dir!

    lg

    Racer

  • MMC starten und Menüoption auswählen

    • Racer
    • 4. März 2019 um 14:07

    Hallo!

    Du hast die RSAT-Tools der AD-Userverwaltung...da gibt es ein "Suchen", aber nicht direkt in einer MMC, sondern erst im Snapin!

    Wenn Du nach einem AD-Objekt suchen möchtest (Benutzer, Computer,...) dann schaue dir mal für Autoit die Active-Directoy-UDF Active Directory Funktionen - Neue Version 1.4.11.0 freigegeben! an. Hier kannst Du nach Herzenslust Suche und alles sauber in AutoIT scripten!

    lg

    Racer

  • Vom Dateityp zur Dateiendung

    • Racer
    • 29. Januar 2019 um 11:51

    Hallo!

    Schau mal in die Registierung unter HKEY_CLASSES_ROOT. Dort hast Du alle Dateitype die Assoziiert werden...

    vielleicht ist es das was Du suchst!

    lg

    Racer

  • WMI: Alle Property's

    • Racer
    • 21. Dezember 2018 um 10:16
    Zitat von Andy

    Scriptomatic liefert dir alles was du brauchst fix und fertig. Ich habe seit Jahren keine einzige Zeile WMI-Abfragen "zu Fuß" erstellt, wozu auch?! Wenn es doch ein Script gibt, welches einwandfrei funktioniert...

    Du könntest das von Scriptomatic erstellte Script benutzen, und damit dein Problem sofort lösen.

    Dann könntest du hier fragen, wie Scriptomatic funktioniert und damit deinen persönlichen Level-up schaffen.

    Jetzt hast du eine Handvoll "Brocken" vorgeworfen bekommen und ich bezweifle, dass du viel dabei gelernt hast, denn die WMI-Abfrage "zu Fuß" hast du doch sowieso schon (teilweise) per AutoIt und auch per PS selbst erstellt.

    Ich gebe Dir schon recht das Scriptomatic ein Werkzeug ist das einem sehr viel Arbeit abnimmt. Aber in diesen speziellen Fall hat es mir nicht weitergeholfen (oder nicht in den Hintern gebissen).

    Ich habe mir den Quellcode angesehen und versucht herauzufinden wie Scriptomatic das macht - und das habe ich gemeint ein Level zu hoch.

    Eine einfach unflexible Abfrage ist ja kein Problem, überhaupt wenn man es statisch in ein Programm einbetten kann. In meinen Fall muss und möchte ich es etwas dynamischer gestalten und darum gehe ich diesen Umweg.

    Powershell ist nicht immer verfügbar (WinPE) und daher möchte ich es lieber native in AutoIT die Aufgabe lösen!

    lg

    Racer

  • WMI: Alle Property's

    • Racer
    • 21. Dezember 2018 um 10:09
    Zitat von Bitnugger
    Code
    Local $strComputer = "."
    Local $strNameSpace = "root\cimv2"
    Local $strClass = "Win32_PnPSignedDriver"
    
    Local $objClass = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\" & $strNameSpace & ":" & $strClass)
    For $objClassProperty In $objClass.Properties_
        ConsoleWrite($objClassProperty.Name & @CRLF)
    Next

    Das ist ja noch besser....danke schön!

    lg

    Racer

  • WMI: Alle Property's

    • Racer
    • 20. Dezember 2018 um 15:01

    Micha_he: gemau das was ich wollte! Vielen Dank!

    Ich muss gestehen das ich mich nicht gut mit den Objekten auskenne und ich mir da sehr schwer tue.

    vielen Dank für Euer Hilfe!

  • WMI: Alle Property's

    • Racer
    • 20. Dezember 2018 um 13:02
    Zitat von Musashi

    Welche Eigenschaften Dir in Win32_PnPSignedDriver zur Verfügung stehen, findest Du unter :

    https://msdn.microsoft.com/en-us/library/…4(v=vs.85).aspx

    Ich bin sicher ich verwende die falschen Bezeichungen.

    Auf der MS Seite stehen alle Möglichen Felder (String ClassGuidID, CompatID,...) für Win32_PnPSignedDriver. Und ich möchte die Liste nicht erstellen (wie auf der Webseite beschrieben) sondern aus dem System abfragen welche Properties es gibt.

    Je nach WIM Anfrage sind es unterschiedliche Felder.

    Beispiel:

    Bei Win32_PnPDevice gibt es SameElement und SystemElement

    Bei Win32_Printer gibe es Attribus, Availability, Comment, uvm.

    Je nachdem welche Klasse ich Abfrage, muss ich für die Ausgabe wissen welches Properties es gibt das ich dann in einer Schleife abfragen kann:

    Code
    for $i in $colItems
        ConsoleWrite ($i.Description & @crlf)
    Next

    ich möchste aber eine Liste aller möglichen Properties von der jeweiligen Klasse. Quasi was kann ich in einer Klasse alles abfragen!

    lg

    Racer

  • WMI: Alle Property's

    • Racer
    • 20. Dezember 2018 um 11:46

    Ich dürfte mich schlecht bei meiner Frage ausgedrückt habe. Es geht mir nicht darum wie ich eine WMI Abfrage von Win32_PnPSignedDriver nach z.B.: DeviceName mache, sondern wie ich die Angaben "DeviceName, DeviceID,...) bekomme.

    Der Vergleich hinkt ein bisschen aber so wie ich aus einen INI-File mit "IniReadSection" die Elemente/Key (wobei ich nur die Elemente möchte) auslesen kann, ohne vorher zu wissen welche es gibt. Ich muss nur den Sectionnamen wissen...

    Wie in meinen Beispiel will ich nicht Hardcoded $variable.Description schreiben, ich möchte wenn das geht alle Möglichen Elemente bekommen die bei (Als Beispiel: Win32_PnPSignedDriver) möglich sind.

    lg

    Racer

    PS: WMI ist nicht so mein Fall, sollte ich hier falsch Bezeichnungen verwenden bitte ich gleich um Verzeihung für mein Unwissen

  • WMI: Alle Property's

    • Racer
    • 20. Dezember 2018 um 10:04

    Hallo!

    Meine Finger bluten, mein Kopf raucht nach zwei Tagen suchen und am Ende bin ich nicht weitergekommen:(

    Ich hoffe Ihr könnt mir weiterheilfen...

    Ich möchte in AutoIT eine WMI-Anfrage stellen und als Antwort eine Liste (Array, Output,...) aller (ich hoffe das stimmt so) Property's bekommen.

    Zur Zeit mache ich eine Anfrage so:

    Code
    local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
    $colItems = $objWMIService.ExecQuery('Select * from Win32_PnPSignedDriver')
    
    for $i in $colItems
        ConsoleWrite ($i.Description & @crlf)
    Next

    Das funktioniert auch, aber ich benötige um etwas universeller zu sein alle Felder die ich Auswerten kann - ich hoffe ich drücke mich nicht zu unverständlich aus.

    Es geht als um das ".Description" - ich weiß dank WIM-Explore, dass es das gibt, aber es muss ja eine Möglichkeit geben um alle Propertys aufzulisten. Und stehe ich an!

    Unter Powershell ist das sehr einfach: Get-WmiObject -Class "Win32_PnPSignedDriver" -Namespace "root\CIMV2" | Get-Member - ich würde aber nur ungern in ein AutoIT Programm wieder den Umweg über die PS gehen.

    Ich habe mir auch schon Script-o-Matic angesehen, aber ich muss gestehen das ist doch ein Level zu hoch für mich!

    Ein ganz ein kleines Beispiel wie man das löst wäre sehr hilfreich...

    lg

    Racer

  • Icon verstecken (Systray)

    • Racer
    • 5. Dezember 2018 um 10:39

    Auch wenn ich das alles noch nicht genau verstehe, es funktioniert bestenes!

    Vielen Danke für Eure Hilfe!

    lg

    Racer

  • Icon verstecken (Systray)

    • Racer
    • 5. Dezember 2018 um 10:06

    Guten Morgen!

    Sorry für meine späte Antwort, bin gestern nicht mehr dazu gekommen...

    @Micha_he: vielen Danke, das funktioniert aus.

    Ich muss aber sagen das ich die Funktionen nicht ganz verstehe und durch den Beitrag von Autoiter auch jetzt etwas verunsichert bin ob ich immer das richtige Icon ausblende.

    autoiter: gibt die Funktion _Get_Systray_Infos() immer die korrekte Instance zurück so das ich den Wert mit Micha_he's Beispiel kombinieren kann, oder muss/soll ich trotzdem das System abfragen (Windows 7/10) und dementsprechend die Instanz setzen?

    lg

    Racer

  • Icon verstecken (Systray)

    • Racer
    • 4. Dezember 2018 um 13:36

    Ja, das meine ich!

    Wenn Du in der Console "c:\windows\system32\PresentationSettings.exe /start" aufrufst hast Du nicht das Fenster sondern nur das Symbol. Und genau das möchte ich verstecken.

    lg

    Racer

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™