search
Categories
Sponsors
VirtualMetric Hyper-V Monitoring, Hyper-V Reporting
Archive
Blogroll

Badges
MCSE
Community

Cozumpark Bilisim Portali
Posted in Windows Powershell, Windows Server | No Comment | 9,857 views | 18/01/2009 13:11

Bir önceki uygulamada, Powershell ile bir sayının karekökünün nasıl bulunabildiğini göstermiştim. Fakat şimdiki bölümde, for döngüsünü yayınladığım karekök bulma uygulamasını, PS’de yani Powershell’de nasıl çalıştırabileceğimize göz atacağız. Powershell’in genel olarak uygulama uzantısı .ps1’dir. Notepad içine karekök bulma uygulamasına ait kodları yapıştırır, sonrasında uzantısı .ps1 olacak şekilde kaydederseniz, bundan sonra .ps1 uzantılı uygulamayı ps’ye atmak kalır sadece. Ben az önceki uygulamanın adını karekok.ps1 yapıyorum. Şimdi Powershell üzerinde uygulamayı çalıştırmaya çalışalım. Uygulama çalıştırmak için karekok.ps1 dosyasının olduğu dizine geçiyoruz. Sonrasında PS’de .\karekok.ps1 yazıyoruz. Fakat bir hata mı aldık? PS üzerinde daha önce bir işlem yapmadıysanız, hatta PS’yi ilk açışınız ise bu uygulamayı çalıştırmaya çalışırken karşınıza kırmızı hata yazılarının olduğu bir ekran çıkacaktır. Yalnız bu bize, kodlarda hata olduğunu söylemliyor. Biraz daha dikkatli inceleyelim hatayı.

powershell1

Hatayı daha iyi inceleyebilmemiz için ekran çıktısını aşağıya yazıyorum.

File C:\Users\Administrator\Desktop\karekok.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see “get-help about_signing” for more details.
At line:1 char:13

Hatada bize execution of scripts is disabled diyor. Gerçekten de böyle bir durum söz konusu. Normalde Powershell’de default olarak “ExecutionPolicy” Restricted haldedir. PS’de Get-ExecutionPolicy komutunu çalıştırdığınızda “Restricted” yazdığını göreceksiniz. Bu yüzden imzasız olan uygulamalar, PS üzerinde çalışmamaktadır. Şimdi bizimki gibi uygulamaların da çalışabilmesi için bu sınırlamayı biraz değiştirelim. Bunun için PS’de aşağıdaki komutu yazalım.

1
Set-ExecutionPolicy RemoteSigned

Bu komut sonrasında Get-ExecutionPolicy yaptığımızda, artık Restricted yerine RemoteSigned yazdığını göreceksiniz. Ekran çıktısına bakalım:

powershell2

Şimdi bir sorunumuz kalmamış gibi görünüyor. RemoteSigned nedir, ne işe yarar, faydaları zararları nedir derseniz, bu konuya da bir sonraki makalede değineceğim. Çünkü şuanki konuda amacımız, uygulamamızı çalıştırmak. Bundan sonra yapmanız gereken, tekrar .\karekok.ps1 demek ve programın size doğru karekökü verdiğini izlemek. RemoteSigned ile bundan sonraki uygulamalarımızı çalıştırabilir hale geleceğiz. Bir sorun ile karşılaşırsanız sormaktan çekinmeyin. Kolay gelsin.

Not: Bazen aşağıdaki gibi yapmanız gerekebilir:

Set-ExecutionPolicy Unrestricted

Böylece kendi yazdığınız tüm Powershell scriptleri sorunsuz bir şekilde çalışacaktır.


Posted in Windows Powershell, Windows Server | No Comment | 2,396 views | 18/01/2009 12:06

Madem Powershell öğrenmeye başladık, biraz işin matematik kısmına girelim. Aslında Powershell matematik amaçlı yapılmış bir şey değil fakat dört işlem yapabiliyorsak, matematiksel işlemleri de yaptırabiliriz kendisine. Sanırım Powershell’de böyle bir işlem yaptırmış kişi daha yoktur ya da ben bulamadım. Yalnız ilginizi çekecek bir çalışma olabilir bu. Hiç değilse 13’ün 1000 iterasyon ile bulunan karekökünün 3,60555127546399 olduğunu görmek, hoşuma gitti benim. Haydi başlayım.

1
2
3
4
5
6
7
8
9
$kokubulunacaksayi=13
$ilkdeger=2
$iterasyon=1000
For ($i=0;$i –lt $iterasyon;$i++) {
$sonuc=$kokubulunacaksayi/$ilkdeger
$kok=($ilkdeger+$sonuc)/2
$ilkdeger=$kok
}
$kok

$kokubulunacaksayi olan değişkene 13 dedim. İşleme başlamak için bir tane ilk değer girmek gerekiyor. Bana en mantıklı yol, 13’ün yarısıyla başlamak gibi geldi. Bu yüzden $ilkdeger değişkeni için 2 verdim. Böylece yarısıyla başlayıp, aritmek ortalama ile devam edeceğiz. Sonrasında bir iterasyon sayısı belirlemem gerekiyor. Ne kadar büyük iterasyon sayıları verirsek, bulacağımız sonuç da o kadar yakın çıkacak. For döngüsünü biraz dikkatli inceleyelim. $i değeri 0’dan başlıyor ve 1000 olana kadar devam ediyor. Değerlerimiz 1’er 1’er artıyor. $kok işleminde çıkan sonuç ile $ilkdeger’in aritmetik ortalamasını alıyoruz ve $ilkdeger=$kok ile, $ilkdeger değerinin artık $kok olarak işleme girmesini sağlıyoruz. Tabiki 1000 işlem sonundaki sonucu görebilmek için de döngü sonuna $kok değişkenini koyuyoruz ve bize sonucu vermesini istiyoruz. Burada aslında sizlere for döngüsünü göstermeye çalıştığım. Bir sonraki bölümde while döngüsünü de göreceğiz ve aslında Virtual Machine Manager yani VMM için yazacağımız ufak çaplı scriptlere temel oluşturmuş olacağız. For döngüsüyle yapabilecekleriniz, hayal gücünüzle sınırlı. Kolay gelsin.


Posted in Virtual Machine Manager, Windows Powershell | No Comment | 1,734 views | 17/01/2009 19:15

Bildiğiniz gibi VMM’deki P2V ile yani Physical Server to VM özelliği ile fiziksel sunucularınızı VM haline getirebiliyorsunuz. Aşağıdaki senaryoda, Celeron işlemcili, 256 mb ram ve 80 gb hdd’li, üzerinde external bir ethernet kartı olan Gigabyte marka bir anakarta sahip eski bir sunucuyu, VM0000 isimli bir VM’e çevirmekteyiz. VM0000 isimli sanal sunucumuz, hyperv9 isimli sunucumuzun E:\DATA klasörüne açılacak. Aşağıdaki kodlarda geçmekte olan 71.72.73.74 nolu ip, source makinanın yani Celeron işlemcili makinanın ip adresi. Şimdi Powershell üzerinden nasıl P2V işleminin gerçekleştiğini görelim.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# ------------------------------------------------------------------------------
# Convert Physical Server (P2V) Wizard Script
# ------------------------------------------------------------------------------
# Script generated on 17 Ocak 2009 Cumartesi 15:18:03 by Virtual Machine Manager
#
# For additional help on cmdlet usage, type get-help <cmdlet name>
# ------------------------------------------------------------------------------
 
$Credential = get-credential
 
New-MachineConfig -VMMServer localhost -SourceComputerName "71.72.73.74" -Credential $Credential
 
$VMHost = Get-VMHost -VMMServer localhost | where {$_.Name -eq "hyperv9.radore.net"}
$VirtualNetwork = Get-VirtualNetwork -VMMServer localhost | where {$_.ID -eq "62979deb-730b-448e-9584-dc2431cae46a"}
$MachineConfig = Get-MachineConfig -VMMServer localhost | where {$_.Name -eq "71.72.73.74"}
 
New-P2V -VMMServer localhost -VMHost $VMHost -RunAsynchronously -JobGroup 8c4cf729-baad-4428-a429-5e24a119da45 -SourceNetworkConnectionID "00:02:44:5F:B0:49" -PhysicalAddress "00:02:44:5F:B0:49" -PhysicalAddressType Static -VirtualNetwork $VirtualNetwork -MachineConfig $MachineConfig
 
$VMHost = Get-VMHost -VMMServer localhost | where {$_.Name -eq "hyperv9.radore.net"}
$MachineConfig = Get-MachineConfig -VMMServer localhost | where {$_.Name -eq "71.72.73.74"}
 
New-P2V -VMMServer localhost -VMHost $VMHost -RunAsynchronously -JobGroup 8c4cf729-baad-4428-a429-5e24a119da45 -VolumeDeviceID "C" -Dynamic -IDE -Bus 0 -LUN 0 -MachineConfig $MachineConfig
 
$Credential = get-credential
$VMHost = Get-VMHost -VMMServer localhost | where {$_.Name -eq "hyperv9.radore.net"}
$MachineConfig = Get-MachineConfig -VMMServer localhost | where {$_.Name -eq "71.72.73.74"}
 
New-P2V -Credential $Credential -VMMServer localhost -VMHost $VMHost -Path "E:\DATA" -Owner "VMM\Administrator" -RunAsynchronously -JobGroup 8c4cf729-baad-4428-a429-5e24a119da45 -Trigger -Name "VM0000" -MachineConfig $MachineConfig -CPUCount 1 -MemoryMB 512 -RunAsSystem -StartAction NeverAutoTurnOnVM -StopAction SaveVM

Dikkat edeceğiniz üzere CPUCount 1, yani tek CPU’lu. Bunun yanında 256 mb olan sunucu ram’ini, VM için 512 mb yapmış durumdayız. Source sunucunun, administrator kullanıcı şifresi, “get-credential” komutu ile çekiliyor. Bu komutu powershell üzerinden inceleyebilirsiniz. Yukardaki komutların, size fikir vereceğini düşündüğüm için yazma gereği hissettim.

Yaptığım aktarma sonucu, Celeron işlemcili makina, hiç sorun çıkarmadan, 15 dk içersinde VM haline getirildi. Celeron işlemcili sunucunun 80 gb olan hdd’si, vds olarak E:\DATA klasöründe şuan için sadece 3 gb’lık bir yer kaplıyor. Aktarma sonrasında source sunucuda bir kapanma olmadı ya da aktarma sırasında kesinti yaşamadı. Aktarım sonucu, VM’e baktığımızda, çalışan FTP server (Filezilla Server) çalışmaya devam ediyordu. Yaşadığım tek problem, iki sunucu da aynı ip’ye sahip olduğu için ip çakışması oldu. Bir sonraki makalede, size GUI üzerinden adımları göstereceğim. Görüşmek üzere. Kolay gelsin.


Posted in Virtual Machine Manager, Windows Powershell | No Comment | 3,177 views | 17/01/2009 09:03

Bildiğiniz gibi VMM bir çok işini aslında Powershell aracılığıyla yapmaktadır. Fakat bizim karşımıza sunulan VMM paneli, aslında powershell komutlarını çalıştıran bir GUI’dir. Kendi panelinizi kendiniz yaratmak istiyorsanız ya da hesap paneli üzerinden vm’leri kısıtlı olarak yönetmek istiyorsanız, Powershell komutlarını bilmeniz gerekiyor. Size Powershell üzerinde kullanabileceğiniz temel komutlar vermek istiyorum.

1
get-command -PSSnapin Microsoft.SystemCenter.VirtualMachineManager | group-object verb | sort count

komutu ile VMM için kullanılabilecek temel komutları görebilirsiniz. Bu listeyi açarsak:

Reassociate               {Reassociate-VMMManagedComputer}
Register                    {Register-VM}
Store                       {Store-VM}
Invoke                     {Invoke-PROTip}
Shutdown                 {Shutdown-VM}
Repair                      {Repair-VM}
SaveState                {SaveState-VM}
Start                       {Start-VM}
Resume                    {Resume-VM}
Restart                    {Restart-Job}
Restore                    {Restore-VMCheckpoint}
Suspend                   {Suspend-VM}
DisableUndoDisk         {DisableUndoDisk-VM}
Associate                 {Associate-VMHost}
Backup                    {Backup-VMMServer}
Convert                   {Convert-VirtualDiskDrive}
Compress                 {Compress-VirtualDiskDrive}
Expand                    {Expand-VirtualDiskDrive}
Dismiss                    {Dismiss-PROTip}
DiscardSavedState    {DiscardSavedState-VM}
Merge                     {Merge-VMCheckpoint}
Update                    {Update-VMHost, Update-VMMManagedComputer}
Stop                       {Stop-Job, Stop-VM}
Copy                       {Copy-HardDisk, Copy-VMDK}
Discover                  {Discover-Cluster, Discover-Computer, Discov…
Move                      {Move-VirtualHardDisk, Move-VM, Move-VMHost,…
Refresh                   {Refresh-LibraryShare, Refresh-Virtualizatio…
Add                        {Add-LibraryServer, Add-LibraryShare, Add-Pa…
New                       {New-GuestOSProfile, New-HardwareProfile, Ne…
Remove                   {Remove-GuestOSProfile, Remove-HardwareProfi…
Set                        {Set-GuestOSProfile, Set-HardwareProfile, Se…
Get                        {Get-Certificate, Get-CPUType, Get-Dependent…

Merak ettiğiniz komutlarla ilgili yardım alabilmek için örnek olarak:

1
get-help get-vmhost | more

ya da daha detaylı bilgi için:

1
get-help get-vmhost -detailed | more

Powershell üzerinden yapılan düzenlemelere ben de merak salmış durumdayım. Bu ilk bölüm olsun ve bildiğim temel şeyleri sizlerle paylaşayım istedim. İlerleyen zamanlarda VMM için basit bir web paneli yazacak ve VMM’lerin haftalık raporlarının sunulduğu Web sayfaları hazırlayacağız. Görüşmek üzere.