13 Ocak 2021 Çarşamba

Powershell String

split metodu ve split operator Farklıdır
- split() metodu verilen tüm girdiyi tek tek karakterler gibi değerlendirir ve ona göre böler. Ayrıca büyük küçük fark farklına duyarlıdır
- split operator ise verilen tüm girdiyi tek bir ayraç olarak algılar. Ayrıca büyük küçük fark farklına duyarlı değildir.
Örnek
Elimizde şöyle bir kod olsun
$Str="This is the<BR />source string<BR />ALL RIGHT"
$Str.Split("<BR />")
This
is
the
(multiple blank lines)
source
string
(multiple blank lines)
ALL
IGHT
$Str -Split("<BR />")
This is the
source string
ALL RIGHT 
Açıklaması şöyle
From this you can see that the string.split() method:

- performs a case sensitive split (note that "ALL RIGHT" his split on the "R" but "broken" is not split on the "r")
- treats the string as a list of possible characters to split on

While the -split operator:

- performs a case-insensitive comparison
- only splits on the whole string
split metodu
Örnek
Şöyle yaparız. Split sonucu direkt değişkenlere atanıyor.
$string = 'FirstPart SecondPart'
$a,$b = $string.split(' ')
$a
$b
Örnek
Şöyle yaparız. Burada | ile ayrılmış alanlar split edildikten sonra alanlar tekrar sıralanıp yine | ile birleştiriliyor. Yani aslında sütunların sıralaması değiştiriliyor.
$File = get-content "D:\test\1234.txt"
$OutputFile = foreach($line in $File){($line.split('|'))[0,4,1,2,3,5] -Join '|'}
$OutputFile | out-file -filepath "D:\test\4321.txt" -Encoding "ascii"
split operator
Örnek
Şöyle yaparız. Çıktı olarak "1stZAP/SFR" alırız
$MilitaryDude = "Doe, Jane C LTC MMUA DCC 1stZAP/SFR"
($MilitaryDude -split "DCC" | Select -First 1).Trim()

12 Ocak 2021 Salı

Powershell Get-Content

Giriş
Dosyanın okunabilirliğini kontrol etmek için önce Test-Path kullanılabilir.

Dosyayı bir Object[] içine okur. Ayraç olarak newline kullanılır. Sonucun string dizisi olduğunu görmek için şöyle yaparız
$object = Get-Content data.txt
$object.GetType()                                                  
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

Örnek
Şöyle yaparız. Her satırı okur. INSERT INTO ile başlıyorsa ilk ' (single quote) karakterini bulur. ' karakterini escape etmek için 4 defa '''' şeklinde kullanmak gerek.
foreach($line in Get-Content data.sql) {
  if($line.StartsWith('INSERT INTO')) {
    $startIndex = $line.IndexOf(''''');
    if ($startIndex -ne -1) {
      $endIndex = $line.IndexOf('''',$startIndex + 1)
      $length = $endIndex - $startIndex + 1
      Write-Output $line.SubString($startIndex,$length);
    }
  }
}
Örnek
Bir başka bilgisayardaki dosyayı okumak için şöyle yaparız
Get-Content -Path "\\xx.xxx.xx.xxx\c$\App_configuration.txt"
-Raw seçeneği
Dosyayı tek bir string değişkeni içine okur
Örnek
Şöyle yaparız
$text = Get-Content .\file.txt -Raw 
Örnek
İkinci dosyadaki bir alanı birinci dosyada içeren satırları bulmak için  şöyle yaparız
$filename="insert.txt"
Remove-Item $filename

$file1 = Get-Content -RAW .\file1.txt
$file1lines = $file1.Split(';')

$file2 = Get-Content -RAW .\file2.txt
$file2lines = $file2.Split(';')

foreach($file2line in file2lines) {
  $file2line = $file2line - replace "'n'r",""
  $file2line = $file2line.Trim()
  if($file2line.StartsWith('INSERT INTO')) {
    $startIndex = $file2line.IndexOf(''''');
    if ($startIndex -ne -1) {
      $endIndex = $file2line.IndexOf('''',$startIndex + 1)
      $length = $endIndex - $startIndex + 1
      $id = $file2line.SubString($startIndex,$length);

      $file1lines |foreach {
        if ($_.Contains($id) {
          $_ | Out-File -Append -FilePath $filename
        }
      }
    }
  }
}

10 Ocak 2021 Pazar

timeBeginPeriod metodu

Giriş 
Açıklaması şöyle
The timeBeginPeriod function requests a minimum resolution for periodic timers.
Örnek 
Şöyle yaparız
int main(){
  begintimePeriod(1);
  HANDLE event = CreateEvent(NULL,TRUE,FALSE,NULL);
  WaitForSingleObject(event,1);
}

WaitForSingleObject

Örnek
Şöyle yaparız
HANDLE event = CreateEvent(NULL,TRUE,FALSE,NULL);
WaitForSingleObject(event,1);

30 Aralık 2020 Çarşamba

Windows netstat komutu

-p seçeneği
Örnek
Şöyle yaparız
netstat -ant -p tcp | findstr LISTENING
Çıktı olarak şunu alırız
TCP    127.0.0.1:8081        0.0.0.0:0       LISTENING   InHost
TCP    127.0.0.1:9092        0.0.0.0:0       LISTENING   InHost

21 Aralık 2020 Pazartesi

Powershell Type Contstraint

Giriş
[int], [string] gibi kodlanır. Bu alana null değer atanamaz. 

Örnek
Elimizde şöyle bir kod olsun
class test {
    [int]$i1 = 42
}
    
$test = [test]::new()
Write-Host $test.i1
$test.i1 = $null
Write-Host $test.i1
Çıktı olarak şunu alırız. Yani alana null değeri verilemiyor.
42
0

16 Aralık 2020 Çarşamba

Powershell Get-ChildItem - Dizinin Altındakileri Verir

Giriş
Verilen dizinin altındakileri alır. İlgili bazı diğer komutlar şöyle
Powershell CMD Action

Set-Location cd         Change Directory

Get-ChildItem dir         Read Contents

Rename-Item ren         Rename File

Get-Help         /?         See Help

Remove-Item del         Delete Files

Copy-Item copy Copy Files

New-Item         md         Create Directory (and files for PS)
Örnek
Şöyle yaparız
$DestDIR = 'C:\Destination'
$OrigDIR = 'C:\Origin'

Get-ChildItem $OrigDir | ForEach-Object {
 $OrigName = $_.Name
 $OrigPath = $_.FullName

 Get-ChildItem $DestDIR -Recurse | Where-Object {$_.Name -eq $OrigName} | ForEach-Object {
   $DestPath = $_.FullName
   Copy-Item $OrigPath $DestPath -Force
 }
}
-Path seçeneği
Örnek
Şöyle yaparız
CMD Example: dir c:\exampledirectory

Powershell Example: get-childitem -path c:\exampledirectory

-Recurse seçeneği 
Dizinin tüm alt dizinlerini de dolaşır.