Programmieren & Softwareentwicklung

Wenn Du nicht nur Anwender sein willst, sondern auch aktiv programmierst oder mit dem Gedanken spielst, dann warten hier die passenden Fragen und Antworten auf Dich.

27.146 Beiträge

Was machen diese Powershellbefehle?

Ich habe follgendes Script mit folgenden Kommentaren:
# Nach dem Quellordner fragen

$sourceFolder = Read-Host "Quellordner"

# Nach dem Zielordner fragen

$targetFolder = Read-Host "Zielordner"

$SearchFile = 'ManualToHelpCmd.exe' # Datei welche gesucht werden soll

$ExcludeFolders = 'Windows','Video' # Hauptordner in Laufwerken, welche überhaupt nicht durchsucht werden sollen

# ermittle alle lokalen Laufwerke (HDD, SSD, USB, SD...) (keine CD, DVD)

$Drives = (Get-CimInstance -ClassName Win32_LogicalDisk -Filter 'DriveType = 3 or DriveType = 2').DeviceID -as [Array] 

# Get-CimInstance:Instanzen einer bestimmten Klasse aus dem CIM (Common Information Model) abruft

# ClassName Win32_LogicalDisk: Gibt an, dass Informationen aus der Klasse Win32_LogicalDisk abgerufen werden sollen die Laufwerke auf dem System beschreibt

# Filter 'DriveType = 3 or DriveType = 2': Ein Filter der nur die logischen Laufwerke auswählt deren DriveType gleich 3 oder 2 ist. DriveType 3 steht für lokale Festplatten, und DriveType 2 steht für Wechseldatenträger (z.B. USB-Sticks).

# DeviceID: Greift auf die DeviceID-Eigenschaft der zurückgegebenen logischen Laufwerke zu, was die Laufwerksbuchstaben (z.B. C:, D:) darstellt

# -as [Array]: Konvertiert die Liste der DeviceIDs in ein Array

# Überprüfen, ob Laufwerke gefunden wurden

if (-not $Drives) {

  Write-Host "Keine Laufwerke gefunden." -ForegroundColor Red

  exit

}

# das eigentliche Arbeitspferd

$Worker = {

  param(

    [Array]$Drives,

    [String]$Filter,

    [Array]$ExcludeFolders

  )

# param(: Definiere die Parameter die der Skriptblock akzeptiert

# [Array]$Drives: Ein Array von Laufwerken

# [String]$Filter: Ein String-Filter

# [Array]$ExcludeFolders: Ein Array von auszuschließenden Ordnern

  $Results = @() #Initialisiert eine leere Array-Variable namens "Results" die verwendet wird um die Ergebnisse zu speichern.

  foreach ($Drive in $Drives) { #Jedes Element wird in der Variablen $Drive gespeichert.

    $Results += (Get-ChildItem "$Drive\" -File -Filter $Filter -ErrorAction SilentlyContinue).FullName #-ErrorAction: Dieser Parameter steuert, wie das Cmdlet auf Fehler reagiert. SilentlyContinue: Diese Einstellung bewirkt, dass Fehler zwar erkannt, aber nicht angezeigt werden. Filtert hier sozusagen anch den Fehlern aber gibt sie nicht aus

    $Results += (Get-ChildItem "$Drive\" -Directory | Where-Object Name -notin $ExcludeFolders | Get-ChildItem -File -Filter $Filter -Recurse -ErrorAction SilentlyContinue).FullName #-Directory = nur buchstaben, | = und, Recurse = sucht in 

   

     

  }

  return $Results

}

# die Suche starten...

if ($Drives.Length -lt 2) {

  # wenn wir nur ein (Physikalisches) Laufwerk haben können wir die Verteilung auf mehrere Jobs sparen, einfach den Worker direkt ausführen

  Write-Host "$($Drives.Length) physikalische Festplatte(n), Suche wird einstufig durchgeführt:" -ForegroundColor Magenta

  $Result = & $Worker -Drives $Drives -Filter $SearchFile -ExcludeFolders $ExcludeFolders

} else {

  # bei mehreren Laufwerken die Arbeit auf mehrere parallele Jobs verteilen

  $Jobs = $Drives | ForEach-Object {

    Write-Host "Festplatte $_ wird durchsucht" -ForegroundColor Green

    Start-Job -ScriptBlock $Worker -ArgumentList @($_ , $SearchFile, $ExcludeFolders)

  }

  $Result = $Jobs | Wait-Job | Receive-Job | Where-Object {$_}

}

# Debugging-Ausgabe für die gefundenen Ergebnisse

Write-Host "Gefundene Dateien:" -ForegroundColor Cyan

$Result | ForEach-Object { Write-Host $_ -ForegroundColor Cyan }

if ($Result) {

  # Wenn mehrere Dateien gefunden werden, Auswahl anzeigen

  if ($Result.Count -gt 1) {

    Write-Host "Es wurden mehrere Dateien gefunden mit gleichnamigen Namen. Wählen Sie die gewünschte Datei aus!" -ForegroundColor Yellow

    $selectedFile = $Result | Out-GridView -Title "Wählen Sie die Datei aus, welche Sie benutzen wollen!" -OutputMode Single

  } else {

    $selectedFile = $Result

  }

  # Das Ergebnis (können auch mehrere Dateien gleichen Namens sein)

  if ($selectedFile) {

    Write-Host "Ausgewählte Datei: $selectedFile" -ForegroundColor Green

    & $selectedFile $sourceFolder $targetFolder

  } else {

    Write-Host "Keine Datei ausgewählt" -ForegroundColor Red

  }

} else {

  Write-Host "Keine Datei gefunden" -ForegroundColor Red

}

Aber was machen diese zwei Zeilen?:
$Results += (Get-ChildItem "$Drive\" -File -Filter $Filter -ErrorAction SilentlyContinue).FullName 

$Results += (Get-ChildItem "$Drive\" -Directory | Where-Object Name -notin $ExcludeFolders | Get-ChildItem -File -Filter $Filter -Recurse -ErrorAction SilentlyContinue).FullName 

Ask Me Anything: Blickwechsel

FEHLERSUCHE bei einem nicht mitscrollenden "Nach-Oben" Button?

Mehrere Stunden hat es mich heute schon beschäftigt, ich komme und komme nicht darauf...

Es geht mir um den seitlichen (rechts) "skip-to-top" Button. Exakt alles habe ich genauso wie in diesem Pen Beispiel ( Link: https://codepen.io/jackherizsmith/pen/oNxVWrK ) gemacht.

Aber bei mir scrollt der Nach-Oben Button nicht mit wie in dem Pen Beispiel :

Meine Demo-Seite: http://misanthrop.bplaced.net/test/open-public/Testseite-V11b1__26-06-24.html (aktualisiert)

Allerdings habe ich mein position: relative nicht main mitgegeben sondern der id "skiptop". Mein Dev-Tool zeigt mir an, das jeweils relative und absolute richtig erkannt wird und es wird mir auch so gezeigt.

Nur halt die Klasse "scroll-top_link" scrollt nicht in dem Bereich hoch und runter wie es soll.

Was mache ich da falsch. Könnt ihr mir bei der Fehlersuche helfen?

Vieles habe ich ausprobiert, auch meinem main habe ich position relative gegeben, aber auch anderen Elementen setzte ich position relative allerdings ohne Effekt.

Das Ding ist allerdings das dieser seitliche Bereich ein eigenes grit-Element ist. Sprich:

.main-content-wrapper {
    display: grid;
    grid:     "main-head main-head" auto
            "navigations navigations" auto
            "main-content main-content" 1fr
            "main-footer main-footer" auto
          / minmax(0, auto) [main-nav-start] 5em [main-nav-end];
    }


#navigations {
    grid-area: navigations;    
    grid-column-end: main-nav;
}

#main-nav {
    grid-area: navigations / main-nav;
    position: relative;
    outline: thin solid red;
    margin: 0;
    padding: 0;
    z-index: 100;
}

Wo ich letztendlich das Hauptmenü anzeigen lasse, da habe ich noch keinen richtigen Plan.

Eventuell in der Zeile: #navigations und dann seitlich rechts.

Nicht zu verwechseln mit Seiten-Inhalt, das ist ein Seiten internes Sprungmenü zu einem bestimmten nach Datum geordneten Artikel. Bisher habe ich noch keine bessere Bezeichnung dafür gefunden. Irgendeine Idee dafür?

Zurück zum Hauptmenü, oder ich packe das Hauptmenü seitlich zum Nach-Oben Button, mache es ebenfalls sticky.

Was dann allerdings bei einem schmalen Browserfenster passiert?... Da habe ich eigentlich vor das Hauptmenü (oberhalb vom "Seiten-inhalt" Link) ohne Button (offen) untereinander anzuzeigen.

Sag mal bitte, da mir die Praxis fehlt, wie würdest Du es lösen?

Zurück zur eigentlichen Frage:

WICHTIG ist mir nun, warum der SCROLL-TOP Button nicht nach oben und unten mitscrollt wie er es eigentlich sollte.

Muss ich da was an der html-Struktur ändern. Ein zusätzliches div?

Ich habe da heute lange daran gesessen...

Ask Me Anything: Themenspecials
Im gutefrage Themenspecial beantworten Verbände, Organisationen und Personen des öffentlichen Lebens Deine Fragen zu aktuellen Themen.
AMA: Polizei
42 beantwortete Fragen
AMA: Weltraum & Raumfahrt
172 beantwortete Fragen
AMA: Tabuthema Wechseljahre (mit der Influencerin blondbynana)
15 beantwortete Fragen