112timo
Goto Top

PS-Skript zum Auslesen von Informationen

Hallo liebe Community,

ich habe in meinem Praktikum die Aufgabe bekommen ein PowerShell-Skript zu erstellen, mit dem ich die Systemdateien und vieles mehr auslesen und exportiern kann. Leide komme ich nicht weiter. Onkel Google spuckt auch nichts brauchbares aus. Bitte helft mir.


Dies ist die Aufgabe:

Systeminformationen sollen exportiert werden.

1. Auswahl eines Arbeitsordners

2.1
  • Vorhandene Outlookprofile
- Pfade
- Namen
- Server
- E-mail-Adresse
- Zusätzliche Konten

2.2
  • Registry-Backup erstellen

2.3
  • Druckerelemente und Scanner auslesen und in Configfile ablegen
- Name
- Treiber
- Freigegeben?

2.4
  • Benutzerprofile, welche im System genutzt werden und wann zuletzt

2.5
  • System nach .pst-Dateien durchsuchen und Pfade loggen

2.6
  • Desktophintergründe exportieren

2.7
  • Seriennummern von Produkten wenn möglich exportieren


und das ist mein bisheriges Skript:
$speicherort = Read-Host "Speicherort wählen: [1] Desktop / [2] Skriptverzeichnis" #Fragt den Speicherort vom Benutzer ab  

$datumzeit = get-date -Format "dd.MM.yyyy, HH:mm:ss"   
$dateiname = get-date -Format "yyyy-MM-dd_hh-mm" #Gibt Datum/Uhrzeit aus  

$pcname = $(Get-WmiObject Win32_Computersystem).name #Gibt den PC-Namen aus

$OSversion = [System.Environment]::OSVersion.Version #Gibt die OS-Version aus

$benutzer = $Env:USERNAME #Gibt den aktuell angemeldeten Benutzernamen aus

$domäne = $env:USERDNSDOMAIN #Gibt die aktuelle Domäne aus



$Laufwerk = Get-WmiObject -class win32_logicalDisk
ForEach ($Element in $Laufwerk){
if ($Element.DriveType -eq 3){
$Laufwerk2 = $Element.FreeSpace/1GB
$Laufwerk01 = $Element.Size/1GB
$Laufwerk4 = $Laufwerk01|Out-String
$Laufwerk3 = $Laufwerk2|Out-String
$frei = Write-Output ($Laufwerk3.SubString(0,5))
$gesamt = Write-Output ($Laufwerk4.SubString(0,5))
}
}
#Gibt den freien und den gesamten Festplattenspeicher an


$internetverbindung = if (Test-Connection 213.183.81.10 -BufferSize 16 -Count 1 -Quiet) { Write-output aktiv} else {Write-Output inaktiv} #Gibt an, ob eine Internetverbindung besteht 


#$internetverbindung = (Resolve-DnsName www.cc-net.ag).ip4address
#$domäne = [Environment]::UserDomainName
#$benutzer = [Environment]::UserName
#$speicher = Get-WMIObject Win32_LogicalDisk -filter "name='c:'" | select name, freespace 
#$speicher = gwmi Win32_LogicalDisk -Computer $pcname | ForEach {$_.name, [math]::truncate($_.freespace / 1GB)}
#$internetverbindung = Test-NetConnection 213.183.81.10 | select Pingsucceeded
#New-item c:\PC-Info\$date.txt -force -value "$Titel `r`n`r`nComputername:          $pcname`r`n`r`nWindowsversion:        $OSversion`r`n`r`nangemeldeter Benutzer: $benutzer`r`n`r`nDomäne:                $domäne`r`n`r`nInternetverbindung:    $internetverbindung`r`n`r`n$speicher"  

function Get-ScriptDirectory {
    $Invocation = (Get-Variable MyInvocation -Scope 1).Value
    Split-Path $Invocation.MyCommand.Path
} #Sucht den aktuellen Speicherort des Skriptes



switch ($speicherort){
1 {$pfad = "C:\Users\$benutzer\Desktop"}  
2 {$pfad = Get-ScriptDirectory}
} #Wählt den Speicherort zwischen Desktop und aktuellem Verzeichnis


New-item $pfad\Info.$pcname.$dateiname.log -force -type file -value "   
_______________________________________________________________
                         |
Datum, Uhrzeit           | $datumzeit
_________________________|_____________________________________
                         |                       
Computername:            | $pcname               
_________________________|_____________________________________
                         |                       
Domäne:                  | $domäne           
_________________________|_____________________________________
                         |                       
angemeldeter Benutzer:   | $benutzer             
_________________________|_____________________________________
                         |                       
Windowsversion:          | $OSversion                
_________________________|_____________________________________
                         |                       
Internetverbindung:      | $internetverbindung   
_________________________|_____________________________________
                         |                       
Speicher in C:/          | $gesamt GB gesamt, $frei GB frei      
_________________________|_____________________________________
                       

"   
#erstellt die Log-Datei mit allen Infos



$mail = Read-Host "Soll die Datei per E-Mail versendet werden? (ja/nein)" #Fragt den Nutzer ob die Datei per Mail verschickt werden soll  

switch ($mail){
ja {
$absender = Read-Host "Bitte den Absender eingeben"  
$empfänger = Read-Host "Bitte den Empfänger eingeben"  
$server = Read-Host "Bitte den SMTP-Server eingeben"  
$ssl = Read-Host "Möchten Sie eine SSL-Verbindung nutzen? (Standard: nein)"  
$betreff = Read-Host "Bitte den Betreff eingeben"  
$text = Read-Host "Bitte einen E-Mailtext eingeben"  
}
nein {exit}
}
#Fragt die nötigen infos zur Mail vom Benutzer ab

switch ($ssl){
ja {Send-MailMessage -From "$absender" -to "$empfänger" -Subject "$betreff" -Body "$text"  -SmtpServer "$server" -UseSSL -Port 587 -Credential "$absender" -Attachments "$pfad\Info.$pcname.$dateiname.log"}  
nein {Send-MailMessage -From "$absender" -to "$empfänger" -Subject "$betreff" -Body "$text"  -SmtpServer "$server" -Credential "$absender" -Attachments "$pfad\Info.$pcname.$dateiname.log"}  
}
#Fragt ab ob eine SSL-Verschlüsselung gewünscht ist und sendet die E-Mail mit allen Infos ab

Read-Host "[Enter] drücken um das Skript zu beenden" #Pausiert das Skript vor dem Schließen solange, bis der Nutzer eine Taste drückt. Dadurch kann er Fahlermeldungen lesen und kopieren.  


Danke schonmal im Vorraus

Gruß Timo

Content-ID: 309694

Url: https://administrator.de/contentid/309694

Ausgedruckt am: 17.11.2024 um 05:11 Uhr

129813
129813 13.07.2016 aktualisiert um 12:22:01 Uhr
Goto Top
????
ich habe in meinem Praktikum die Aufgabe bekommen ein PowerShell-Skript zu erstellen
So we should do your work here face-sad ? Or what's the question here?

Regards
SlainteMhath
SlainteMhath 13.07.2016 um 12:33:08 Uhr
Goto Top
Moin,

sollen wir jetzt wirklich deine 100+ Zeilen Code mit deinen Vorgaben abgleichen? O.o Sicher nicht!

Stell konkrete Fragen, dann wird dir auch geholfen.

lg,
Slainte
112Timo
112Timo 13.07.2016 um 12:39:55 Uhr
Goto Top
Könnt ihr mir bitte wenigstens bei Teilbereichen helfen wie z.B. das Suchen und loggen der .pst Dateien. (Ich habe keine Ahnung was ich dabei machen soll)
129813
Lösung 129813 13.07.2016 aktualisiert um 12:46:19 Uhr
Goto Top
Zitat von @112Timo:
wie z.B. das Suchen und loggen der .pst Dateien. (Ich habe keine Ahnung was ich dabei machen soll)
gci c:\*.pst -Recurse -Force -File -EA Ignore
112Timo
112Timo 13.07.2016 um 12:56:40 Uhr
Goto Top
Danke aber ich bekomme keine Ausgabe
unbenannt
129813
Lösung 129813 13.07.2016 aktualisiert um 14:01:59 Uhr
Goto Top
Then you didn't use at least PS 3.0 with PS 2.0 you have to write
gci c:\*.pst -Recurse -Force -EA SilentlyContinue | ?{!$_.PSIsContainer}
Otherwise you have no access to the directories where the files are located. That's normal if you start the script as simple user without elevation and want to search the whole drive, that doesn't work because of permissions face-wink!

You still have to learn a lot my friend face-wink
SlainteMhath
SlainteMhath 13.07.2016 um 13:54:16 Uhr
Goto Top
Danke aber ich bekomme keine Ausgabe
Gibt's denn auf der Maschine PST Dateien?

You still have to learn a lot my friend
I second that face-smile
112Timo
112Timo 18.07.2016 um 08:23:03 Uhr
Goto Top
Zitat von @SlainteMhath:

Danke aber ich bekomme keine Ausgabe
Gibt's denn auf der Maschine PST Dateien?


Klar die gibt es aber ich kenne den Pfad nicht und soll diesen per Skript rassuchen und in eine Datei eintragen.

Sorry wenn ich mich oben so seltsam ausgedrückt habe

Gruß Timo