29 Eylül 2020 Salı

Powershell Write-Host

Giriş
Açıklaması şöyle
In a nutshell, Write-Host writes to the console itself. Think of it as a MsgBox in VBScript. Write-Output, on the other hand, writes to the pipeline, so the next command can accept it as its input.

Powershell Read-Host

Giriş
Bu komutun tersi Write-Host. Read-Host konsoldan girdi okur

Örnek
Şöyle yaparız
$software = Read-Host "Software you want to remove"

23 Eylül 2020 Çarşamba

Powershell Function Tanımlama

Giriş
Powershell ile ScriptBlock tanımlanabiliyor. Ayrıca Function da tanımlanabiliyor.
ScriptBlock Invoke-Command -ScriptBlock $MyScriptBlock şeklinde kullanıbiliyor.

ScriptBlock Tanımlama
Örnek
Şöyle yaparız
$Credentials = ...
$Computeters = ...

foreach ($Computer in $Computers

  $MyScriptBlock = {
    param($Computer,$Credentials)
    ...
  }
  
  Invoke-Command -ScriptBlock $MyScriptBlock -ArgumentList ($Computer, $Credentials)
}
Örnek
Şöyle yaparız
function Check-Update {
  Param(
    [Parameter(Mandatory=$True, Valuefrompipeline=$True)]
[Validatenotnullorempty()]
[String]$Path ) $IsGood=$false if ($(Test-Path $Path) -and $Path.EndsWith(".msu")) { ... } else { Write-Error -Message "Update file: $path doesn't exist as a valid update file" } }
Örnek - Aynı script
Şöyle yaparız
Function New-Ping {
    
    Param(
        [Parameter(Mandatory)]
        [string]$ComputerName,
        [Parameter(Mandatory)]
        [int]$Intervall
    )

    while ($true) { 
        Test-Connection $ComputerName -Count 1
        Start-Sleep -MilliSeconds $Intervall 
    }
}
Çağırmak için şöyle yaparız
New-Ping ServerName 500

Windows ping komutu

Giriş 
Açıklaması şöyle
By default the time delay between two pings is equal to 1 second.

Powershell Test-Connection

Örnek 
Şöyle yaparız
while ($true) { Test-Connection ServerName -Count 1 ; Start-Sleep -MilliSeconds 500 }

Snap-in

fsmgmt.msc share edilen dizinleri gösterir.
lusrmgr.msc kullanıcıları ve grupları gösterir

Powershell Remove-Item - Dosya ve Dizin Siler

Giriş
Açıklaması şöyle
Remove-Item *.tmp or any of its aliases like rm *.tmp, del *.tmp
Örnek
Şöyle yaparız
CMD Example: del TestItem.txt

Powershell Example: remove-item TestItem.txt
Örnek
Şöyle yaparız
$mydirectory ="..."
$excludedirectory1 ="..."
$excludedirectory2 ="..."
Remove-Item $mydirectory\* -Exclude $excludedirectory1 $excludedirectory2 -Recurse -Force -ErrorAction Ignore

22 Eylül 2020 Salı

Powershell New-Item

-Path seçeneği
Örnek
Şöyle yaparız
CMD Example: md testdirectory
Powershell Example: New-Item -Path "c:\" -Name "testdirectory" -ItemType "directory"
Örnek
Şöyle yaparız. Full control için kullanılacak parametreleri buradan aldım.
$directory = "..." $myuser="..." $denieduser="..." New-Item -Path $directory -ItemType Directory $acl = Get-Acl -Path $directory #Give full control to this folder,subfolders and files $rule = New-Object System.Security.AccessControl.FileSystemAccessRule ($myuser,"FullControl","ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) #Deny full control to another user $rule = New-Object System.Security.AccessControl.FileSystemAccessRule ($denieduser,"FullControl", "Deny") $acl.AddAccessRule($rule) #Set owner $owner=New-Object System.Security.Principal.NTAccount($myuser) $acl.SetOwner($owner) Set-Acl $directory $acl | Out-Null


17 Eylül 2020 Perşembe

Windows Batch SET

/A seçeneği
Örnek 
Şöyle yaparız
@echo off
set /a a=30 %% 35
echo %a%
pause

16 Eylül 2020 Çarşamba

Powershell New-PSSession

Giriş
Invoke-Command -Session $remoteSession -ArgumentList(...) -ScriptBlock {...} şeklinde uzak makinede komut çalıştırmak içindir.

Session ile işimiz bitince Remove PSSession ile kapatılır

Örnek
Şöyle yaparızz
$username = "myuser"
$password = "mypassword"
$secureString = ConvertTo-SecureString $password -ASPlainText -Force


$credentials = New-Object System.Management.Automation.PSCredentials($username,
  $secureString)
$computer = "..."
$remoteSession = New-PSSession $computer -Credential $credentials
...
Remove PSSession -Session $remoteSession

10 Eylül 2020 Perşembe

Powershell Start-Job - Arka Planda İş Başlatır

Giriş
Bu komut arka planda iş başlatırken Invoke-Command ön planda iş başlatır.

Backtick
Backtick ile satırları bölmek iyi değil. Onun yerine zaten bölünebilecek yerlde bölmek lazım. Açıklaması şöyle.
The best thing is to leave out the line continuation character and simply break at the pipe, the comma, the brace, or the parenthesis because Windows PowerShell is expecting it anyway, and you avoid a potential source of failure.
ScriptBlock seçeneği
Örnek
Şöyle yaparız. scriptBlock arka planda çalıştırılacak metodu temsil eder. Bu metod bir parametre ile çağrılır
$Param1 = "..."
$Computers =(Get-Content "computers.txt")

foreach ($computer in $Computers) {

  $scriptBlock = {

    param($ScriptParam1)

    ...

  }

  Start-Job -Name "Job-$computer" -ScriptBlock $scriptBlock -ArgumentList ($Param1)

}


#wait for jobs to finish
Get-Job | Wait-Job


#Show output of jobs
Get-Job | Receive-Job


9 Eylül 2020 Çarşamba

Windows netsh komutu

interface ipv4 show address
Ağ arayüzlerimizin IPV4 adreslerini görmek için şöyle yaparız
netsh interface ipv4 show address
interface portproxy
port forwarding içindir. Açıklaması şöyle
It should not persist a reboot unless you specify store=persistent. You can delete the rule yourself by running similar to netsh interface portproxy delete v4tov4 listenaddress=192.168.x.y listenport=3306
Örnek
Açıklaması şöyle
Alternatively you could configure port forwarding to forward traffic destined for 192.168.x.y on port 3306 to 127.0.0.1 on port 3306 using syntax similar to the below command.
Şöyle yaparız
netsh interface portproxy add v4tov4 listenaddress=192.168.x.y listenport=3306
connectaddress=127.0.0.1 connectport=3306
Örnek
Şöyle yaparız. Burada kendi Window bilgisayarımda port forwarding yaparak, ssh isteklerini WSL 2  üzerinde çalışan SSH sunucusuna yönlendiriyorum.
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=172.26.66.223
trace start çeneği
TCP paketlerini yakalamak içindir.
Örnek
Yakalamaya başlamak için şöyle yaparız
netsh trace start capture=yes tracefile=c:\temp\trace.etl
Durdurmak için şöyle yaparız
netsh trace stop