PowerCLI SCRIPTS

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() }

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir