Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Powershell (.ps1) via Batch (.cmd) starten (Aufgabenplanung)

Mitglied: 101462

101462 (Level 1)

25.07.2011 um 13:31 Uhr, 16289 Aufrufe, 2 Kommentare

Windows Small Business Server 2008
.ps1 & .cmd

Ich habe eine Powershell-Datei (.ps1), die bei meim Server und diversen PC's den Festplattenspeicher ausliest und mir den Bericht per Email zu kommen lässt.

01.
# First lets create a text file, where we will later save the freedisk space info
02.
$freeSpaceFileName = "FreeSpace.htm"
03.
$serverlist = "sl.txt"
04.
$warning = 25
05.
$critical = 10
06.
New-Item -ItemType file $freeSpaceFileName -Force
07.
# Getting the freespace info using WMI
08.
#Get-WmiObject win32_logicaldisk  | Where-Object {$_.drivetype -eq 3} | format-table DeviceID, VolumeName,status,Size,FreeSpace | Out-File FreeSpace.txt
09.
# Function to write the HTML Header to the file
10.
Function writeHtmlHeader
11.
{
12.
param($fileName)
13.
$date = ( get-date ).ToString('yyyy/MM/dd')
14.
Add-Content $fileName "<html>"
15.
Add-Content $fileName "<head>"
16.
Add-Content $fileName "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>"
17.
Add-Content $fileName '<title>EVOLUTION.COM DiskSpace Report</title>'
18.
Add-Content $fileName '<STYLE TYPE="text/css">'
19.
Add-Content $fileName  "<!--"
20.
Add-Content $fileName  "td {"
21.
Add-Content $fileName  "font-family: Tahoma;"
22.
Add-Content $fileName  "font-size: 11px;"
23.
Add-Content $fileName  "border-top: 1px solid #999999;"
24.
Add-Content $fileName  "border-right: 1px solid #999999;"
25.
Add-Content $fileName  "border-bottom: 1px solid #999999;"
26.
Add-Content $fileName  "border-left: 1px solid #999999;"
27.
Add-Content $fileName  "padding-top: 0px;"
28.
Add-Content $fileName  "padding-right: 0px;"
29.
Add-Content $fileName  "padding-bottom: 0px;"
30.
Add-Content $fileName  "padding-left: 0px;"
31.
Add-Content $fileName  "}"
32.
Add-Content $fileName  "body {"
33.
Add-Content $fileName  "margin-left: 5px;"
34.
Add-Content $fileName  "margin-top: 5px;"
35.
Add-Content $fileName  "margin-right: 0px;"
36.
Add-Content $fileName  "margin-bottom: 10px;"
37.
Add-Content $fileName  ""
38.
Add-Content $fileName  "table {"
39.
Add-Content $fileName  "border: thin solid #000000;"
40.
Add-Content $fileName  "}"
41.
Add-Content $fileName  "-->"
42.
Add-Content $fileName  "</style>"
43.
Add-Content $fileName "</head>"
44.
Add-Content $fileName "<body>"
45.

46.
Add-Content $fileName  "<table width='100%'>"
47.
Add-Content $fileName  "<tr bgcolor='#CCCCCC'>"
48.
Add-Content $fileName  "<td colspan='7' height='25' align='center'>"
49.
Add-Content $fileName  "<font face='tahoma' color='#003399' size='4'><strong>EVOLVE.COM DiskSpace Report - $date</strong></font>"
50.
Add-Content $fileName  "</td>"
51.
Add-Content $fileName  "</tr>"
52.
Add-Content $fileName  "</table>"
53.

54.
}
55.

56.
# Function to write the HTML Header to the file
57.
Function writeTableHeader
58.
{
59.
param($fileName)
60.

61.
Add-Content $fileName "<tr bgcolor=#CCCCCC>"
62.
Add-Content $fileName "<td width='10%' align='center'>Drive</td>"
63.
Add-Content $fileName "<td width='50%' align='center'>Drive Label</td>"
64.
Add-Content $fileName "<td width='10%' align='center'>Total Capacity(GB)</td>"
65.
Add-Content $fileName "<td width='10%' align='center'>Used Capacity(GB)</td>"
66.
Add-Content $fileName "<td width='10%' align='center'>Free Space(GB)</td>"
67.
Add-Content $fileName "<td width='10%' align='center'>Freespace %</td>"
68.
Add-Content $fileName "</tr>"
69.
}
70.

71.
Function writeHtmlFooter
72.
{
73.
param($fileName)
74.

75.
Add-Content $fileName "</body>"
76.
Add-Content $fileName "</html>"
77.
}
78.

79.
Function writeDiskInfo
80.
{
81.
param($fileName,$devId,$volName,$frSpace,$totSpace)
82.
$totSpace=[math]::Round(($totSpace/1073741824),2)
83.
$frSpace=[Math]::Round(($frSpace/1073741824),2)
84.
$usedSpace = $totSpace - $frspace
85.
$usedSpace=[Math]::Round($usedSpace,2)
86.
$freePercent = ($frspace/$totSpace)*100
87.
$freePercent = [Math]::Round($freePercent,0)
88.
 if ($freePercent -gt $warning)
89.
 {
90.
 Add-Content $fileName "<tr>"
91.
 Add-Content $fileName "<td>$devid</td>"
92.
 Add-Content $fileName "<td>$volName</td>"
93.

94.
 Add-Content $fileName "<td>$totSpace</td>"
95.
 Add-Content $fileName "<td>$usedSpace</td>"
96.
 Add-Content $fileName "<td>$frSpace</td>"
97.
 Add-Content $fileName "<td>$freePercent</td>"
98.
 Add-Content $fileName "</tr>"
99.
 }
100.
 elseif ($freePercent -le $critical)
101.
 {
102.
 Add-Content $fileName "<tr>"
103.
 Add-Content $fileName "<td>$devid</td>"
104.
 Add-Content $fileName "<td>$volName</td>"
105.
 Add-Content $fileName "<td>$totSpace</td>"
106.
 Add-Content $fileName "<td>$usedSpace</td>"
107.
 Add-Content $fileName "<td>$frSpace</td>"
108.
 Add-Content $fileName "<td bgcolor='#FF0000' align=center>$freePercent</td>"
109.
 #<td bgcolor='#FF0000' align=center>
110.
 Add-Content $fileName "</tr>"
111.
 }
112.
 else
113.
 {
114.
 Add-Content $fileName "<tr>"
115.
 Add-Content $fileName "<td>$devid</td>"
116.
 Add-Content $fileName "<td>$volName</td>"
117.
 Add-Content $fileName "<td>$totSpace</td>"
118.
 Add-Content $fileName "<td>$usedSpace</td>"
119.
 Add-Content $fileName "<td>$frSpace</td>"
120.
 Add-Content $fileName "<td bgcolor='#FBB917' align=center>$freePercent</td>"
121.
 # #FBB917
122.
 Add-Content $fileName "</tr>"
123.
 }
124.
}
125.
Function sendEmail
126.
{ param($from,$to,$subject,$smtphost,$htmlFileName)
127.
$body = Get-Content $htmlFileName
128.
$smtp= New-Object System.Net.Mail.SmtpClient $smtphost
129.
$msg = New-Object System.Net.Mail.MailMessage $from, $to, $subject, $body
130.
$msg.isBodyhtml = $true
131.
$smtp.send($msg)
132.

133.
}
134.

135.
writeHtmlHeader $freeSpaceFileName
136.
foreach ($server in Get-Content $serverlist)
137.
{
138.
 Add-Content $freeSpaceFileName "<table width='100%'><tbody>"
139.
 Add-Content $freeSpaceFileName "<tr bgcolor='#CCCCCC'>"
140.
 Add-Content $freeSpaceFileName "<td width='100%' align='center' colSpan=6><font face='tahoma' color='#003399' size='2'><strong> $server </strong></font></td>"
141.
 Add-Content $freeSpaceFileName "</tr>"
142.

143.
 writeTableHeader $freeSpaceFileName
144.

145.
 $dp = Get-WmiObject win32_logicaldisk -ComputerName $server |  Where-Object {$_.drivetype -eq 3}
146.
 foreach ($item in $dp)
147.
 {
148.
 Write-Host  $item.DeviceID  $item.VolumeName $item.FreeSpace $item.Size
149.
 writeDiskInfo $freeSpaceFileName $item.DeviceID $item.VolumeName $item.FreeSpace $item.Size
150.

151.
 }
152.
Add-Content $freeSpaceFileName "</table>"
153.
}
154.
writeHtmlFooter $freeSpaceFileName
155.
$date = ( get-date ).ToString('yyyy/MM/dd')
156.
sendEmail send@email.com receive@email.com "Disk Space Report - $Date" hub1 $freeSpaceFileName
Wenn ich diese besagte Powershell-Datei aufrufe via powershell oder cmd funktioniert alles

Auszug aus cmd:
01.
@echo off
02.

03.
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe ". 'C:\Program Files\bin\FreeSpace.ps1'"
04.

05.
exit
füge ich diese cmd in die Aufgabenplanung ein, steht zwar da, das die ps-datei ausgeführt wurde, aber in der email seh ich nur eine Zeile (Überschrift).

Eine ähnliche ps1 datei die ich über Exchange-Verwaltungsconsole aufrufe über cmd und Aufgabenplanung funktioniert einwandfrei. Nur diese nicht.


Danke im Voraus
Mitglied: filippg
25.07.2011 um 20:46 Uhr
Hallo,

eine EMail bekommst du aber? Dann wird ja das Skript selber schonmal ausgeführt.
Wenn der Tabellenheader drin ist, aber keine Diskdaten, liegt der Verdacht nahe, dass keine Diskdaten ausgelesen wurden.
Kann natürlich daran liegen, dass der Nutzer, der den Scheduled Task ausführt nicht für WMI berechtigt ist. Hast du das schon sichergestellt?
Mein Tipp wäre aber erstmal, dass das Arbeitsverzeichnis nicht stimmt. Die sl.txt gibst du nur als relativen Dateinamen an, nicht absolut. Versuch doch das mal.

Gruß

Filipp
Bitte warten ..
Mitglied: 101462
26.07.2011 um 06:45 Uhr
Man dankt =)

Ja, Email hatte ich bekommen, allerdings nur die Überschrift wurde ausgegeben ...
Script wurde im Aufgabenplaner schon als Administrator ausgeführt (daran lags nicht)

Deine Lösung mit der Anpassung des Pfades hat gepasst:

Vorher:
01.
# First lets create a text file, where we will later save the freedisk space info
02.
$freeSpaceFileName = "FreeSpace.htm"
03.
$serverlist = "sl.txt"
04.
[...]
Nachher:
01.
# First lets create a text file, where we will later save the freedisk space info
02.
$freeSpaceFileName = "FreeSpace.htm"
03.
$serverlist = "C:\reports\sl.txt"
04.
[...]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Windows Update per .cmd oder .ps1 ausblenden

gelöst Frage von playmenBatch & Shell12 Kommentare

Hallo Ich habe eine Frage. Ist es möglich das Windows Update (KB3035583) mit einem CMD oder ps1 Befehl automatisch ...

Batch & Shell

Powershell-ISE - Buggy? Start-Process cmd - mit anderen Credentials

Frage von Raaja89Batch & Shell8 Kommentare

Hallo zusammen, ich habe folgenden Befehlt: Als Get-Credential wird ein Benutzer mit Admin Rechten benutzt Warum funktioniert dieser Befehl ...

Batch & Shell

PowerShell Aufgabenplanung Share AccessDenied

Frage von MarabuntaBatch & Shell1 Kommentar

Hallo, mein Problem ist, dass der Zugriff auf das Shareverzeichnis verweigert wird. Dabei wird kein Netzlaufwerk verwendet(hat auch nicht ...

Batch & Shell

Powershell gci in Aufgabenplanung

gelöst Frage von Druide83Batch & Shell3 Kommentare

Hallo, ich bin langsam am verzweifeln. Ich habe ein Skript, das über Powershell und ISE normal funktioniert, aber über ...

Neue Wissensbeiträge
Firewall
PfSense 2.5.0 benötigt doch kein AES-NI
Tipp von ChriBo vor 1 TagFirewall1 Kommentar

Hallo, Wie sich einige hier erinnern werden hat Jim Thompson in diesem Aritkel beschrieben, daß ab Version 2.5.0 ein ...

Internet
Copyright-Reform: Upload-Filter
Information von Frank vor 2 TagenInternet1 Kommentar

Hallo, viele Menschen reden aktuell von Upload-Filtern. Sie reden darüber, als wären es eine Selbstverständlichkeit, das Upload-Filter den Seitenbetreibern ...

Google Android

Blokada: Tracking und Werbung unter Android unterbinden

Information von AnkhMorpork vor 2 TagenGoogle Android1 Kommentar

In Ergänzung zu meinem vorherigen Beitrag: Blokada efficiently blocks ads, tracking and malware. It saves your data plan, makes ...

Google Android
Facebooks unsichtbare Datensammlung
Information von AnkhMorpork vor 2 TagenGoogle Android2 Kommentare

Rund 30 Prozent aller Apps im Play-Store nehmen Kontakt zu Facebook auf, sobald man sie startet. So erfährt der ...

Heiß diskutierte Inhalte
Linux Userverwaltung
LogIn Versuche beschränken auf EINEN Versuch
gelöst Frage von GarroshLinux Userverwaltung23 Kommentare

Folgendes Problem Ich habe einen dezidierten Server beim Hoster gemietet, installiert ist Ubuntu 18.04.2 LTS‬ und als Webinterface Plesk. ...

Backup
Wo installiert man Veeam bei SoHo?
Frage von EDVMan27Backup14 Kommentare

Hallo, nachdem ich die neue Veeam CE bei mir getestet habe, wollte ich es einmal bei einem Kunden testen. ...

Ubuntu
Exchange Alternative auf Ubuntu
Frage von TELLOUbuntu11 Kommentare

Hi NG, wir müssen für unsere Kleine Firma (5 User) das Email / Kalendersystem neu einrichten. Ich könnte jetzt ...

Batch & Shell
Tasklist überprüfen
Frage von IleiesBatch & Shell10 Kommentare

Hallo zusammen, Wie kann ich in Batch überprüfen, ob gerade der Prozess "Skype.exe" ausgeführt wird? Also nicht so dass ...