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
- Namen
- Server
- E-mail-Adresse
- Zusätzliche Konten
2.2
2.3
- Treiber
- Freigegeben?
2.4
2.5
2.6
2.7
und das ist mein bisheriges Skript:
Danke schonmal im Vorraus
Gruß Timo
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
- Namen
- Server
- E-mail-Adresse
- Zusätzliche Konten
2.2
- Registry-Backup erstellen
2.3
- Druckerelemente und Scanner auslesen und in Configfile ablegen
- 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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 309694
Url: https://administrator.de/contentid/309694
Ausgedruckt am: 17.11.2024 um 05:11 Uhr
8 Kommentare
Neuester Kommentar
????
Regards
ich habe in meinem Praktikum die Aufgabe bekommen ein PowerShell-Skript zu erstellen
So we should do your work here ? Or what's the question here?Regards
Zitat von @112Timo:
wie z.B. das Suchen und loggen der .pst Dateien. (Ich habe keine Ahnung was ich dabei machen soll)
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
Then you didn't use at least PS 3.0 with PS 2.0 you have to write
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 !
You still have to learn a lot my friend
gci c:\*.pst -Recurse -Force -EA SilentlyContinue | ?{!$_.PSIsContainer}
You still have to learn a lot my friend