Powershell Code?

3 Antworten

Wo hast Du denn den völlig veralteten Code ausggraben🤔😅

...::LoadWithPartialName ist ein Relikt aus der Zeit von Powershell 2.0 und sollte keinesfalls mehr eingesetzt werden.

Mit Powershell 3.0 wurde Add-Type eingeführt und übernimmt sämtliche Aufgaben rund um den Zugriff auf externe Bibliotheken/APIs.

while (1 -eq 1) {} ist ebenfalls Nonsens , da der Ausdruck (1 -eq 1lediglich True zurückliefert. dafür hat Powershell die Variable $True oder man schreibt einfach 1 , was in einem Ausdruck ebenfalls als True interpretiert wird.

while (1 -eq 1) {}
while (1) {}
while ($True) {}

...tun das Gleiche.

...aber Nun zu deiner Zufallszahl:

Get-Random liefert je nach für -Minimum/-Maximum übergebenem Typ ein Double oder Integer zurück. da Start-Sleep Millisekunden als Parameter akzeptiert erübrigt sich jegliche Herumrechnerei und wir generieren direkt einen Zufallswert von 21000 bis 24000 (oder was immer Dir vorschwebt).

using namespace System.Windows.Forms
Add-Type -AssemblyName 'System.Windows.Forms'
while ($True) {
$MilliSecondsToSleep = Get-Random -Minimum 21000 -Maximum 24000
Write-Host "$MilliSecondsToSleep Millisekunden Pause" #zeile kann weg,  nur  mal Anzeigen  welcher  Wert generiert  wurde
Start-Sleep -MilliSeconds $MilliSecondsToSleep
[SendKeys]::SendWait(' ')
}

natürlich kann man das ganze auch noch eindampfen und direkt in eine Verknüpfung schreiben:

powershell -c "Add-Type -a 'System.Windows.Forms';while (1){sleep -m (Get-Random -min 21000 -max 24000);[System.Windows.Forms.SendKeys]::SendWait(' ')}"

Bild zum Beitrag



Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
 - (Code, Programmiersprache, PowerShell)

Das hier sollte auch mit Sekundenbruchteilen funktionieren. Der Zeitraum liegt zufällig zwischen 21 und 24 Sekunden (24 nicht inklusive).

$milliseconds = Get-Random -Maximum 3000
$timeToSleep = (21000.0 + $milliseconds) / 1000.0
Start-Sleep -Seconds $timeToSleep

Erzesel  11.11.2024, 16:39

weshalb rödelst Du mit Sekunden herum?

Einfach direkt mit Millisekunden arbeiten, damit erübrigt die "theoretisch aufwendige" Herumrechnerei.

...Mal abgesehen davon, das Start-Sleep (alias sleep) alles andere als genau ist:

Measure-Command {sleep -m 1000}

...🤪

ohwehohach  12.11.2024, 08:45
@Erzesel
weshalb rödelst Du mit Sekunden herum?

Weil der Fragesteller explizit danach gefragt hat :-) Klar sind Millisekunden praktischer.

Alika112 
Beitragsersteller
 11.11.2024, 13:49

Könntest du mir bitte auch sagen wo ich dein Code in diesem Code: [void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

while ($true) {

   $randomSleepTime = Get-Random -Minimum 21 -Maximum 24

   Sleep -Seconds $randomSleepTime

   [System.Windows.Forms.SendKeys]::SendWait(" ")

}

hier einbauen soll. Bin ein leihe. Wäre voll lieb wenn du das noch sagen könntest

ohwehohach  11.11.2024, 14:15
@Alika112

Du ersetzt die folgenden Zeilen durch meine:

$randomSleepTime = Get-Random -Minimum 21 -Maximum 24
Sleep -Seconds $randomSleepTime

[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

while ($true) {

   $randomSleepTime = Get-Random -Minimum 21 -Maximum 24

   Sleep -Seconds $randomSleepTime

   [System.Windows.Forms.SendKeys]::SendWait(" ")

}


Erzesel  11.11.2024, 16:44

Gib auch immer schön die seit 2012 veraltetete Methode [System.Reflection.Assembly]::LoadWithPartialName() weiter!

Alika112 
Beitragsersteller
 11.11.2024, 13:20

Thx man