Avatar billede borchmann Novice
10. august 2019 - 09:16 Der er 3 kommentarer

powershell skriv alarm hvis fil antallet er over f.eks 10000

Hejsa

Jeg har igår været igang med at sammenstykket dette lille script. Meningen er scriptet skal gå ud og tælle antal filer for samme mappe i hver serverserie. Det gør det egentlig også nu :-) Men er det muligt at få scriptet til at skrive en alarm hvis antallet af filer overstiger f.eks 100000 filer ?

$ePOs = get-content c:\test\ePOs.txt
$Agenthandlers = get-content c:\test\Agenthandlers.txt

foreach ($ePO in $ePOs)
{
$Share = Get-ChildItem -Path \\$ePO\C$\test -Recurse -File | Measure-Object | Select Count
Write-host Agenthandler, $ePO, Counts $Share.count files in Eventshare}

foreach ($Agenthandler in $Agenthandlers)
{
$Share = Get-ChildItem -Path \\$Agenthandler\C$\test -Recurse -File | Measure-Object | Select Count
Write-host Agenthandler, $Agenthandler, Counts $Share.count files in Eventshare}
Avatar billede Spotgun Seniormester
10. august 2019 - 18:21 #1
Du har jo antallet af filer i $Share.Count, så du kan f.eks. lave følgende check:
$FileLimit = 10000
if($Share.Count -gt $FileLimit) {
  Write-Warning "There's more than $FileLimit files, do something!"
}
Avatar billede borchmann Novice
12. august 2019 - 21:09 #2
Tak skal du have for det hurtige svar, som tænker jeg godt kan bruge. Har prøvet minglere lidt rundt med det. Men uanset, så får jeg ikke det resultat, jeg gerne vil have. Jeg vil gerne have den skal skrev for hver server i hver serie. Det gør den ikke nu, for hvad jeg er kommet frem til ... tænker jeg skal have noget foreach if else med, på en eller anden måde ....

$ePOs = get-content c:\test\ePOs.txt
$Agenthandlers = get-content c:\test\Agenthandlers.txt
$FileLimit = 5

foreach ($ePO in $ePOs)
{
  $Share = Get-ChildItem -Path \\$ePO\C$\test -Recurse -File | Measure-Object | Select Count
Write-host Agenthandler, $ePO, Counts $Share.count files in Eventshare}
if($Share.Count -gt $FileLimit) {
  Write-Warning "There's more than $FileLimit files, do something!"
}

foreach ($Agenthandler in $Agenthandlers)
{
Write-host Agenthandler, $Agenthandler, Counts $Share.count files in Eventshare}
if($Share.Count -gt $FileLimit) {
  Write-Warning "There's more than $FileLimit files, do something!"

}

result:
Agenthandler localhost Counts 6 files in Eventshare
Agenthandler localhost Counts 6 files in Eventshare
WARNING: There's more than 5 files, do something!
Agenthandler LAPTOP-05 Counts 6 files in Eventshare
Agenthandler LAPTOP-05 Counts 6 files in Eventshare
WARNING: There's more than 5 files, do something!
Avatar billede Spotgun Seniormester
13. august 2019 - 09:02 #3
Jeg er ikke helt med på hvad du gerne vil have som output, men prøv at se om det her kan bruges. Scriptet skriver kun én linie per ePO og Agenthandler der checkes. Hvis der er for mange filer bliver outputtet lavet som en warning, ellers noteres antallet bare.

$ePOs = Get-Content -Path "c:\test\ePOs.txt"
$Agenthandlers = Get-Content -Path "c:\test\Agenthandlers.txt"
$FileLimit = 5

foreach($ePO in $ePOs) {
    $Share = Get-ChildItem -Path "\\$ePO\c$\test" -Recurse -File | Measure-Object | Select-Object Count
    if($Share.Count -gt $FileLimit) {
        Write-Warning "ePO server $ePO has $($Share.Count) files in Eventshare. Do something!"
    }
    else {
        Write-Host "ePO server $ePO has $($Share.Count) files in Eventshare."
    }
}

foreach ($Agenthandler in $Agenthandlers) {
    $Share = Get-ChildItem -Path "\\$Agenthandler\c$\test" -Recurse -File | Measure-Object | Select-Object Count
    if($Share.Count -gt $FileLimit) {
        Write-Warning "Agenthandler $Agenthandler has $($Share.Count) files in Eventshare. Do something!"
    }
    else {
        Write-Host "Agenthandler $Agenthandler has $($Share.Count) files in Eventshare."
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester