Jump to content

schreckinger

Members
  • Gesamte Inhalte

    73
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von schreckinger

  1. Hallo Dukel

     

    danke erstmals für die Antwort.

    Das Problem habe ich noch nicht gelöst daher es sich zum glück aufschieben hat lassen, doch möchte ich es jetzt probieren

     

    ich habe mal nach besten gewissen ein Script erstellt ?, dieses funktioniert jedoch nicht.

     

    If{(Get-Item $env:PROGRAMDATA\CenturaSQL\Databases\SPVLOCAL\SPVLOCAL.DBS).CreationTime -eq (Get-Item $env:PROGRAMDATA\CenturaSQL\Databases\SPVLOCAL\SPVLOCAL.DBS).LastWriteTime
    }
    else
    {
    Remove-item $env:PROGRAMDATA\CenturaSQL\Databases\SPVLOCAL\SPVLOCAL.DBS
    }
    

     

    Wie gesagt mein wissen mit der Powershell ist sehr begrenzt und daher auch meine Frage ob du mir das richtig stellen kannst bzw. Tipp geben kannst.

     

    Danke

     

    lg

  2. Hallo gemeinde ich sollte mit icacals rechte setzen

     

    Schreibrechte für ALLE Benutzer im ProgramData-Unterverzeichnis setzen

     

    ich probiere die ganze herum komm aber auf keinen grünen zweig darum bitte ich euch um Hilfe

     

    das hab ich bisher zusammen:

     

    icacls "%ProgramData%\test" /T /grant:r "everyone":(OI)(CI)M

     

    Ich bedanke mich schon mal herzlichst für Hilfe im Voraus!

     

    DANKE

  3. Hallo Gemeinde ich habe folgende Frage.

     

    Ich soll eine Datei entferen jedoch nur wenn diese nicht geändert wurde (gleiche Größe und Änderungszeitpunkt wie bei der Installation)!

     

    Wie kann ich das am besten machen.

     

    Daher meine Kenntnisse ziehmlich eingeschränkt sind in der Powershell hoffe ich hier auf Rasche Hillfe daher ich das für meinen Arbeitgeber brauche.

    ( Der Powershell Guru der Firma ist eine Woche krank und deswegen stehe ich auch unter Zeitdruck)

     

    Danke ich Vorraus für die Hilfe

     

    Lg

     

    Schreckinger

  4. Hallo Leute ich wünsche euch einen guten Morgen :)

     

    ich hab mir gerade die Frage gestellt ob es Sinn macht Schleifen in einer Function verpacken.

     

    Z.b Mein Beispiel BackupTool

     

    #Backup Tool 
    Clear-Host
    
    
    # Funkton 1
    function Select-Folder($message='Wählen Sie einen Ornder', $path = 0) {  
       $object = New-Object -comObject Shell.Application   
    
       $folder = $object.BrowseForFolder(0, $message, 0, $path)  
       if ($folder -ne $null) {  
           $folder.self.Path  
       }  
    }  
    
    ##################################################################################################################
    
    
    
    
    $date = Get-Date -Format d.MMMM.yyyy
    $var1 = Select-Folder 'Wählen Sie den Ornder aus denn Sie sichern möchten!'
    
    ###############################################################################################################
    
    if (Test-Path -Path $var1)
    { 
    Write-Host "Die Eingabe war korrket."
    }
    else{
    Write-Host "Der Angebene Ornder exestiert nicht bitte prüfen sie die Schreibweise und achten sie auf Groß/Klein Schreibun"
    #Write-Host "Der Pfad zum Ornder ist nicht Korrekt:"$var1 
    }
    
    $var2 = Select-Folder 'Wählen Sie nun den Ornder denn sie als Backup verwenden möchten!'
    
    
    if (Test-Path -Path $var2)
    { 
    Write-Host "Die Eingabe war Korrekt."
    cd $var2
    $var3 = mkdir $date -Force
    Copy-Item -Path $var1 -Destination $var3 -Recurse -Force | Write-Host "Kopiervorgang gestartet dies kann einige Zeit in Anspruch nehmen" 
    For($i = 1; $i -le $files.count; $i++)
    { Write-Progress -Activity "Backup von den Daten" -status "Backup gestartet" `
    -percentComplete ($i / $files.count*100)}
    $backup_log = Dir -Recurse $var2 | Sort-Object | out-File "$var2\backup_log.txt"  
    
    Write-Host "Der Kopiervorgang abgeschlossen auf"$var2 
    Write-Host "Das Protokoll finden sie unter:"$var2
    
    }
    else
    {
    Write-Host "Der Angebene Ornder exestiert nicht"
    Write-Host "Der Pfad zum Ornder von ihrer Eingabe:"$var2 
    }
    
    #################################################################################################################
    
    

     

    Würde es sinn machen den Unteren Teil in ein Function einzubauen ?

    Oder ist es z.b bei diesem Beispiel 2 Rangig ?

     

    Sollte ich in der Zukunpf eher function bauen ?

     

    Danke ich freue mich auf Antworten

     

    LG

     

    Schreckinger

  5. Hallo Leute!

     

    Ich hab mir das jetzt eine ProgeressBar eingebaut.

     

    if (Test-Path -Path $var2)
    { 
    Write-Host "Die Eingabe war Korrekt."
    cd $var2
    $var3 = mkdir $date -Force
    Copy-Item -Path $var1 -Destination $var3 -Recurse -Force | Write-Host "Kopiervorgang gestartet dies kann einige Zeit in Anspruch nehmen" 
    For($i = 1; $i -le $files.count; $i++)
    { Write-Progress -Activity "Backup von den Daten" -status "Backup gestartet" `
    -percentComplete ($i / $files.count*100)}
    $backup_log = Dir -Recurse $var2 | Sort-Object | out-File "$var2\backup_log.txt"  
    
    Write-Host "Der Kopiervorgang abgeschlossen auf"$var2 
    Write-Host "Das Protokoll finden sie unter:"$var2
    
    }

     

    Ich sehe auch das die ProgressBar aufgeht. Aber beim Probieren von meinen Script habe ich einen Bug endeckt.

    Fehlermeldung: "Copy-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters."

     

    Also die Ornder namen werden dem Script zu lange.

    Gibt es eine Möglich das zu denfieren oder besser gesagt die Lange zu verlängern ?

     

     

    Danke für eure Hilfe

     

    Lg

  6. Hallo Schreckinger,

     

    einfach hier einen kopierten Code ohne Quellenangabe reinzuwerfen und zu fragen, woran es ha©kt, führt zu nichts!

    Wenn du ganz konkret nicht weiterkommst, dann kannst du gerne den entsprechenden Codeausschnitt mit deiner Frage hier posten.

     

    Damit du auch etwas lernst, geb ich dir mal ein paar Regeln mit, die du bitte ab jetzt beherzigst: (gelten aber nur für dich!)

     

    - kein kopierter Code ohne Quellenangabe mehr

     

    - keine Frage zu Code, ohne dass die auf die notwendigen Informationen gekürzte Ausgabe dabei steht

     

    - keine Codeschnippsel länger 5 Zeilen mehr in einem Post

     

    - idealerweise benützt du Kommentare, die zählen natürlich nicht zu den 5 codezeilen dazu.

     

    - keine Pauschal-Fragen mehr wie "warum hakt es", sondern eine Beschreibung, was du bisher probiert hast und was du nicht verstehst.

     

    Wenn du diese Regeln beherzigst, dann ist dir selbst am meisten geholfen. Ich werde auf die Einhaltung dieser Regeln bei dir achten und eventuell Posts ggf. schließen

     

    Danke für Dein Verständnis

    blub

     

    Hallo Blub

     

    ich werde diese Regel beherzigen.

     

    und entschuldige mich für diesen Post in der Früh. Ich hatte nicht die Zeit den Post zubeschreiben.

     

    lg

  7. Hallo Gemeinde, hi leute :)

     

    Also ich möchte mir einen Tool bauen für die Netzwerkanaylse

     

    Der Scanner soll die IP-Range auflisten, Hostnamen, IP, MAC Adresse, Shares anzeigen und ob der PC Online ist.

     

    #Network Anaylse
    Clear-Host
    
    function Get-IPAddress {  
    
       param(  
           [switch]  
           $first,  
           [Parameter(ParameterSetName='IPV4')]  
           [switch]  
           $IPv4,  
           [Parameter(ParameterSetName='IPV4')]  
           [switch]  
           $IPv6  
       )  
       $ip = @(Get-WmiObject -Filter 'IPEnabled=true' Win32_NetworkAdapterConfiguration | Select-Object -ExpandProperty IPAddress)  
       if ($IPv4) { $ip = $ip | Where-Object { $_ -like '*.*' }}  
       if ($IPv6) { $ip = $ip | Where-Object { $_ -like '*:*' }}  
    
       if ($ip.Count -gt 1 -and $first) {  
           $ip[0]  
       } else {  
           $ip  
       }  
    }  
    function Get-IPRange($start, $end) {  
           $ip1 = ([system.Net.IPAddress]$start).GetAddressBytes()  
           [Array]::Reverse($ip1)  
           $ip1 = ([system.Net.IPAddress]($ip1 -join '.')).Address  
    
           $ip2 = ([system.Net.IPAddress]$end).GetAddressBytes()  
           [Array]::Reverse($ip2)  
           $ip2 = ([system.Net.IPAddress]($ip2 -join '.')).Address  
    
           for ($x = $ip1; $x -le $ip2; $x++) {  
               $ip = ([system.Net.IPAddress]$x).GetAddressBytes()  
               [Array]::Reverse($ip)  
               $ip -join '.'  
           }  
    
       }  
    
       if ($PSCmdlet.ParameterSetName -eq 'Automatic') {  
           @(Get-IPAddress -first:$first -IPv4) |  
           ForEach-Object {  
               $temp = ([system.Net.IPAddress]$_).GetAddressBytes()  
               $temp[3] = 1  
               [system.Net.IPAddress]$start = $temp -join '.'  
               $temp[3] = 255  
               [system.Net.IPAddress]$end = $temp -join '.'  
               Get-IPRange $start $end          
           }  
       } else {  
           Get-IPRange $start $end  
       }      
    function Test-Online {  
    
    
       param(  
           [Parameter(Mandatory=$true, ValueFromPipeline=$true)]  
           [string]  
           $computername,  
           [int32]  
           $throttleLimit = 300  
       )  
    
       begin { $list = New-Object System.Collections.ArrayList }  
       process {   
           [void]$list.Add($computername)  
       }  
       end {  
           & {   
               do {  
               $number = [Math]::Min($list.Count, $throttleLimit)  
               $chunk = $list.GetRange(0, $number)  
    
               $job = Test-Connection $chunk �Count 1 �asJob  
               $job | Wait-Job | Receive-Job | Where-Object { $_.StatusCode -eq 0 } | Select-Object �expandProperty Address   
               Remove-Job $job  
               $list.RemoveRange(0, $number)  
           } while ($list.Count -gt 0)   
           } | Sort-Object { [system.Version]$_ }  
       }  
    
    }  
    
    function Get-HostName {  
    
    
       param(  
           [Parameter(Mandatory=$true, ValueFromPipeline=$true)]  
           [string[]]  
           $IPAddress  
       )  
    
       process {  
           $IPAddress | Foreach-Object {  
               $ip = $_  
               try {  
                   [system.Net.DNS]::GetHostByAddress($ip)  
               } catch {   
                   Write-Warning �IP $ip did not return DNS information�  
               }  
           }  
       }  
    }  
    
    
    Get-IPAddress | Test-Online | Get-HostName 

     

    Soweit hab ich mir das mal gedacht aber ich scheitere daran.

    Vielleicht sieht wer von euch wo es hackt ?

     

    Danke nochmals

     

    LG

  8. ## shows a FixedToolWindow with a ProgressBar and a Label
    ##
    [Void] [reflection.assembly]::LoadWithPartialName("System.Windows.Forms");
    
    # $pgBar 		progress-bar 
    [system.Windows.Forms.ProgressBar] $pgBar = New-Object "System.Windows.Forms.ProgressBar";
    $pgBar.Location = New-Object -TypeName "System.Drawing.Point" -ArgumentList 12,10;
    $pgBar.Size     = New-Object -TypeName "System.Drawing.Size"  -ArgumentList 260,30;
    $pgBar.Minimum  = 0;
    $pgBar.Maximum  = 1000;
    $pgBar.Step     = 1;
    $pgBar.Value    = 600;
    
    # $pgText		text under progress-bar
    [system.Windows.Forms.Label] $pgText = New-Object "System.Windows.Forms.Label";
    $pgText.Location = New-Object -TypeName "System.Drawing.Point" -ArgumentList 15,45;
    $pgText.AutoSize = $true;
    $pgText.Text = "..\dir1\dir2 (600 / 1000)";
    
    # $pgForm		form as fixed toolbar-window
    [system.Windows.Forms.Form] $pgForm = New-Object "System.Windows.Forms.Form";
    $pgForm.Text = "Backup";
    $pgForm.ClientSize =  New-Object -TypeName "System.Drawing.Size"  -ArgumentList 284,75;
    $pgForm.FormBorderStyle = 'FixedToolWindow';
    $pgForm.ShowInTaskbar = $true;
    
    $pgForm.Controls.Add($pgText);
    $pgForm.Controls.Add($pgBar);
    
    [Void] $pgForm.ShowDialog();

     

    DANKE DANKE

     

    wo sollte man sowas im script einbauen, also an wechler Stelle findet das Platz ?

     

    lg

  9. Wär das nicht das richtige für Dich?

     

    Select Folder Dialog - Powershell.com

     

    Danke das war genau das was ich gesucht habe.

     

    BIn aber noch nicht fertig mit diesem Script möchte das ganze erweitern das er dem User ein Email schick mit dem Log File von der Sicherung.

    In diesem Log File sollten alle Dateien die Kopiert worden sind aufgelistet sein.

     

    Und ich möchte so einen Prozent Balken Einbauen damit man sieht wie weit der Kopiervorgang schon ist.

    Wie könnte man sowas lösen ?

     

    Danke für eure Hilfe

     

    und ich wünsch euch allen einen wünderschönen Guten Morgen und einen erfolgreichen Start in die Woche :)

  10. Vertraun ist gut kontrolle besser :) aber ich überleg mir was ob ich das irgendwie lösen kann.

     

     

    cd $var2

    $var3 = mkdir $date -Force

     

    Ich spring ja vorher mit Cd $var in den Ziel Ornder, und in diesem soll der dann einen Ornder mit Datum anlegen.

    sprich E:\Backup\23.03.2012

     

    okay dann werd ich mir mal über wochenende das Programm reinziehen.

    und natürlich mein Wissen über die Powershell erweitern.

  11. Versuche es mal mit dem Script:

    $TestPath = "C:\sqltest1"
    dir $TestPath -Recurse | %{
    get-acl $_.FullName} | %{
    	$_.access} | %{
    		$_ | Select-Object @{
    			n="name";e={$obj.fullname}},@{
    			n="security_principal";e={$_.identityreference}},@{
    			n="type";e={$_.accesscontroltype}},@{
    			n="rights";e={$_.filesystemrights}}} | Export-Csv "C:\sqltest1\excel.csv" -Delimiter ";" -NoTypeInformation -Encoding UTF8

     

     

    Frage zum Script.....

     

    für das steht das n=

     

    danke

  12. ducke danke :)

     

     

    es funktioniert , eine Frage dazu.

     

    ich bekomme eine Extrem Lange liste ?

     

    Aber wenn ich mir die Berechtigungen ansehe sehe ich nur das 2 Benutzer zugriff auf den Ornder haben ?

    Wie kann das sein ?

    Oder wird hier jede Datei auch auchgelistet ?

     

    ERSTELLER-BESITZER Allow

    VORDEFINIERT\Users Allow

    VORDEFINIERT\Users Allow

    VORDEFINIERT\Users Allow

    VORDEFINIERT\Administrators Allow

    NT-AUTORITÄT\SYSTEM Allow

    LUI\user1 Allow

    VORDEFINIERT\Users Allow

    VORDEFINIERT\Administrators Allow

    NT-AUTORITÄT\SYSTEM Allow

    LUI\User1 Allow

    VORDEFINIERT\Users Allow

  13. Meine Tipps habe ich im letzten Thread schon gepostet.

    Du kannst "$var1 = $env:USERPROFILE + '\' + $var1" weglassen, dann kann der User jeden beliebigen Pfad eingeben auf auf einem anderen Laufwerk.

     

    Für Gui's gibt es z.B. PrimalForms: The only PowerShell GUI Editor

     

    Aber bevor ich mich an irgendwelche Guis wagen würde würde ich mir erst mal die Grundlagen besser aneignen.

     

    EDIT:

    $var3 = mkdir $date -Force

     

    Wo glaubst du wird der Ordner angelegt und wo willst du das er angelegt wird?

     

     

    hi ersten wieder mal ein FETTES Dank an Dukel :) freut mich immer wieder von dir zu hörn.

     

    Wenn das weglasse : "$var1 = $env:USERPROFILE + '\' + $var1"

    muss der user doch den Pfad komplett eingeben ?

    da sind wir wieder beim Problem meine User können das ned.

    Ich kann ned verlangen von denen das die z.b E:\Backup\files\new

    eingeben oder so .. aber naja das ist halt die Geschichte mit den Usern :)

     

    "$var3 = mkdir $date -Force"

     

    da leg ich mir einen Ornder mit dem Heutigen Datum im Ziel Ordner an.

     

     

    PrimalForms: The only PowerShell GUI Editor

     

    Ist das ein eigenständiges Programm oder wie kann ich das verstehen ?

     

    Wie gesagt besten Dank und ich wünsch dir einen erfolgreichen Tag

  14. Hallo Gemeinde.

     

    Also ich arbeite jetzt seit ca 2 wochen mit der Powershell hab mir mal einen kleines Backup Tool geschrieben.

    Als erster wird eine Eingabe vom Benutzer verlangt, dann wird geprüft ob der Ornder verfügbar ist.

    Dann wird hinkopiert und in ein Log File gespeichert.

    Wenn der Eingebene Ornder nicht vorhanden ist wird eine Fehler meldung ausgeben.

     

    Hier mal mein Tool :)

     

    #Backup Tool 
    Clear-Host
    
    $date = Get-Date -Format d.MMMM.yyyy
    
    $var1 = Read-Host "Eingabe des Ornders der gesichert werden soll, achten Sie bitte auf die Richtige Schreibweise"
    $var1 = $env:USERPROFILE + '\' + $var1
    
    if (Test-Path -Path $var1)
    { 
    Write-Host "Die Eingabe war korrket."
    }
    else{
    Write-Host "Der Angebene Ornder exestiert nicht bitte prüfen sie die Schreibweise und achten sie auf Groß/Klein Schreibun"
    Write-Host "Der Pfad zum Ornder ist nicht Korrekt:"$var1 
    }
    
    $var2 = Read-Host "Eingabe der Ziel Quelle für das Backup:"
    $var2 = $env:SystemDrive + '\' + $var2
    
    if (Test-Path -Path $var2)
    { 
    Write-Host "Die Eingabe war Korrekt."
    cd $var2
    $var3 = mkdir $date -Force
    Copy-Item -Path $var1 -Destination $var3 -Recurse -Force | Write-Host "Kopiervorgang gestartet dies kann einige Zeit in Anspruch nehmen" 
    $backup_log = Dir -Recurse $var2 | Sort-Object | out-File "$var2\backup_log.txt"  
    
    Write-Host "Der Kopiervorgang abgeschlossen auf"$var2 
    Write-Host "Das Protokoll finden sie unter:"$var2
    
    }
    else
    {
    Write-Host "Der Angebene Ornder exestiert nicht"
    Write-Host "Der Pfad zum Ornder von ihrer Eingabe:"$var2 
    }
    

     

    Aber ich wäre nicht der Schreckinger wenn ich nicht noch mehr machen möchte.

    Erstens bin ich offen für Verbesserungsvorschläge.

    Weiters möchte ich das Script noch erweitern.

    Ich möchte eine Grafische Oberfläche für das Tool bauen.

    Funktioniert das via Powershell ?

    Ich weiß das es vielleicht ein bisschen bald ist mit GUI zu Experimentieren daher mir die Powersehll selbst manchmal noch sehr komplieziert ist.

    Aber wie gesagt ich dachte auch nicht das ich es schaffe so weit in 2 Wochen zu kommen.

    :)

    Des weiteren stört mich noch ein bisschen das der Ornder auf C:\ liegen muss.

    Möchte das Script erweitern auf alle Laufwerke?

    Wäre es sinnvoll vorher einen Laufwerk check einbauen ob diese vorhanden sind ?

     

     

     

    Danke nochmals an alle die mir bisher zur Seite standen :)

     

    DANKE

  15. hi

     

    also den get-help Befehl env: hab ich ausgeführt.

    Aber mein Problem ist das der jetztige Rechner was ich in der Arbeit verwende nur eine C Platte hat.

    Aber gibt es so einen Namen für alle Platten wie Drives oder so ?

     

    okay das mit den guis schau ich mir später an.

     

    Das Problem ist die User sind einfach zu d... ! Um den Pfad Komplett anzugeben.

    Deswegen auch meine Frage ob es ein Dropdown menü oder irgendsowas in der Art gibt.

    Gibt es dazu noch eine leichtere möglich ?

     

    Wie hast du das Gemeint mit der Abfrage ?

     

    Danke nochmal Dukel bist ein Top Mann

×
×
  • Neu erstellen...