ESXI Lieblings CLI Befehle

Zuerst meinen öffentlich SSH-Key hinzufügen. Das macht den Zugriff auf die Root-Konsole wesentlich einfacher:

echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCw70ZfkRAD4/EWSt9pN2agjEnY6eO16+pP+jKhZCtI621D80zeQP3MYCC88HLmojEnGeZg1QO7XWeObpqoHsYnJYT6uoxszkzQCUXuMP1n2pPSMnqb4MBZQauSfk8pDVF/riA5YcTQ7b2oUSuSzHPmURqELdVSv5EFek9HT9TdZf1NhEr2R8Z4gO9tgWVBndbrtgirk0Tyj+k2ctyiyGwkYHIQKRITjW1tmGwrl/TQAj5s2431yN8eL4YNWlCbv7uoS3PlIb3d5qjEZ4WDU4Rxm8MF3L+20emZ55WXDSEGj8qaKATsoN7q9bubrK7aIXQZomei/XchtqCkwMFGG/Fl herter" >> /etc/ssh/keys-root/authorized_keys 

SSH einschalten. (Das geht natürlich nur von der Konsole oder mittels IPMI aus.

vim-cmd hostsvc/enable_ssh 

Alle virtuellen Maschinen auflisten

vim-cmd vmsvc/getallvms

Derzeit laufende virtuelle Maschinen kann man mit folgendem Befehl auflisten

esxcli vm process list

Virtuelle Maschine starten

vim-cmd vmsvc/power.on {VMID}

Virtuelle Maschine herunterfahren bzw. hart ausschalten

vim-cmd vmsvc/power.shutdown {VMID}
vim-cmd vmsvc/power.off {VMID}

Viele weitere Parameter von vim-cmd gibt es mit

vim-cmd help

Wartungsmodus einschalten bzw. ausschalten

vim-cmd hostsvc/maintenance_mode_enter
vim-cmd hostsvc/maintenance_mode_exit

Host herunterfahren

poweroff

Host neustarten

reboot

S.M.A.R.T Festplattenstatus

SMART steht für Self-Monitoring, Analysis and Reporting Technology, zu deutsch: Selbstüberwachung, Analyse und Aufzeichnung.
Alle Festplatten prüfen automatisch, ob und wie oft es zum Beispiel zu Lese- und Schreibfehlern gekommen ist oder welche Festplattenbereiche defekt und ausgefallen sind. Die Daten legt die Festplatte im internen SMART-Speicher ab.

Hier (Webfund) mal die wichtigsten Werte und dessen Bedeutung:

Raw_Read_Error_Rate

Anzahl der bislang aufgetretenen Lesefehler. Kritisch: Viele Lesefehler deuten auf einen drohenden Festplattenausfall hin.

Spin_Up_Time

Durchschnittliche Zeit in Millisekunden, bis die Platte die volle Umdrehungsgeschwindigkeit erreicht. Kritisch: Niedrige Werte deuten auf einen Lager- oder Motorschaden hin.

Start_Stop_Count

Anzahl, wie oft der Festplattenmotor eingeschaltet wurde. Unkritisch: Hohe Werte sind unkritisch.

Reallocated_Sector_Ct

Anzahl der bisher genutzten Reservesektoren der Festplatten. Sehr kritisch: Hohe Werte deuten auf einen drohenden Festplattenausfall, da normale Bereiche der Festplatte bereits ausgefallen sind und die Platte auf die Reservesektoren zurückgreifen muss.

Seek_Error_Rate

Anzahl der Positionierungsfehler des Schreib-/Lesekopfs. Kritisch: Hohe oder steigende Werte deuten auf einen drohenden Festplattenausfall.

Seek_Time_Performance

Durchschnittliche Zeit zum Positionieren der Schreib-/Leseköpfe. Kritisch: Niedrige Werte deuten auf ein mechanisches Problem hin.

Power_On_Hours

Bisherige Betriebsdauer der Festplatte in Stunden, bei einigen Festplatten (z.B. Samsung SV1604 N) in Minuten. Kritisch, wenn die Betriebsstunden die vom Hersteller angegebene Lebenserwartung (MTBF, Mean Time Before Failure) erreicht.

Spin_Retry_Count

Anzahl der Startversuche der Festplatte. Kritisch: Hohe oder steigende Werte deuten auf einen drohenden Festplattenausfall aufgrund defekter Lager oder Festplattenmotoren hin.

End-to-End-Error

Anzahl der fehlerhaften Daten, die vom internen Speicher auf die Festplatte geschrieben wurden. Kritisch: Hohe oder steigenden Werte deuten auf einen Festplatten- oder Festplattenspeicherfehler hin.

Temperature_Celsius

Aktuelle Festplattentemperatur. Kritisch, wenn die Temperatur über der vom Hersteller angegebenen Höchsttemperatur (meist 60° C) liegt).

UMDA_CRC_Error_Count

Anzahl der Prüfsummenfehler (Übertragungfehler) bei der Datenübertragung. Kritisch: Hohe Werte deuten auf defekte Kabel, Steckkontakte oder Controller oder fehlerhafte Treiber hin.

Smart Werte

Exchange PowerShell Snippets

Hier möchte ich von mir häufig benutzte Exchange PowerShell Befehle notieren.

Nachrichtentracking, wurde Mail an den Connector übermittelt?

Get-MessageTrackingLog -EventId Send -ResultSize Unlimited -Sender [sender@mail] -Recipients [empfänger@mail] | Format-List Time*,MessageSubject,SourceCo*,Send*,Recipient*
  

Weiterleitungen ermitteln

Get-Mailbox -ResultSize unlimited | Where-Object {$_.ForwardingSMTPAddress -ne $null} | Select-Object Name,ForwardingSMTPAddress

Verteilergruppen ermitteln und abspeichern

write-output “” > C:\temp\outputDGmembers.txt
get-distributiongroup | Sort -Property DisplayName | foreach {
$name = $_.displayname
$mailadresse = $_.PrimarySmtpAddress
$output = ‘Group Name: ‘ + $Name + ' ' + $mailadresse
write-output $output >> C:\temp\outputDGmembers.txt
Get-DistributionGroupMember $name | Sort -Property DisplayName | Select DisplayName, Alias, Department >> C:\temp\outputDGmembers.txt
write-output “” “” >> C:\temp\outputDGmembers.txt
}

Senden-Als Berechtigungen ermitteln (kann länger dauern)

Get-Mailbox | Get-ADPermission | where {($_.ExtendedRights -like '*Send*') -and -not ($_.User -like "NT-AUTORITÄT\SELBST")}  | Format-Table -Auto Identity,User,Deny,ExtendedRights

Senden im Auftrag ermitteln (kann länger dauern)

Get-Mailbox | Where-Object {$_.GrantSendOnBehalfTo -ne $null} | fl DisplayName,Alias,Identity,GrantSendOnBehalfTo

Vollzugriff auf Postfach ermitteln (alle)

$nbdomain = "NetBIOS-DOMAIN"
Get-Mailbox | Get-mailboxPermission | Where-Object { ($_.accessRights -like "*fullaccess*") -and -not ($_.User -like "nt-autorität\selbst") -and -not ($_.User -like "$nbdomain\Domänen-Admins")-and -not ($_.User -like "$nbdomain\Organisations-Admins") -and -not ($_.User -like "$nbdomain\Organization Management") -and -not ($_.User -like "$nbdomain\Administrator") -and -not ($_.User -like "$nbdomain\Exchange Servers") -and -not ($_.User -like "$nbdomain\Exchange Trusted Subsystem") -and -not ($_.User -like "nt-autorität\system")} | ft -AutoSize

Berechtigung eines einzelnen Postfachs auslesen

$user = "k.mustermann"
get-mailbox -identity $user| Get-MailboxPermission | ?{($_.IsInherited -eq $False) -and -not ($_.User -match "SELBST")} | ft $user,User,AccessRights -AutoSize

Mailbox Exportieren vorbereiten. Dieser Nutzer hat nach dem Neustart der Powershell das Recht Postfächer zu ex- bzw. importieren.

New-ManagementRoleAssignment -Role "Mailbox Import Export" -User <BENUTZERAME>

Postfach exportieren

New-MailboxExportRequest -Mailbox <username> -FilePath \\servername\verzeichnis\username.pst

Postfach importieren

New-MailboxImportRequest -Mailbox <username> -FilePath \\servername\verzeichnis\username.pst

Mailbox Export überwachen

Get-MailboxExportRequest

Bulk Export von Postfächern

$allmailboxes = Get-Mailbox
$allmailboxes |% {$_| New-MailboxExportRequest - FilePath "\\localhost\c$\$($_.Alias).pst"}

DotNet 3x unter Windows 10 nachinstallierten

Am einfachsten geht dies in der (Admin) PowerShell mit folgendem Befehl:

dism.exe /online /enable-feature /featurename:NetFX3 /All 

Sollte keine Internetverbindung bestehen und die Windows 10 Installation DVD zur Hand liegen, so kann man aus dem Ordner Sources das Verzeichnis lxs nach c:\temp kopieren und wie folgt installieren:

dism.exe /online /enable-feature /featurename:NetFX3 /All /Source:c:\temp\sxs /LimitAccess

Versenden von vertraulichen Inhalten per Mail

Wenn Sie heute (vertrauliche) E-Mails versenden, dann ist leider nicht sichergestellt, dass der komplette Kommunikationsweg durchweg verschlüsselt ist. Auch wenn Sie Ihre Daten verschlüsselt bei Ihrem Mailprovider einliefern, kann in der Übertragungskette ein Server die Daten unverschlüsselt weiter geben auf das Sie keinen Einfluss haben.