Jump to content

mamamia

Members
  • Gesamte Inhalte

    312
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von mamamia

  1. Wieso nutzt man nicht die Funktion des Zippers (k.A. ob write-zip das kann) die Daten zu verschieben statt kopieren? Dabei sorgt sich der Zipper um das löschen und das nicht löschen beim Fehler (kein Platz mehr für Zip Files).

     

    Weil es Write-Zip nicht kann.

    Sonst hätte ich das schon so eingekippt

     

    ÜBERSICHT

    PSCX Cmdlet: Create ZIP format archive files from pipline or parameter input.

     

     

    SYNTAX

    Write-Zip [-LiteralPath] <String[]> [[-OutputPath] <String>] [-Append] [-FlattenPaths] [-IncludeEmptyDirectories] [-Level <Nullable`1>] [-NoClobber] [-Quiet] [<CommonPar

    ameters>]

     

    Write-Zip -InputObject <PSObject> [[-EntryPathRoot] <String>] [-Append] [-FlattenPaths] [-IncludeEmptyDirectories] [-Level <Nullable`1>] [-NoClobber] [-Quiet] [<CommonPa

    rameters>]

     

    Write-Zip [-Path] <String[]> [-Append] [-FlattenPaths] [-IncludeEmptyDirectories] [-Level <Nullable`1>] [-NoClobber] [-Quiet] [<CommonParameters>]

     

    Es gibt zwar in Blogs wie hier 8 bits: Create ZIP archives with PowerShell, den Befehl -removeOriginal, der scheint aber nicht mehr verfügbar zu sein.

  2. Stimmt..danke :-) ich denke wirte-Zip löst da mein Problem...teste das mal aus.

     

    Dann klappt auch das anschließende Löschen der Dateien ohne zeitlich schon vorzugreifen. :D

     

    Auf die schnelle fällt mir das ein:

    dir "C:\tmp\zip\" -Recurse -Include "*.txt" -OutVariable files | Write-Zip -OutputPath "C:\tmp\zip\files.zip"
    remove-item $files
    

     

    Ich wüsste grad nicht, wie man das noch pipen könnte.

  3. Moin,

     

    ich kann dir dazu die PowerShell Community Extensions ans Herz legen.

    Dort gibt es Write-Zip

     

    Write-Zip -OutputPath "C:\tmp\zip\files.zip" -Path "C:\tmp\zip\*"
    

     

    Bei diesem Aufruf werden alle Files unter C:\tmp\zip in das Archiv C:\tmp\zip\files.zip geschrieben.

    Gucks dir mal na.

     

    Ansonsten hast du einen kleinen Denkfehler in deinem Syntax. Du rufst zu jedem File den Prozess auf, daher bekommst du x-Archive raus.

     

    dir "C:\tmp\zip\" -Recurse -Include "*.txt" | Write-Zip -OutputPath "C:\tmp\zip\files.zip"
    

    So könnte es auch gehen, du kannst halt an C:\Programme\7-Zip\7zG.exe a -tzip keine Objekte oder eine FileList übergeben.

  4. Hier mal kurz hingeschmiert:

     

    $file1 = Get-Content -Path "C:\tmp\compare_1.TXT"
    $file2 = Get-Content -Path "C:\tmp\compare_2.TXT"
    for ($i = 0; $i -lt $file1.Count; $i++ ) {
    if ($a = $file2[$i].Replace($file1[$i],"")) {
    	$a | Add-Content "C:\tmp\ergebnis.TXT"
    }	
    }
    

     

    compare_1.TXT

    12345
    1
    123
    123
    

     

    compare_2.TXT

    123456789
    1
    12345
    1234
    

     

    Da ist aber sicherlich nicht alles abgefangen. Nur ein Ansatz.

  5. So etwas in der Art habe ich auch laufen, aber ein bisschen anders.

     

    So wie ich das hier sehe, führst du das Script lokal auf deinen Maschinen aus, oder startest du das zentral von einer Instanz und sammelst dir die Werte zusammen?

     

    Was ich mitbekommen habe bei Get-TSSession ist, dass diese manchmal einen NULL wert zurück gibt, wenn der Server gut am schaffen ist.

     

    Zudem würde ich dir noch folgendes Raten:

    Setze in der where-Klausel die Bedingungen in Klammern:

    $count = (Get-TSSession | where { ($_.UserName -notlike "XXX*") -and ($_.UserName -notlike "YYY*") -and ($_.State -eq "Active")}).count;
    

    Dient zur besseren Übersicht und du kannst sicher gehen, dass auch alles so ausgeführt wird, wie du das willst.

     

    Was das bedeutet, verstehe ich nicht:

    ($freespace["FreeSpace"]/1024/1024).toString().Replace(".",",")
    

    Wenn du den Freespace lesbar formatieren willst, dann so:

    "{0:n} GB" -f ($freespace.FreeSpace/1024/1024/1024)
    

     

    Das Semikolon kannst du weglassen, dass wird bei PS nicht zwingend (überhaupt nicht) benötigt.

  6. Ich habe jetzt kein VB Runtime hier, kann es also nicht testen.

    Aber warum erstellst du erst ein leeres Benutzerobjekt, um es dann zu füllen?

     

    Hier steckt vermutlich der Fehler:

    ' Filterobjekt erstellen, und zuweisen.
    Dim Filter As New PrincipalSearcher()
    Filter.QueryFilter = User
    

     

    Du weist hier dem Filter ein leeres Objekt zu, guck dir mal beim LDAP Syntax die Filterfunktion an.

     

    Weiter unten willst du aus dem User-Objekt deine Werte auslesen, du weist aber nirgens dem User-Objekt das Result-Set zu.

     

    Alles in allem ein bisschen durcheinander.

     

    Andere Frage. Muss es VB sein, oder könntest du auch mit was anderem leben?

  7. Okay, Mischumgebung.

     

    Du kannst ja sicherlich auch Powershellscripte vom Nagios starten?!

     

    Probier mal bitte:

    Get-ItemProperty -Path "hklm:\software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\" | Select -ExpandProperty AUOptions
    

     

    Damit bekommst du den Wert raus. Das ganze in ein Script packen und aufrufen.

    Kommst du damit weiter?

  8. Ich hab es mir jetzt nochmal angeschaut.

    Das Problem ist, dass $quota.QuotaLimit nur ganze Zahlen entgegen nimmt.

     

    Mann könnte jetzt also die GB Werte in ganzheitliche Zahlen umwandeln, sowie Dukel das schon angesprochen hat.

     

    Das sieht dann so aus:

    $quota.QuotaLimit = "{0:0}" -f ($tmp[1]/1024)
    

     

    Ich hatte ja Import-CSV angesprochen, daher hier mal das ganze Script, so wie ich das schreiben würde:

    Import-Csv -Path "C:\tmp\Größer2GB.TXT" -header "Name","Wert" -Delimiter ";" | % {
    $quota = $fqtm.GetQuota($_.Name)
    $quota.QuotaLimit = "{0:0}" -f ($_.Wert/1024)
    $quota.Commit()
    }
    
    

  9. Kannst du relativ schnell mit powershell machen.

    Wie kommst du denn auf die Rechner drauf? Habt ihr da unterschiedliche Anmeldecredentials?

     

    Die Daten stehen alle in der Registry unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate

     

    Da musst du die entsprechenden Werte nur auslesen und deuten.

×
×
  • Neu erstellen...