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.

23 Kasım 2020 Pazartesi

WindowProc CallBack

Giriş
Gelen mesajları işleyen koddur. Bu kodda kendi swith/case kodumuzdan sonra en altta return DefWindowProc() çağrısı yapmak gerekir.

Örnek - WM_CREATE
Şöyle yaparız. Bir EditBox ve bir Button yaratır. Düğmeye tıklanınca MessageBox gösterir.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  int wmId, wmEvent;
  PAINTSTRUCT ps;
  HDC hdc;
  TCHAR heading[] = _T("CD ROM READER");
  TCHAR CSCI_No_Inst[] = _T("Please enter the CSCI No below:");
  TCHAR CSCI_NO[60];
  switch (message)
  {
    case WM_CREATE:
    {
      TextBox = CreateWindow(TEXT("EDIT"), TEXT(""),
        WS_VISIBLE | WS_CHILD | WS_BORDER,
        150, 140, 250, 25,
        hWnd, NULL, NULL, NULL);

      HWND hwndButton_Enter = CreateWindow(
        L"BUTTON", L"ENTER",
        WS_VISIBLE | WS_CHILD | WS_BORDER,  //Styles
        405, 140, 70, 25,
        hWnd, (HMENU)ENTER_BUTTON, NULL, NULL);
      return 0;
    }

    case WM_COMMAND:
    {
      switch (LOWORD(wParam))
      {
        case ENTER_BUTTON:
          int gwtstat = 0;
          TCHAR title[] = _T("CSCI_NO");
          gwtstat = GetWindowText(TextBox, &CSCI_NO[0], 60);

          TCHAR buff[100] = L"";
          TCHAR name[] = _T("CSCI_NO");
          wsprintf(buff, L"The CSCI No you entered is: %s", CSCI_NO);
          MessageBox(hWnd, buff, title, MB_OK);
          break;
      }
      return 0;
    }
    case WM_DESTROY:
      PostQuitMessage(0);
      return 0;
    }
  return DefWindowProc(hWnd, message, wParam, lParam);
}
Örnek - WM_DESTROY
Şöyle yaparız
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM  lParam)
{
  switch (uMsg)
  {
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;

    case WM_PAINT:
    {
      PAINTSTRUCT ps;
      HDC hdc = BeginPaint(hwnd, &ps);

      FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW + 1));

      EndPaint(hwnd, &ps);
    }
      return 0;
  }
  return DefWindowProc(hwnd,uMsg,wParam,lParam);
}

6 Kasım 2020 Cuma

wmic komutu - Windows Management Instrumentation Command-line

Giriş
wmic Windows Management Instrumentation Command-line anlamına gelir.

/? seçeneği
Yardımı gösterir

CPU seçeneği
Şöyle yaparız.
wmic CPU
Bazı alanları görmek istersek şöyle yaparız.
wmic CPU get Name,NumberOfCores,NumberOfLogicalProcessors
Çıktı olarak şunu alırız.
Name                                     NumberOfCores  NumberOfLogicalProcessors
Intel(R) Core(TM) i7-xxxx CPU @ x.xxGHz  8              16
Monitor seçeneği
Örnek
Şöyle yaparız
wmic path Win32_DesktopMonitor get /format:list
Örnek
Şöyle yaparız
twmic path Win32_VideoController get /format:list
Örnek
Şöyle yaparız
wmic path CIM_VideoControllerResolution get /format:list
Pil Seçeneği
Şöyle yaparız
wmic path Win32_Battery get Caption,Description,DeviceID,Name
Process Seçeneği
Şöyle yaparız
wmic process > processes.txt

4 Kasım 2020 Çarşamba

Hosts Dosyası

Giriş
Açıklaması şöyle
The hosts file in windows is located at C:\Windows\System32\Drivers\etc\hosts.

21 Ekim 2020 Çarşamba

Powersell Enter-PSSession

Örnek
Şöyle yaparız
Enter-PSSession -ComputerName COMPUTER -Credential USER

Powershell Test-WsMan

Giriş
Açıklaması şöyle
This simple command tests whether the WinRM service is running on the remote PC. If it completes successfully, you’ll see information about the remote computer’s WinRM service in the window—signifying that WinRM is enabled and your PC can communicate. If the command fails, you’ll see an error message instead.
Örnek 
Şöyle yaparız
Test-WsMan COMPUTER

20 Ekim 2020 Salı

Windows Remote Management (WinRM) Nedir

Giriş
Açıklaması şöyle
WinRM (Windows Remote Management) is Microsoft's implementation of WS-Management in Windows which allows systems to access or exchange management information across a common network

Powershell Enable-PSRemoting - Powershell İçin Uzak Bağlantıya (Remote Connection) İzin Verir

Giriş
WinRM yazısına göz atabilirsiniz. Bu servis altta Uzak Bağlantı (Remote Connection) için kullanılıyor.
Test-WsMan. yazısına göz atabilirsiniz. Bu komut uzak bilgisayarda WinRM servisinin çalıştığını kontrol eder.
Test-Connection yazısına göz atabilirsiniz. Bu komut uzak bilgisayara Powershell bağlantısı açılıp açılamadığını kontrol eder

Özet
Bu komut kısaca WinRM servisini başlatır ve Firewall'a Powershell uzak bağlantısına imkan veren bir kural ilave eder.

-Force seçeneği
Bir bilgisayara Uzak Bağlantı (Remote Connection) açabilmek için bu komutu Powershell Admin olarak çalıştırmak gerekir
Açıklaması şöyle
This command starts the WinRM service, sets it to start automatically with your system, and creates a firewall rule that allows incoming connections. The -Force part of the cmdlet tells PowerShell to perform these actions without prompting you for each step.

If your PCs are part of a domain, that’s all the setup you have to do. You can skip on ahead to testing your connection. If your computers are part of a workgroup—which they probably are on a home or small business network—you have a bit more setup work to do.
1. Şöyle yaparız
Enable-PSRemoting -Force
2. Şöyle yaparız
Set-Item wsman:\localhost\client\trustedhosts *
Açıklaması şöyle.
Next, you need to configure the TrustedHosts setting on both the PC to which you want to connect and the PC (or PCs) you want to connect from, so the computers will trust each other. You can do this in one of two ways.

If you’re on a home network where you want to go ahead and trust any PC to connect remotely, you can type the following cmdlet in PowerShell (again, you’ll need to run it as Administrator).

Set-Item wsman:\localhost\client\trustedhosts *
The asterisk is a wildcard symbol for all PCs. If instead you want to restrict computers that can connect, you can replace the asterisk with a comma-separated list of IP addresses or computer names for approved PCs.
3. Şöyle yaparız
Restart-Service WinRM
Açıklaması şöyle.
After running that command, you’ll need to restart the WinRM service so your new settings take effect.
-SkipNetworkProfileCheck seçeneği
Windows'ta 3 tip ağ seçeneği var
- Private (Özel)
- Domain Etki Alanı)
- Public (Ortak)
Normalde Enable-PSRemoting sadece Private ve Domain ağlarda çalışır. Eğer Public ağda bu komutu çalıştırırsak şu hatayı alırız
... WinRM firewall exception will not work since one of the network connection types on this machine is set to Public. Change the network connection type to either Domain or Private and try again. ...
Bunun Türkçesi şöyle
... Bu makinedeki ağ bağlantısı türlerinden biri Ortak olarak ayarlandığından winRM güvenlik duvarı özel durumu çalışmayacak. Ağ bağlantısı türünü Etki Alanı ya da Özel olarak değiştirin veya yeniden deneyin ...
Bu seçenek ile Network Profile yani ağ tipi kontrolü yapılmaz

11 Ekim 2020 Pazar

Windows Update/Patch Mekanizması

Giriş
Açıklaması şöyle
Windows updates are cumulative. 4577015 supersedes 4571694.

5 Ekim 2020 Pazartesi

Windows powershell komutu

Giriş
Powershell kodlamak için Notepad++ ile kod yazıp çalıştırmak yerine IDE'yi kullanmak daha kolay olabilir

1. IDE
Powershell simgesine sağ tıklayıp "Windows PowerShell ISE" seçilirse IDE açılır. 

2. powershell komutu
Windows + R tuşuna basıp cmd.exe yazarız. Açılan siyah pencereye powershell.exe yazarak powershell komutları işletilir.

Örnek
Şöyle yaparız.
powershell.exe "(get-physicaldisk).MediaType"
-ExecutionPolicy seçeneği
Bypass şeklinde kullanırsak powershell script'inin imzalı olması gerekmez. cmd.exe ile komut satırını açtıktan sonra şöyle yaparız.
powershell.exe -ExecutionPolicy Bypass -File myscript.ps

4 Ekim 2020 Pazar

Windows shutdown komutu

Giriş
GUI'den kapatılan windows 8 elektriği kesmiyor. Sadece hibernate ediyor. USB'lerde halen elektrik olabiliyor. Sistemi tamamen kapatmak ve elektriği kesmek için bu komut kullanılabilir.

/f seçeneği
Force anlamına gelir. Açıklaması şöyle
/f Force running applications to close without forewarning users.
/s seçeneği
Açıklaması şöyle.
Generally shutdown /s does not send any "close" messages. It call one of few Win32 API functions for shutting down Windows system.

These functions in turn notify aplications about shutdown/restart event via WM_QUERYENDSESSION and WM_ENDSESSION messages.

Programs can then agree or try to prevent pending shutdown by responsing properly to WM_QUERYENDSESSION, eg. for stopping cleanly, etc.

So, in theory after issue shutdown /s command, there is some "close" messages send to all programs and you don't need doing anything special for that.
Örnek
Şöyle yaparız.
shutdown /s /f /t 0
/t seçeneği
/t 0 "now" anlamına gelir. Açıklaması şöyle.
/t xxx Set the time-out period before shutdown to xxx seconds. The valid range is 0-315360000 (10 years), with a default of 30. If the timeout period is greater than 0, the /f parameter is implied.
Eğer t değeri 0 verilirse shutdown iptal edilebilir. Açıklaması şöyle.
If you want applications to be able to cancel the shutdown, you need to use shutdown /s /t 0 instead.
Bir başka açıklama şöyle.
BUT if you specify any timeout period greater than 0, or leave the timeout unspecified (as in shutdown /s on its own), Windows will actually kill your processes without offering you the chance to intervene. Incredible as it sounds, this is true, and is even by design, as shown by the usage output from shutdown /?.