Son 30 günde yeni açılan sunucu adı, sunucuyu açan kullanıcı ve sunucu açılış tarihini getirir.
Get-VIEvent -maxsamples 1000000 -Start (Get-Date).AddDays(–30) | where {$_.Gettype().Name-eq "VmCreatedEvent" -or $_.Gettype().Name-eq "VmBeingClonedEvent" -or $_.Gettype().Name-eq "VmBeingDeployedEvent"} |Sort CreatedTime -Descending | Select CreatedTime, UserName,FullformattedMessage | Export-Csv -Path C:\Users\ozgur.mazlum\Desktop\tesx.csv -NoTypeInformation
Linux işletim sistemlerine göre sunucu listesi, hostname, Operating System ve IP adreslerini listeler.
Get-VM | Where-Object {$_.guest.GuestFamily -eq "linuxGuest" }|Select-Object Name, @{N="GuestFamily";E={@($_.guest.GuestFamily)}}, @{N="OS Full Name";E={($_.Guest.OSFullName)}},@{N="IP";E={($_.Guest.IpAddress[0])}},@{N="HostName";E={($_.Guest.HostName)}} | Export-Csv -Path C:\Users\ozgur.mazlum\Dropbox\Scripts\azirliste2.csv -NoTypeInformation
Vcenter üzerindeki hostları saatlerini çekerek hatalı güncel olmayanları bulmanızı sağlar.
Get-VMHost | sort Name | select Name,@{Name="Current VMHost Time";Expression={(Get-View $_.ExtensionData.ConfigManager.DateTimeSystem).QueryDateTime()}}
ESXi sunucular üzerinde koşan vmware guestlerin sunucu içersindeki bilgilere vmwaretools aracılığı ile ulaşabiliyoruz. Aşağıdaki script ile beraber sunucuların sunucu disk boyutu ve % kaç boş alanı kaldığı bilgilsini alabilirsiniz.
ForEach ($VM in Get-VM ){ ($VM.Extensiondata.Guest.Disk | Select @{N=”SunucuAdi”;E={$VM.Name}},DiskPath, @{N=”Capacity(MB)”;E={[math]::Round($_.Capacity/ 1MB)}}, @{N=”BosAlan (MB)”;E={[math]::Round($_.FreeSpace / 1MB)}}, @{N=”BosAlan %”;E={[math]::Round(((100* ($_.FreeSpace))/ ($_.Capacity)),0)}}) | Format-Table -AutoSize}
Vmware Hostlarda update işlemleri yaptığınızda vmware tools versiyonlarını da güncellemeniz gerekecektir. Hangi sunucularda eski versiyon kullanıldığını listelemek için powerCLI ile versiyon numaralarına göre sıralamada aşağıdaki kodu kullanabilirsiniz.
Get-VM | Get-VMGuest | Select VmName, ToolsVersion |Sort-Object ToolsVersion |Format-Table -AutoSize
Powershell ile smtp authentication ile mail göndermek için aşağıdaki scripti kullanabilirsiniz.
$SMTPServer = "mail.ozgurmazlum.com" $SMTPPort = "587" $Username = "ozgur@ozgurmazlum.com" $Password = "pass123" $sunucu = hostname $to = "mazlum_ozgur@yahoo.com" $cc = "ozgurmazlum@outlook.com" $subject = "Subject" $body = "Mail Body Message" $attachment = "C:\test.txt" $message = New-Object System.Net.Mail.MailMessage $message.subject = $subject $message.body = $body $message.to.add($to) $message.cc.add($cc) $message.from = $username $message.attachments.add($attachment) $smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort); #$smtp.EnableSSL = $true $smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password); $smtp.send($message)
Aralıklarla sisteme hatalı giriş yapmayı deneyen kullanıcıları ve IP adreslerini listelemek için aşağıdaki powercli scrtini kullanabilirsiniz.
Get-VIEvent -MaxSamples 10000 -Types Error | Where-Object {$_.FullFormattedMessage -Like "Cannot login*"} | Select-Object IpAddress, CreatedTime, UserName, FullFormattedMessage
Powershell üzerinde filtreleme yaparken kesin bir güne ait logları arama yaptırmak isterseniz gt kullanamazsınız -eq parametresi kullandığınızda da Get-Date ile tam eşleştirme yapamayacaktır. Bu nedenle Laswrite yada Last Modifytme propertysini ToShortDateString formatına çevirmemiz gerekiyor aynı şekilde (Get-Date).ToShortDateString() içinde ilgili convert işlemini yaptığımız bu güne ait dosyaları eşleştirecektir.
Get-ChildItem -Path E:\LOG\ -Recurse | where {$_.LastWriteTime.ToShortDateString() -eq (Get-Date).ToShortDateString() }