Skip to main content

· 2 min read

DNS Serverınız üzerinde bir takım değişiklikler yapmak isteyebiliriz. Bunlardan en yorucusu da DNS Server üzerinde tutulan Zone üzerinde yapılan değişikliklerdir. Windows Server 2012 kullanıyorsanız dnscmd yerine direk Powershell DNS Modülü içerisin de ilgili cmdletler üzerinden aynı işlemleri gerçekleştirebiliriz. İlerleyen yazılarımız da Powershell cmdlet kullanarak aynı işlemleri uygulamasını yapacağız. Eğer Windows Server 2008 R2 gibi işletim sistemleri kullanmakta iseniz, bu fonksiyon ile kolayca halledebilirsiniz.

Yapınızda Primary DNS Server bulunmakta ve üzerinde  bir çok domain isimleri tutmaktasınız. İhtiyaçlar doğrultusunda Secondary DNS Server konumlandırmanız gerekiyor, bunun için Primary DNS sunucu üzerinde bazı aksiyonlar almamız gerekiyor.( Secondary DNS Server için Zone Transfer  izinleri.)  Yazmış olduğum Powershell Fonksiyonun çalışma mantığı DNS Server üzerinde bulunan tüm Zone üzerinde Secondary DNS Server için Transfer izinlerini değiştirmek ile ilgili kullanabilirsiniz. DNS Serverınız üzerinde tutmuş olduğunuz tüm zone isimlerini bir  ".txt" içerisine çıkartarak  bu işlem oldukça kolay gerçekleştirebilirsiniz. DNS Konsolu üzerinde "Export List" diyerek çıkarma şansına sahipsiniz.

Primary DNS Server üzerinden çıkarmış olduğunuz zone isimlerinin bir yere kaydedilmesini sağlıyoruz.

DNS-Update Zone isimlerini çağırmak için "Get-Content" cmdlet kullanarak yazmış olduğum fonksiyon içerisine gönderiyorum. "-Verbose" parametresi ile detaylı sonuçlarını görmekteyim.

Get-Content C:\DNS.txt | Update-DNSTransferServer -SecondaryIPAddress 192.168.1.45 -Verbose

DNS-Update2

Başarıyla çalıştıktan sonra, DNS Konsolu üzerinden kontrol ediyorum.

DNS-Update3

Function Update-DNSTransferServer { [cmdletBinding()] param( [Parameter(Mandatory=$True, ValueFromPipeline=$true, Position=0)] [string[]]$Content, [Parameter(Mandatory=$True)] [string]$SecondaryIPAddress ) Begin { Write-Verbose "Zone Transfer içerisine $SecondaryIPAddress Ekleniyor." } Process { foreach ($get in $Content) { dnscmd /ZoneResetSecondaries $get /SecureList $SecondaryIPAddress | Out-Null Write-Verbose "$get adli zone icerisine ZoneTransfer olarak $SecondaryIPAddress eklendi" } } End { Write-Verbose "Basariyla tamamlanmistir." } }

· 3 min read

Powershell ile yazmış olduğum Azure üzerinde storage account oluşturmanızı sağlayan fonksiyon aşağıdaki gibidir. Azure hesabınıza bağlandıktan sonra ilgili fonksiyonu kullanabilirsiniz.

StorageAccount

Function New-StorageAccountMenu { <# .Synopsis Create Storage Account with Powershell function .EXAMPLE New-StorageAccountMenu
#> Write-Host " " Write-Host "Building Azure Storage Account" -ForegroundColor Green #Ask to input the Azure datacenter to use: do{ Write-Host "" Write-Host "[1] West Europe" Write-Host "[2] North Europe" Write-Host "[3] East US 2" Write-Host "[4] East US" Write-Host "[5] Central US" Write-Host "[6] South Central US" Write-Host "[7] West US" Write-Host "[8] Southeast Asia" Write-Host "[9] East Asia" Write-Host "[10] Japan West" Write-Host -NoNewline "Enter the number (1 - 10) of the datacenter location to use: " -ForegroundColor Magenta; [int]$locationnumber=read-host If ($locationnumber -lt 1 -or $locationnumber -gt 10 ) { Write-Host "You did not enter a (1-10) digit number - please check your number" -ForegroundColor Red }}while($locationnumber -lt 1 -or $locationnumber -gt 10) Switch ($locationnumber) { 1{ $location = "West Europe" } 2{ $location = "North Europe" } 3{ $location = "East US 2" } 4{ $location = "East US" } 5{ $location = "Central US" } 6{ $location = "South Central US" } 7{ $location = "West US" } 8{ $location = "Southeast Asia" } 9{ $location = "East Asia" } 10{ $location = "Japan West" } default {$location = "West US" } } Write-Host "" Write-Host "Your datacenter location is: " $location -ForegroundColor Green Do { Write-Host "" Write-Host -NoNewline "What is the first 6 character of your CompanyName (e.g. Adatum): " -ForegroundColor Magenta; $lcnumber=read-host If ($lcnumber.Length -ne 6) { Write-Host "You did not enter 6 character of your CompanyName " -ForegroundColor Red } } While ($lcnumber.Length -ne 6) #Make sure enters a 6 Company char Do { Write-Host "" Write-Host -NoNewline "What is your 2 digit suffix number, including any leading zero (e.g. 09): " -ForegroundColor Magenta; $stnumber=read-host If ($stnumber.Length -ne 2) { Write-Host "You did not enter 2 digit suffix - please check your suffix number" -ForegroundColor Red } } While ($stnumber.Length -ne 2) #Make sure suffix enters a 2 digit number $fullsuffix = $lcnumber + $stnumber Write-Host " " Write-Host "Your unique suffix is: " $fullsuffix -ForegroundColor Green Write-Host " " Start-Sleep -Seconds 5 try{ New-AzureStorageAccount -StorageAccountName $fullsuffix.ToLower() -Location $location | Out-Null
Write-Host " " Write-Host "Storage Account has been created" -ForegroundColor Green Write-Host " " Write-Host "Storage Account name:$fullsuffix" -ForegroundColor Green } catch{ Write-Host "Storage Account couldn't create" } }

· 2 min read

Microsoft Azure üzerinde bulunan sanal makinalarınıza bağlanmak için, Management Portal üzerinden indirdiğiniz Remote Desktop File dosyalarını tek tek indirmek yerine yazmış olduğum Powershell fonksiyonu ile istediğiniz bir dizin içerisine ve indirdiğiniz Remote Desktop File dosyaları içerisinde kullanıcı adınızı gönderme şansınız bulunmaktadır.

Save-AzureRDPFile -SavePath C:\AzureVMFolder

Save-AzureRDPFile -SavePath C:\AzureVMFolder -UserName bilgeadam.com\Hasan.Gural

Function Save-AzureRDPFile{ <# .Synopsis This function provide downloading the Remote Desktop file of Virtual Machine on Azure .DESCRIPTION When you execute that function, it provide create the Remote Desktop File of Virtual Machine on Azure in what you select path. SavePath parameter must be specified as mandatory. Optional Account can add into Remote Desktop file with Username Parameter .EXAMPLE Save-AzureRDPFile -SavePath C:\AzureVMFolder Save-AzureRDPFile -SavePath C:\AzureVMFolder -UserName adatum.com\Hasan.Gural #> Param( [Parameter(Mandatory=$True)] [string]$SavePath, [string]$UserName ) $VerbosePreference = "Continue" $TestPath = Test-Path -Path $SavePath -ErrorAction SilentlyContinue if($TestPath -eq $true){ Write-Host "The Directory way found. - We're good to go." -ForegroundColor Green $AllVM = Get-AzureVM foreach($vm in $AllVM){ $Name = $vm.Name try{ Write-Verbose "Remote Desktop File creating... Virtual Machine name is $Name" $SaveFile = Get-AzureRemoteDesktopFile -ServiceName $vm.ServiceName -Name $vm.Name -LocalPath "$SavePath\$Name.rdp" -ErrorAction Stop -ErrorVariable Err Write-Verbose "Client VM RDP file ($Name.rdp) downloaded to $SavePath" Add-Content $SavePath\$name.rdp -Value username:s:$Username} catch{ Write-Host "Remote Desktop File could not be created" $Err | Out-File C:\RdpLogFile.txt
Write-Host "Log file is created C:\RdpLogfile.txt" } } Write-Host " " Write-Host "All remote desktop files created. Saved path:>>$SavePath" -ForegroundColor Green } else { Write-Host " " Write-Host "The Directory path not found" -ForegroundColor Red -BackgroundColor White Write-Host " "} }

Save-AzureRemoteDesktopFile2

· 3 min read

Azure içerisindeki çeşitli işlemlerinizi gerçekleştirmek için Windows Powershell kullanabilirsiniz. Azure ile ilgili cmdlet'leri kullanmak istiyorsak Azure Powershell modülünü kurmamız gerekmektedir. Azure ile ilgili cmdlet'leri kullanarak, Azure üzerinde aldığınız tüm hizmetlerinizi yönetebilirsiniz. Örnek verecek olursak; Sanal Makine oluşturma, Web Sitesi yönetme, Storage Account, Cloud Services, Resource Manager,Windows Azure Pack vd.

Microsoft Web Platform Installer yükleyerek Azure Powershell modülünü yükleyebilirsiniz. Web Platform Installer şu Link adresten erişebilirsiniz.

İlgili adresten indirme işlemini tamamladıktan sonra, Web Platform Installer çalıştırılır.

Daha sonra ise, karşımıza Install etmek için bir onay bilgisi gelir. Bu kısmı da kabul ederek geçiyorum.

"Install" tıklanır ve kurulum işlemi bittikten sonra, Windows Azure Powershell açılır, dilerseniz Windows Powershell içerisinden "Import-Module Azure" diyerek Azure ile ilgili cmdletlere erişebilirsiniz..

Yüklemiş olduğunuz Azure Module bilgilerini görmek için;

Get-Module –Name Azure | Select-Object Version,Name,Author

Azure hesabıma nasıl bağlanabilirim ?

Azure ile ilgili cmdlet'leri kullanmak için Azure hesabınızı Windows Powershell içerisinde eklemeniz gerekmektedir. Azure hesabınızı Windows Powershell içerisine eklemek için iki yolumuz bulunmaktadır. Windows Powershell ile Azure hesabınızı yönetebilmek için sertifika yada Azure hesabınızı yönetmiş olduğunuz Microsoft Account (Account-Based) ile Windows Powershell eklemeniz gerekmektedir. Eğer Microsoft Account ile eklerseniz, Azure Active Directory tarafından size bir Access token verilerek Azure Powershell cmdtlerlerini kullanmaya başlayabilirsiniz.

Bu yöntemlerden önerilen Account-Based yöntemini kullanmak, başlıca sebepleri içerisinde Azure Resource Manager API içerisine sertifika tabanlı erişim ile ulaşamamaktadır. Certificate-Based erişimler ise daha zor yönetilen olarak gözükmektedir. Subscription ve sertifikanın geçerlilik süresi boyunca Powershell üzerinden Azure hesabınıza bağlanmaya devam edeceksiniz fakat farklı kullanıcılar için yönetim oldukça zor olacaktır.

Account-Based bağlanma yöntemi

Windows Powershell içerisinde, "Add-AzureAccount" cmdlet yazıp çalıştırdığımız zaman karşımıza Sign in penceresi gelecektir. Bu ekranda ilgili hesaplar girilir ve Windows Powershell içerisine Azure hesabı eklenmiş olur.

Hesabınızı başarılı bir şekilde girdikten sonra, aşağıdaki gibi bir sonuç görmem gerekiyor. Id, kısmında Account-Based olarak yaptığım erişim için hesabımın adı yazmaktadır. Dilerseniz mevcut hesaplarınızı "Get-AzureAccount" komutu ile listeleyebilirsiniz.

Powershell ile Azure bağlanmak için Account-Based yöntemini kullandık. Azure hesabınızı eklediğimiz zaman bize Access token verdiğinden bahsetmiştik. Bu profil detayları Appdata\Romaing\WindowsPowershell içerisinde tutulmaktadır.

Powershell üzerinden Azure içerisine göndereceğiniz komutlar için bu TokenCache.Dat dosyasını kullanarak Credentials bilgileriniz önbellek alınmış durumdadır. AzureProfile içerisinde de eklemiş olduğunuz Account bilgileri yer almaktadır. Eğer bu TokenCache.dat silerseniz, Powershell üzerinden tekrar hesabınızı bağlanmanız gerekmektedir.

Certificate-Based bağlanma yöntemi

Sertifika bazlı bağlanmak için Windows Powershell içerisinde "Get-AzurePublishingSettingFile" cmdlet çalıştırarak sizi Azure Management Portal üzerinde özel bir sayfaya yönlendirecektir. Daha sonra o aşamada bir sertifika oluşturup size, ".publishsettings" uzantılı dosya verecektir. Bu dosyanın adı şu şekilde oluşmaktadır.

"SUBSCRİPTİONName-Date-credentials. publishsettings" olarak indirilmektedir. Örnek olarak;

İndirmiş olduğumuz Azure PublishSettingsFile dosyamı Powershell içerisine çağırarak user bazında bir sertifika oluşmasını sağlayacak ve bu sertifika sayesinde Powershell içerisinden Azure hesabımı yönetebileceğim. "PublishSettingsFile" dosyamı powershell içerisine çağırmak için kullanacağım cmdlet "Import-AzurePublishSettingsFile" ve ilgili dosyanın path belirtmek olacaktır.

Import-AzurePublishSettingsFile C:\BilgeAdam-1-5-2015.credentials.publishsettings

İlgili hesap eklendi ve user bazında bir sertifika eklendi. Bu sertifikanın ve subscription geçerli olduğu sürece Azure hesabıma bağlanıp ilgili cmdlet'ler üzerinde çalışmalar yapabileceğim. Dilerseniz sertifikayı erişimi kapatabilirsiniz.

Powershell ile Azure hesabımı bağladıktan sonra, Azure üzerindeki sanal makinalarımı görmek için birkaç cmdlet yazarak sonuçlarına göz gezdirelim. Örnek olarak;

"Get-AzureVM" cmdlet çalıştırarak Azure üzerinde bulunan sanal makinalarımı listeledim.

· 2 min read

Bir önceki yazımızda Powershell 5.0 ile gelen yeniliklerden bahsetmiştik. Yazımıza ilgili link üzerinden ulaşabilirsiniz.

Powershell 5.0 (Windows Management Framework 5.0 Preview) İnceleme Yazısı

Bu yazımızda Powershell 5.0 ile gelen sıkıştırılmış klasörlerimizi yönetmek için kullanacağımız iki adet Cmdlet üzerinden kullanımlarına örnek veriyor olacağız.

Sıkıştırılmış dosyalarımızı yönetmemiz için kullandığımız command-lets aşağıdaki gibidir.

  • Compress-Archive
  • Expand-Archive

Compress-Archive komutu ile biz belirli bir dizin içerisindeki dosyalarımızı sıkıştırabiliriz. Bu komutun "-Path" parametresi ile sıkıştırma işlemine tabi tutmak istediğiniz dosyaların yolunu göstermeniz gerekmektedir. Bununla beraber "-DestinationPath" parametresi kullanmamız gerekiyor sıkıştırılan dosyaların kaydedileceği yeri belirler. Son olarak ise "-CompressionLevel" parametresi üç adet değer almaktadır. Kısaca bunlara göz gezdirelim.

Fastest ile işlem süresini azaltmak için mevcut en hızlı sıkıştırma yöntemini kullanırız fakat bu seçim bize büyük dosya boyutlarına neden olabilir.

NoCompression ile belirtmiş dosyalar üzerinde herhangi bir sıkıştırma yapmaz.

Optimal ile belirtmiş olduğumuz dosyaların sıkıştırılma süresi boyuta bağlıdır.

Not : Bu Parametre zorunlu değildir. Default olarak "Optimal" belirlenmiştir.

Expand-Archive komutu ile sıkıştırılmış dosyalarımızı dışarıya çıkarmayı sağlamaktadır. Bu komutun "-Path" parametresi içerisine sıkıştırılmış dosyalarımızı göstermemiz gerekmektedir. Bununla beraber "-DestinationPath" parametresi ile sıkıştırılmış dosya içerisindeki verilerin nereye çıkartacağımızı belirtiriz.

Kullanım örneklerine biraz inceleyelim, diskimin içerisinde bulunan C:\ZIPFolder içerisinde aşağıdaki şekilde bir çok dosya tipi ve farklı boyutları bulunmaktadır. Bu dosyaların sıkıştırılması için örnek komut;

Compress-Archive –Path C:\ZIPFolder –DestinationPath C:\ZIPFolder\Archive.zip

Çalıştırdıktan sonra sıkıştırma işlemleri sürüyor.

Bittikten sonra, komut içerisinde belirtmiş olduğum dosya yolu içerisinde sıkıştırılmış dosyayı görmekteyim.

Farklı bir örnek ile bahsetmek istiyorum. Gördüğünüz gibi klasör içerisinde farklı formatlar var ve ben bu formatlar içerisinden sadece ".txt" uzantılı olan dosyalarımı sıkıştırma işlemine yapmak istiyorum. Bunun için aşağıdaki örnek size yol gösterecektir.

Son olarak sıkıştırılmış dosyalarımızı nasıl dışarı çıkartabiliriz ile ilgili örnek aşağıdaki gibidir.

Expand-Archive –Path C:\ZIPFolder\Archive.zip –DestinationPath C:\ZIPFolder\Expand

Sonuç aşağıdaki gibidir

· One min read

Hemen hemen farklı yazılım dili ile uğraşanların kenarından bir şekilde uğraştığını bildiğim döviz kurlarını TCMB üzerinden artık powershell ile aşağıdaki yazdığım fonksiyonu kullanarak bakabilirsiniz. TCMB üzerinden günlük döviz kurlarını artık sadece "Get-ExchangeRates" yazarak listeleyebilirsiniz.

Function Get-ExchangeRates { $xml = New-Object xml $xml.Load(‘http://www.tcmb.gov.tr/kurlar/today.xml’) $xml.Tarih_Date.Currency | Where-Object {$PsItem.BankNoteBuying -ne ""} | Select-Object @{n='Para Birimi';e={$PsItem.CurrencyCode}}, @{n='Tarih';e={(get-Date -Format "d/MM/yyyy")}}, @{n='Efektif Alış';e={$PsItem.BankNoteBuying}}, @{n='Efektif Satış';e={$PsItem.BankNoteSelling}} }

Get-ExchangeRates

ExchangeRates

· 2 min read

Yapınız da bulunan bilgisayarlarınızın statik ip yapılandırması olduğunu varsayalım. Statik ip olarak kullanılan tüm bilgisayarların TCP-IP yapılandırmasını otomatik olarak yapılandırmak istiyorsunuz. Bunun için işinizi kolaylaştıracak Powershell fonksiyonu tam size göre, bu fonksiyon sayesinde ister Bilgisayar isimlerini belirtin isterseniz Active Directory üzerinden bir "Organization Unit" belirterek ilgili kod bloğunu çalıştırın. Eğer ortamda ulaşamadığınız makinalar olur ise size bir log dosyası yaratıyor.

function Set-AutomaticIPAddress {
<#
.Synopsis
Yazılan fonksiyon ile otomatik ip ve dns adresi alınması sağlanır.
.DESCRIPTION
Bu fonksiyon ile şirket içerisinde bulunan Static IP ve DNS adresi kullanan bilgisayarlarınıza,
WMI üzerinden otomatik IP ve DNS adresi alınması sağlanır.
Alınan hata kodları ile ilgili sayfaya bakınız;
http://msdn.microsoft.com/en-us/library/aa390378(v=vs.85).aspx
.EXAMPLE
Set-AutomaticIPAdress -ComputerName hasangural,Cnolan
Aşağıdaki örnek ile Active Directory cmdlet kullanılarak bilgisayar isimleri spesifik bir OU üzerinden getirilir.
Set-AutomaticIPAdress -ComputerName (Get-ADComputer -Filter \* -SearchBase "OU=BA,dc=hasan,dc=com" |
Select-Object -ExpandProperty Name
#>
param
(
\[Parameter(Mandatory=$True)\]
\[string\[\]\]$ComputerName
)
foreach($Name in $ComputerName) {
try {
$wmi = Get-WmiObject -Class win32\_networkadapterconfiguration -Filter "ipenabled ='true'" -ComputerName $Name -ErrorAction Stop -ErrorVariable Err
$Result = $wmi.EnableDHCP()
$result2 = $wmi.SetDNSServerSearchOrder()
if($Result.ReturnValue -eq 0) {
Write-Host "$Name adlı bilgisayarların IP Adresi başarıyla otomatik olarak yapılandırıldı." }
else { Write-Host "Hata Alındı. Hata Kodu:" $Result.ReturnValue -ForegroundColor Red }
if($result2.ReturnValue -eq 0) {
Write-Host "$Name adlı bilgisayarların DNS Adresi başarıyla otomatik olarak yapılandırıldı."}
else { Write-Host "Hata Alındı. Hata Kodu:" $Result2.ReturnValue -ForegroundColor Red }
}
catch {
Write-Host "$Name adlı bilgisayara bağlanılamadı.Detaylı hatalar için C:Log.txt bakınız." -ForegroundColor Red -BackgroundColor White
$Err | Out-File C:Log.txt }
}
}

Kullanım örnekleri aşağıdaki gibidir.

Set-AutomaticIPAdress -ComputerName hasangural,Cnolan

Active Directory üzerinden spesifik bir "Organization Unit" içerisinden getirmek için ise aşağıdaki örnek size yol gösterecektir.

Set-AutomaticIPAdress -ComputerName (Get-ADComputer -Filter \* -SearchBase "OU=BA,dc=hasan,dc=com" |
Select-Object -ExpandProperty Name

AutomaticAdress2 AutomaticAdress

· One min read

Merhabalar,  Şirketinizde kim hangi çözünürlük kullanıyor ? Sorusunun cevabını almak istiyorsanız, aşağıdaki powershell fonksiyonu tam size göre.

Function Get-Resolution { <# .Synopsis Bilgisayarınızın çözünürlük detaylarını verir. .DESCRIPTION Bu fonksiyon ile uzaktaki bilgisayarların çözünürlük,hertz,model gibi bilgileri kolayca erişebilirsiniz. .EXAMPLE Get-Resolution -ComputerName hasangural,CNolan Get-Resolution -ComputerName (Get-ADComputer -Filter * -Searchbase "OU=HG,dc=hasan,dc=com" | Select-Object -ExpandProperty Name ) #> param ( [Parameter(Mandatory=$True)] [string[]]$ComputerName ) Write-Verbose "Bilgisayara bağlanıyor. $ComputerName" foreach ($Name in $ComputerName){ try { Get-WmiObject -Class Win32_VideoController -ComputerName $Name -ErrorAction Stop | Where-Object {$PsItem.MaxRefreshRate -ne $null} | Select-Object @{n="Bilgisayar Adı";e={$PsItem.PsComputerName}}, @{n="Mevcut Hertz";e={$PsItem.CurrentRefreshRate}}, @{n="Çözünürlük";e={$PsItem.CurrentHorizontalResolution.ToString() + "x" + $PsItem.CurrentVerticalResolution.ToString()}}, @{n="Marka / Model";e={$PsItem.Name}} } catch { Write-Host "$Name adlı bilgisayara bağlanılamadı" } }
}

Resolution

· 2 min read

Merhabalar, Dosya sistemleri üzerinde bir çok kez tekrarlanan işlemleri kısaltmak adına yazdığım powershell fonksiyonu ile şirketinizdeki bilgisayarlarınızın uzaktan disklerinde kullandıkları dosya sistemlerini değiştirebilirsiniz. Yapmanız gereken sadece disk sürücü harfini belirtip bilgisayar isimlerini vermek.

Function Convertto-NTFS { <# .Synopsis Bu fonksiyon ile disk yapınızda kullandığınız dosya sistemini FAT32 üzerinden NTFS dönebilirsiniz. .DESCRIPTION Yazılan bu fonskiyonun şirket ortamınızdaki clientlarınızın uzaktan FAT32 dosya sistemini NTFS çevirme şansına sahipsiniz. Ortamda bulunan clientların PSRemoting özelliğinin açık olması gerekmektedir. .EXAMPLE Convertto-NTFS -DriveLetter F -ComputerName hasangural,cnolan Convertto-NTFS -DriveLetter F -ComputerName (Get-Content C:\ComputerList.txt) Dilerseniz Active Directory cmdletleri ile OU Bazlı filtrelemer yaparak bilgisayar isimlerini getirebilirsiniz. Convertto-NTFS -DriveLetter F -ComputerName (Get-ADComputer -Filter * | Select-Object -ExpandProperty Name) #> param ( [Parameter(Mandatory=$True)] [string]$DriveLetter, [string[]]$ComputerName ) foreach ($Name in $ComputerName) { if (!(Test-Path \\$Name\$DriveLetter$)){ Write-Host ”Sürücü harfi $DriveLetter bulunamadı.” -ForegroundColor Red -BackgroundColor White } else { $WMIDriveLetter = $DriveLetter + ":" Write-Verbose "$Name adlı bilgisayara bağlanılmaya çalışıyor." $GetDrive = Get-WmiObject -Class Win32_LogicalDisk -ComputerName $Name -Filter "DeviceId='$WMIDriveLetter'" $LabelName = $GetDrive.VolumeName $FileSystemType = $GetDrive.FileSystem if ($FileSystemType -eq 'NTFS'){ Write-Host "$Name adlı bilgisayarın dosya sistemi NTFS olarak tespit edilmiştir." -BackgroundColor Red } else { Write-Host “Dönüştürme işlemi yapılacak olan sürücünün Volume Adı:$LabelName” Invoke-Command -ComputerName $Name -ScriptBlock { param ([string]$RemoteLabel,$RemoteDriveLetter) $RemoteLabel | C:\Windows\System32\convert.exe $RemoteDriveLetter /FS:NTFS /X} -ArgumentList $LabelName,$WMIDriveLetter} } } }

ConverttoNTFS

ConverttoNTFS1

· One min read
Hasan Gural

Merhabalar, Powershell ile WMI sorgulaması yaparak aşağıda yazdığım fonskiyonu kullanarak şirketinizdeki bilgisayarlarınızın BIOS detaylarını öğrenebilirsiniz. Fonksiyon içerisinde "Example" kısmında örnek kullanımlarını yazdım.


function Get-LenovoBiosDetails {
<#
.Synopsis
Bu fonksiyon aşağıda listelenmiş "Lenovo" markaları cihazlarınızın BIOS detaylarını vermektedir.
• R400, R500
• T400, T400s, T410, T410s, T420, T420i, T420s, T420si
• T500, T510, T520, T520i
• W500, W510, W520, W700, W700ds, W701
• X200, X200s, X200 Tablet, X201, X201s, X220, X220i, X220 Tablet, X220i Tablet
• X301
.EXAMPLE
Get-LenovoBiosDetails -ComputerName hasangural,notebook
Get-LenovoBiosDetails -ComputerName (Get-Content c:\\Computerlist)
#>
[CmdletBinding()]
param(
#\[Parameter(Mandatory=$true)\]
[string[]]$ComputerName
)
Write-Verbose "Bilgisayara bağlanıyor. $ComputerName"
foreach($Name in $ComputerName) {
try {
Get-WmiObject -Class Lenovo_BiosSetting -Namespace root\\wmi -ComputerName $Name -ErrorAction Stop |
Where-Object {$\_.CurrentSetting -ne ""} | Select-Object @{n="Bilgisayar Adı";e={$PsItem.PsComputerName}},
@{n="Ayar Adı";e={$PsItem.CurrentSetting.Split(",")[0]}},
@{n="Mevcut Değeri";e={$PsItem.CurrentSetting.Split(",")[1]}}
} catch {

Write-Host "$Name adlı bilgisayara bağlanılamadı"
}

}
}

Powershell üzerinden sonuç aşağıdaki gibi görebilirsiniz. Bir sonraki yazımız da bu değerleri değiştirmekten bahsedeceğim.

LenovoBIOSDetails