[{"id":396,"title":"Windows 11 Developer & SysAdmin Optimization Tool","content":"<p>Windows 11 Developer &amp; SysAdmin Optimization Tool<br>Yaz\u0131l\u0131mc\u0131 ve sistemci odakl\u0131 optimizasyon arac\u0131<\/p>\n<p><a href=\"https:\/\/github.com\/onder7\/-Windows-11-Developer-SysAdmin-Optimization-Tool\">https:\/\/github.com\/onder7\/-Windows-11-Developer-SysAdmin-Optimization-Tool<\/a><\/p>\n<p><iframe src=\"https:\/\/www.youtube.com\/embed\/bEkYuXcm9V0?t\" width=\"560\" height=\"314\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>&nbsp;<\/p>\n<p><img src=\"..\/..\/uploads\/images\/2026\/02\/69a07e9e931b8_1772125854.png\"><\/p>","excerpt":"Windows 11 Developer & SysAdmin Optimization Tool\nYaz\u0131l\u0131mc\u0131 ve sistemci odakl\u0131 optimizasyon arac\u0131","created_at":"2026-02-26 20:14:57","updated_at":"2026-09-23 15:45:31","category_id":6,"view_count":649,"reading_time":1,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2026-02-26 17:14:57","featured_image":"\/uploads\/images\/2026\/02\/69a07f7550659_1772126069.png","slug":"windows-11-developer-sysadmin-optimization-tool","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":392,"title":"Disk performans\u0131n\u0131 \u00f6l\u00e7mek i\u00e7in PowerShell scripti","content":"<p>Disk performans\u0131n\u0131 &ouml;l&ccedil;mek i&ccedil;in PowerShell scripti, \u0130\u015fte hem read hem de write latency de\u011ferlerini &ouml;l&ccedil;en kapsaml\u0131 bir script:<\/p>\n<pre>&nbsp;<\/pre>\n<pre class=\"language-markup\"><code># Disk Latency Test Script\n# Read ve Write latency de\u011ferlerini &ouml;l&ccedil;er\n\nparam(\n    [string]$TestPath = \"C:\\\",\n    [int]$TestFileSizeMB = 100,\n    [int]$BlockSizeKB = 4,\n    [int]$IterationCount = 100\n)\n\nWrite-Host \"=== Disk Latency Test Ba\u015flat\u0131l\u0131yor ===\" -ForegroundColor Cyan\nWrite-Host \"Test Yolu: $TestPath\"\nWrite-Host \"Test Dosya Boyutu: $TestFileSizeMB MB\"\nWrite-Host \"Block Size: $BlockSizeKB KB\"\nWrite-Host \"\u0130terasyon Say\u0131s\u0131: $IterationCount\"\nWrite-Host \"\"\n\n# Test dosyas\u0131 yolu\n$testFile = Join-Path $TestPath \"disk_latency_test.tmp\"\n\n# Sonu&ccedil;lar\u0131 tutacak arrayler\n$writeLatencies = @()\n$readLatencies = @()\n\ntry {\n    # Write Latency Testi\n    Write-Host \"Write Latency Testi Ba\u015fl\u0131yor...\" -ForegroundColor Yellow\n    \n    $blockSize = $BlockSizeKB * 1024\n    $data = New-Object byte[] $blockSize\n    $random = New-Object System.Random\n    $random.NextBytes($data)\n    \n    for ($i = 1; $i -le $IterationCount; $i++) {\n        $stopwatch = [System.Diagnostics.Stopwatch]::StartNew()\n        \n        $fileStream = [System.IO.File]::Open($testFile, [System.IO.FileMode]::Create, [System.IO.FileAccess]::Write, [System.IO.FileShare]::None)\n        $fileStream.Write($data, 0, $data.Length)\n        $fileStream.Flush()\n        $fileStream.Close()\n        \n        $stopwatch.Stop()\n        $writeLatencies += $stopwatch.Elapsed.TotalMilliseconds\n        \n        Write-Progress -Activity \"Write Test\" -Status \"\u0130terasyon $i\/$IterationCount\" -PercentComplete (($i \/ $IterationCount) * 100)\n    }\n    \n    Write-Host \"Write Latency Testi Tamamland\u0131!\" -ForegroundColor Green\n    Write-Host \"\"\n    \n    # Read Latency Testi\n    Write-Host \"Read Latency Testi Ba\u015fl\u0131yor...\" -ForegroundColor Yellow\n    \n    for ($i = 1; $i -le $IterationCount; $i++) {\n        $stopwatch = [System.Diagnostics.Stopwatch]::StartNew()\n        \n        $fileStream = [System.IO.File]::Open($testFile, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read, [System.IO.FileShare]::Read)\n        $buffer = New-Object byte[] $blockSize\n        $fileStream.Read($buffer, 0, $buffer.Length) | Out-Null\n        $fileStream.Close()\n        \n        $stopwatch.Stop()\n        $readLatencies += $stopwatch.Elapsed.TotalMilliseconds\n        \n        Write-Progress -Activity \"Read Test\" -Status \"\u0130terasyon $i\/$IterationCount\" -PercentComplete (($i \/ $IterationCount) * 100)\n    }\n    \n    Write-Host \"Read Latency Testi Tamamland\u0131!\" -ForegroundColor Green\n    Write-Host \"\"\n    \n    # Sonu&ccedil;lar\u0131 hesapla\n    $writeStats = $writeLatencies | Measure-Object -Average -Minimum -Maximum\n    $readStats = $readLatencies | Measure-Object -Average -Minimum -Maximum\n    \n    # Sonu&ccedil;lar\u0131 g&ouml;ster\n    Write-Host \"=== TEST SONU&Ccedil;LARI ===\" -ForegroundColor Cyan\n    Write-Host \"\"\n    Write-Host \"WRITE LATENCY:\" -ForegroundColor Yellow\n    Write-Host \"  Ortalama: $([math]::Round($writeStats.Average, 2)) ms\"\n    Write-Host \"  Minimum:  $([math]::Round($writeStats.Minimum, 2)) ms\"\n    Write-Host \"  Maximum:  $([math]::Round($writeStats.Maximum, 2)) ms\"\n    Write-Host \"\"\n    Write-Host \"READ LATENCY:\" -ForegroundColor Yellow\n    Write-Host \"  Ortalama: $([math]::Round($readStats.Average, 2)) ms\"\n    Write-Host \"  Minimum:  $([math]::Round($readStats.Minimum, 2)) ms\"\n    Write-Host \"  Maximum:  $([math]::Round($readStats.Maximum, 2)) ms\"\n    Write-Host \"\"\n    \n    # IOPS hesapla (kabaca)\n    $writeIOPS = [math]::Round(1000 \/ $writeStats.Average, 0)\n    $readIOPS = [math]::Round(1000 \/ $readStats.Average, 0)\n    \n    Write-Host \"TAHMINI IOPS (${BlockSizeKB}KB block size):\" -ForegroundColor Yellow\n    Write-Host \"  Write IOPS: ~$writeIOPS\"\n    Write-Host \"  Read IOPS:  ~$readIOPS\"\n    Write-Host \"\"\n    \n}\ncatch {\n    Write-Host \"HATA: $($_.Exception.Message)\" -ForegroundColor Red\n}\nfinally {\n    # Test dosyas\u0131n\u0131 temizle\n    if (Test-Path $testFile) {\n        Remove-Item $testFile -Force\n        Write-Host \"Test dosyas\u0131 temizlendi.\" -ForegroundColor Gray\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-powershell\">\n<\/code><\/pre>\n<p><strong>Kullan\u0131m &ouml;rnekleri:<\/strong><\/p>\n<pre><code class=\"language-powershell\"># Varsay\u0131lan ayarlarla &ccedil;al\u0131\u015ft\u0131r (C:\\ s&uuml;r&uuml;c&uuml;s&uuml;nde)\n.\\disk-latency-test.ps1\n\n# D:\\ s&uuml;r&uuml;c&uuml;s&uuml;nde test et\n.\\disk-latency-test.ps1 -TestPath \"D:\\\"\n\n# Daha k&uuml;&ccedil;&uuml;k dosya ve daha az iterasyon ile h\u0131zl\u0131 test\n.\\disk-latency-test.ps1 -TestFileSizeMB 10 -IterationCount 50\n\n# Farkl\u0131 block size ile test (&ouml;rn: 64KB)\n.\\disk-latency-test.ps1 -BlockSizeKB 64\n<\/code><\/pre>\n<p><strong>Not:<\/strong><\/p>\n<ul>\n<li>Script'i &ccedil;al\u0131\u015ft\u0131rmak i&ccedil;in PowerShell'i <strong>y&ouml;netici olarak<\/strong> a&ccedil;man\u0131z gerekebilir<\/li>\n<li>Test s\u0131ras\u0131nda disk &uuml;zerine dosya yaz\u0131laca\u011f\u0131 i&ccedil;in yeterli alan oldu\u011fundan emin olun<\/li>\n<li>Daha do\u011fru sonu&ccedil;lar i&ccedil;in arka planda &ccedil;al\u0131\u015fan programlar\u0131 kapat\u0131n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>","excerpt":"Script, write ve read latency de\u011ferlerini milisaniye cinsinden \u00f6l\u00e7er ve ortalama, minimum ve maximum de\u011ferleri g\u00f6sterir.","created_at":"2026-02-04 22:19:53","updated_at":"2026-09-23 14:09:06","category_id":6,"view_count":577,"reading_time":3,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2026-02-04 19:19:53","featured_image":"\/uploads\/images\/2026\/02\/69839b9bf09e0_1770232731.jpg","slug":"disk-performansini-olcmek-icin-powershell-scripti","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":349,"title":"Windows GPO Tabanl\u0131 Uygulama Engelleme: Kullan\u0131c\u0131 Ba\u011flam\u0131nda G\u00fcvenlik Sertle\u015ftirmesi","content":"<p>Bu yap\u0131land\u0131rma,&nbsp;<strong>Kullan\u0131c\u0131 Ba\u011flam\u0131nda Uygulama Engelleme<\/strong> stratejisi ile LOLBins ve bilinen k&ouml;t&uuml; ama&ccedil;l\u0131 yaz\u0131l\u0131mlar\u0131n &ccedil;al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 engelleyerek sald\u0131r\u0131 y&uuml;zeyini minimize eder.<\/p>\n<h2>Temel GPO Yap\u0131land\u0131rmas\u0131<\/h2>\n<h3>1. Yeni GPO Olu\u015fturma<\/h3>\n<pre><code class=\"language-powershell\"># PowerShell ile GPO olu\u015fturma\nNew-GPO -Name \"W11-User-Application-Blocking\" -Comment \"LOLBins ve malware engellemesi\"\n\n# OU'ya ba\u011flama\nNew-GPLink -Name \"W11-User-Application-Blocking\" `\n           -Target \"OU=Users,DC=contoso,DC=local\" `\n           -LinkEnabled Yes `\n           -Order 1\n<\/code><\/pre>\n<h3>2. Loopback Processing Yap\u0131land\u0131rmas\u0131<\/h3>\n<pre><code>Computer Configuration &rarr; Policies &rarr; Administrative Templates &rarr; System &rarr; Group Policy\n&rarr; \"Configure user Group Policy loopback processing mode\" = Enabled (Merge mode)\n<\/code><\/pre>\n<h2>&nbsp;Security Filtering Yap\u0131land\u0131rmas\u0131<\/h2>\n<h3>PowerShell ile G&uuml;venlik Filtreleme<\/h3>\n<pre><code class=\"language-powershell\"># GPO Security Filtering ayarlama\n$GPO = Get-GPO -Name \"W11-User-Application-Blocking\"\n\n# Varsay\u0131lan \"Authenticated Users\" kald\u0131r\nSet-GPPermission -Name $GPO.DisplayName `\n                  -TargetName \"Authenticated Users\" `\n                  -TargetType Group `\n                  -PermissionLevel None\n\n# Standart kullan\u0131c\u0131lar\u0131 ekle\nSet-GPPermission -Name $GPO.DisplayName `\n                  -TargetName \"Domain Users\" `\n                  -TargetType Group `\n                  -PermissionLevel GpoApply\n\n# Local Users ekle (SID kullanarak)\nSet-GPPermission -Name $GPO.DisplayName `\n                  -TargetName \"S-1-5-32-545\" `\n                  -TargetType Group `\n                  -PermissionLevel GpoApply\n\n# Hari&ccedil; tutulacak gruplar (Read only izni)\n$ExcludedGroups = @(\n    \"Domain Admins\",\n    \"Enterprise Admins\",\n    \"IT-Helpdesk\",\n    \"Security-Admins\"\n)\n\nforeach ($group in $ExcludedGroups) {\n    Set-GPPermission -Name $GPO.DisplayName `\n                      -TargetName $group `\n                      -TargetType Group `\n                      -PermissionLevel GpoRead\n}\n<\/code><\/pre>\n<h2>Engellenecek Uygulamalar Listesi<\/h2>\n<h3>Kategorize Edilmi\u015f Engelleme Listesi<\/h3>\n<pre><code class=\"language-powershell\"># Tam engelleme listesi\n$BlockedApplications = @{\n    # Script Motorlar\u0131 ve Shell'ler\n    \"ScriptEngines\" = @(\n        \"powershell.exe\",\n        \"pwsh.exe\",\n        \"powershell_ise.exe\",\n        \"wscript.exe\",\n        \"cscript.exe\",\n        \"mshta.exe\",\n        \"cmd.exe\",\n        \"bash.exe\",\n        \"wsl.exe\"\n    )\n    \n    # \u0130ndirme\/C2 LOLBins\n    \"DownloadC2\" = @(\n        \"bitsadmin.exe\",\n        \"certutil.exe\",\n        \"curl.exe\",\n        \"ftp.exe\",\n        \"tftp.exe\",\n        \"xwizard.exe\"\n    )\n    \n    # Kurulum\/Proxy-Execution\n    \"ProxyExecution\" = @(\n        \"msiexec.exe\",\n        \"installutil.exe\",\n        \"regsvr32.exe\",\n        \"rundll32.exe\"\n    )\n    \n    # Persistence\/Lateral Movement\n    \"PersistenceLateral\" = @(\n        \"schtasks.exe\",\n        \"wmic.exe\",\n        \"winrs.exe\",\n        \"cmdkey.exe\",\n        \"reg.exe\"\n    )\n    \n    # Bilinen Malware\/Ara&ccedil;lar\n    \"KnownMalware\" = @(\n        \"agenttesla.exe\",\n        \"darkcomet.exe\",\n        \"havoc.exe\",\n        \"masscan.exe\",\n        \"meterpreter.exe\",\n        \"mimikatz.exe\",\n        \"mimilib.dll\",\n        \"msfvenom.exe\",\n        \"mythic.exe\",\n        \"nanocore.exe\",\n        \"ncat.exe\",\n        \"netcat.exe\",\n        \"nmap.exe\",\n        \"nping.exe\",\n        \"pathping.exe\",\n        \"pcalua.exe\",\n        \"pubprn.vbs\",\n        \"remcos.exe\",\n        \"revenge_rat.exe\",\n        \"sekurlsa.exe\",\n        \"sliver.exe\",\n        \"teamserver.exe\",\n        \"token.exe\",\n        \"vbc.exe\",\n        \"wevtutil.exe\",\n        \"winexe.exe\",\n        \"wusa.exe\",\n        \"xwizard.exe\",\n        \"wlrmdr.exe\",\n        \"zmap.exe\"\n    )\n}\n<\/code><\/pre>\n<h2>GPO Registry Ayarlar\u0131<\/h2>\n<h3>Registry.pol Dosyas\u0131 Olu\u015fturma<\/h3>\n<pre><code class=\"language-powershell\">function Create-AppBlockingRegistry {\n    param(\n        [string]$GPOName = \"W11-User-Application-Blocking\"\n    )\n    \n    $regPath = \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\"\n    \n    # Komut sat\u0131r\u0131 eri\u015fimini engelle\n    Set-GPRegistryValue -Name $GPOName `\n        -Key $regPath `\n        -ValueName \"DisableCMD\" `\n        -Type DWORD `\n        -Value 2\n    \n    # Registry edit&ouml;rlerini engelle\n    Set-GPRegistryValue -Name $GPOName `\n        -Key $regPath `\n        -ValueName \"DisableRegistryTools\" `\n        -Type DWORD `\n        -Value 1\n    \n    # Run men&uuml;s&uuml;n&uuml; devre d\u0131\u015f\u0131 b\u0131rak\n    Set-GPRegistryValue -Name $GPOName `\n        -Key $regPath `\n        -ValueName \"NoRun\" `\n        -Type DWORD `\n        -Value 1\n}\n<\/code><\/pre>\n<h2>Software Restriction Policies (SRP) Yap\u0131land\u0131rmas\u0131<\/h2>\n<h3>PowerShell ile SRP Olu\u015fturma<\/h3>\n<pre><code class=\"language-powershell\">function Configure-SoftwareRestrictionPolicies {\n    param(\n        [string]$GPOName = \"W11-User-Application-Blocking\"\n    )\n    \n    # SRP i&ccedil;in temel path\n    $srpPath = \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\Safer\\CodeIdentifiers\"\n    \n    # Varsay\u0131lan g&uuml;venlik seviyesi (Unrestricted)\n    Set-GPRegistryValue -Name $GPOName `\n        -Key $srpPath `\n        -ValueName \"DefaultLevel\" `\n        -Type DWORD `\n        -Value 262144\n    \n    # Her bir engellenecek uygulama i&ccedil;in hash rule olu\u015ftur\n    $ruleGuid = 0\n    foreach ($category in $BlockedApplications.Keys) {\n        foreach ($app in $BlockedApplications[$category]) {\n            $ruleGuid++\n            $guidString = \"{\" + [guid]::NewGuid().ToString().ToUpper() + \"}\"\n            \n            # Path rule olu\u015ftur\n            $rulePath = \"$srpPath\\0\\Paths\\$guidString\"\n            \n            Set-GPRegistryValue -Name $GPOName `\n                -Key $rulePath `\n                -ValueName \"ItemData\" `\n                -Type String `\n                -Value \"*\\$app\"\n            \n            Set-GPRegistryValue -Name $GPOName `\n                -Key $rulePath `\n                -ValueName \"SaferFlags\" `\n                -Type DWORD `\n                -Value 0\n        }\n    }\n}\n<\/code><\/pre>\n<h2>ADMX Template Olu\u015fturma<\/h2>\n<h3>Custom ADMX Template<\/h3>\n<pre><code class=\"language-xml\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;policyDefinitions xmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\"\n                   xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n                   revision=\"1.0\"\n                   schemaVersion=\"1.0\"\n                   xmlns=\"http:\/\/schemas.microsoft.com\/GroupPolicy\/2006\/07\/PolicyDefinitions\"&gt;\n  \n  &lt;policyNamespaces&gt;\n    &lt;target prefix=\"w11block\" namespace=\"Microsoft.Policies.W11ApplicationBlocking\" \/&gt;\n  &lt;\/policyNamespaces&gt;\n  \n  &lt;resources minRequiredRevision=\"1.0\" \/&gt;\n  \n  &lt;categories&gt;\n    &lt;category name=\"W11_App_Blocking\" displayName=\"$(string.W11_App_Blocking)\"&gt;\n      &lt;parentCategory ref=\"windows:System\" \/&gt;\n    &lt;\/category&gt;\n  &lt;\/categories&gt;\n  \n  &lt;policies&gt;\n    &lt;policy name=\"BlockLOLBins\" \n            class=\"User\" \n            displayName=\"$(string.BlockLOLBins)\"\n            explainText=\"$(string.BlockLOLBins_Help)\"\n            key=\"Software\\Policies\\W11Block\"\n            valueName=\"BlockLOLBins\"&gt;\n      &lt;parentCategory ref=\"W11_App_Blocking\" \/&gt;\n      &lt;supportedOn ref=\"windows:SUPPORTED_Windows_10_0\" \/&gt;\n      &lt;enabledValue&gt;\n        &lt;decimal value=\"1\" \/&gt;\n      &lt;\/enabledValue&gt;\n      &lt;disabledValue&gt;\n        &lt;decimal value=\"0\" \/&gt;\n      &lt;\/disabledValue&gt;\n    &lt;\/policy&gt;\n  &lt;\/policies&gt;\n&lt;\/policyDefinitions&gt;\n<\/code><\/pre>\n<h2>Test ve Do\u011frulama<\/h2>\n<h3>Test Script'i<\/h3>\n<pre><code class=\"language-powershell\">function Test-ApplicationBlocking {\n    [CmdletBinding()]\n    param(\n        [string]$TestUser = \"testuser@domain.local\"\n    )\n    \n    # Test edilecek uygulamalar\n    $testApps = @(\n        @{Name=\"PowerShell\"; Path=\"powershell.exe\"; Command=\"-NoProfile -Command Write-Host 'Test'\"},\n        @{Name=\"CMD\"; Path=\"cmd.exe\"; Command=\"\/c echo Test\"},\n        @{Name=\"CertUtil\"; Path=\"certutil.exe\"; Command=\"-?\"}\n    )\n    \n    Write-Host \"Testing Application Blocking for: $TestUser\" -ForegroundColor Cyan\n    Write-Host \"=\" * 50\n    \n    foreach ($app in $testApps) {\n        try {\n            # RunAs ile test\n            $credential = Get-Credential -UserName $TestUser\n            $process = Start-Process -FilePath $app.Path `\n                                    -ArgumentList $app.Command `\n                                    -Credential $credential `\n                                    -PassThru `\n                                    -Wait `\n                                    -ErrorAction Stop\n            \n            if ($process.ExitCode -eq 0) {\n                Write-Host \"\u274c $($app.Name): NOT BLOCKED\" -ForegroundColor Red\n            } else {\n                Write-Host \"\u2705 $($app.Name): BLOCKED\" -ForegroundColor Green\n            }\n        }\n        catch {\n            Write-Host \"\u2705 $($app.Name): BLOCKED (Exception)\" -ForegroundColor Green\n        }\n    }\n}\n<\/code><\/pre>\n<h2>Rollback Plan\u0131<\/h2>\n<h3>Acil Durum Geri Alma<\/h3>\n<pre><code class=\"language-powershell\">function Emergency-Rollback {\n    param(\n        [string]$GPOName = \"W11-User-Application-Blocking\"\n    )\n    \n    # GPO'yu devre d\u0131\u015f\u0131 b\u0131rak\n    $GPO = Get-GPO -Name $GPOName\n    $GPO.GpoStatus = \"AllSettingsDisabled\"\n    \n    # GPO linklerini kald\u0131r\n    Get-GPOReport -Name $GPOName -ReportType Xml | \n        Select-Xml -XPath \"\/\/LinksTo\/SOMPath\" | \n        ForEach-Object {\n            Remove-GPLink -Name $GPOName -Target $_.Node.InnerText -Confirm:$false\n        }\n    \n    # Kullan\u0131c\u0131larda zorla g&uuml;ncelleme\n    Invoke-Command -ComputerName (Get-ADComputer -Filter *).Name -ScriptBlock {\n        gpupdate \/force\n    }\n    \n    Write-Host \"Emergency rollback completed!\" -ForegroundColor Yellow\n}\n<\/code><\/pre>\n<h2>Monitoring ve Raporlama<\/h2>\n<h3>Event Log \u0130zleme<\/h3>\n<pre><code class=\"language-powershell\"># AppLocker\/SRP event monitoring\nfunction Get-BlockedApplicationEvents {\n    param(\n        [int]$Hours = 24\n    )\n    \n    $startTime = (Get-Date).AddHours(-$Hours)\n    \n    # Event ID'ler\n    # 865: SRP blocked\n    # 866: SRP warning\n    # 8003: AppLocker blocked\n    \n    Get-WinEvent -FilterHashtable @{\n        LogName = 'Application'\n        ID = 865, 866, 8003\n        StartTime = $startTime\n    } | Select-Object TimeCreated, Id, Message, UserId |\n        Export-Csv \"BlockedApps_$(Get-Date -Format 'yyyyMMdd').csv\"\n}\n<\/code><\/pre>\n<h2>&Ouml;nemli Uyar\u0131lar<\/h2>\n<h3>Kritik Dikkat Edilmesi Gerekenler<\/h3>\n<ol>\n<li>\n<p><strong>rundll32.exe Engelleme<\/strong><\/p>\n<ul>\n<li>Bir&ccedil;ok sistem fonksiyonu rundll32 kullan\u0131r<\/li>\n<li>Engellemeden &ouml;nce kapsaml\u0131 test yap\u0131n<\/li>\n<li>Alternatif: Yaln\u0131zca belirli DLL'lere izin verin<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>msiexec.exe K\u0131s\u0131tlamas\u0131<\/strong><\/p>\n<ul>\n<li>Windows Update'ler etkilenebilir<\/li>\n<li>SCCM\/Intune da\u011f\u0131t\u0131mlar\u0131 bozulabilir<\/li>\n<li>&Ccedil;&ouml;z&uuml;m: Sistem hesaplar\u0131 i&ccedil;in istisna<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>wevtutil.exe<\/strong><\/p>\n<ul>\n<li>Log toplama sistemleri etkilenebilir<\/li>\n<li>SIEM entegrasyonlar\u0131 kontrol edilmeli<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2>\u0130leri Seviye Yap\u0131land\u0131rmalar<\/h2>\n<h3>AppLocker ile Entegrasyon<\/h3>\n<pre><code class=\"language-xml\">&lt;AppLockerPolicy Version=\"1\"&gt;\n  &lt;RuleCollection Type=\"Exe\" EnforcementMode=\"Enabled\"&gt;\n    &lt;FilePublisherRule Id=\"a61c8b3c-a27f-4c8b-8e8a-8b4e62d8565f\" \n                       Name=\"MICROSOFT WINDOWS OPERATING SYSTEM\" \n                       Description=\"\" \n                       UserOrGroupSid=\"S-1-1-0\" \n                       Action=\"Allow\"&gt;\n      &lt;Conditions&gt;\n        &lt;FilePublisherCondition PublisherName=\"O=MICROSOFT CORPORATION, L=REDMOND, S=WASHINGTON, C=US\" \n                                ProductName=\"MICROSOFT&reg; WINDOWS&reg; OPERATING SYSTEM\" \n                                BinaryName=\"*\"&gt;\n          &lt;BinaryVersionRange LowSection=\"*\" HighSection=\"*\"\/&gt;\n        &lt;\/FilePublisherCondition&gt;\n      &lt;\/Conditions&gt;\n      &lt;Exceptions&gt;\n        &lt;!-- LOLBins exception listesi --&gt;\n        &lt;FilePathCondition Path=\"%SYSTEM32%\\certutil.exe\"\/&gt;\n        &lt;FilePathCondition Path=\"%SYSTEM32%\\bitsadmin.exe\"\/&gt;\n      &lt;\/Exceptions&gt;\n    &lt;\/FilePublisherRule&gt;\n  &lt;\/RuleCollection&gt;\n&lt;\/AppLockerPolicy&gt;\n<\/code><\/pre>\n<h2>Sonu&ccedil; ve &Ouml;neriler<\/h2>\n<p>Bu GPO tabanl\u0131 uygulama engelleme stratejisi:<\/p>\n<ul>\n<li>\u2705 Kullan\u0131c\u0131 seviyesinde g&uuml;&ccedil;l&uuml; kontrol sa\u011flar<\/li>\n<li>\u2705 LOLBins sald\u0131r\u0131 vekt&ouml;rlerini minimize eder<\/li>\n<li>\u2705 MITRE ATT&amp;CK T1218 tekniklerini engeller<\/li>\n<li>\u2705 Zero Trust prensipleriyle uyumludur<\/li>\n<\/ul>\n<p><strong>Kritik Ba\u015far\u0131 Fakt&ouml;rleri:<\/strong><\/p>\n<ol>\n<li>Test ortam\u0131nda kapsaml\u0131 validasyon<\/li>\n<li>Kademeli da\u011f\u0131t\u0131m stratejisi<\/li>\n<li>\u0130stisna y&ouml;netimi prosed&uuml;rleri<\/li>\n<li>S&uuml;rekli monitoring ve iyile\u015ftirme<\/li>\n<\/ol>\n<p>v<\/p>","excerpt":"Bu yap\u0131land\u0131rma,\u00a0Kullan\u0131c\u0131 Ba\u011flam\u0131nda Uygulama Engelleme stratejisi ile LOLBins ve bilinen k\u00f6t\u00fc ama\u00e7l\u0131 yaz\u0131l\u0131mlar\u0131n \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 engelleyerek sald\u0131r\u0131 y\u00fczeyini minimize eder.","created_at":"2025-11-26 17:47:33","updated_at":"2026-09-08 00:39:21","category_id":6,"view_count":747,"reading_time":6,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-11-26 14:47:33","featured_image":"resimyok.jpg","slug":"windows-gpo-tabanli-uygulama-engelleme-kullanici-baglaminda-guvenlik-sertlestirmesi","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":315,"title":"AdminDroid PowerShell Scripts","content":"<h1>AdminDroid PowerShell Scripts: Microsoft 365 Y&ouml;netimi i&ccedil;in Kapsaml\u0131 Script Koleksiyonu<\/h1>\r\n<p>Microsoft 365 ortamlar\u0131n\u0131 y&ouml;netmek, raporlamak ve denetlemek i&ccedil;in tasarlanm\u0131\u015f <strong>100'den fazla<\/strong> haz\u0131r PowerShell scripti i&ccedil;eren kapsaml\u0131 bir GitHub repository'si ile tan\u0131\u015f\u0131n: <a href=\"https:\/\/github.com\/admindroid-community\/powershell-scripts\">admindroid-community\/powershell-scripts<\/a><\/p>\r\n<h2>\ud83c\udfaf Repository Nedir?<\/h2>\r\n<p>Bu koleksiyon, IT y&ouml;neticilerinin g&uuml;nl&uuml;k rutinlerini otomatikle\u015ftirmek, detayl\u0131 raporlar olu\u015fturmak ve Microsoft 365 tenant'lar\u0131nda uyumluluk sa\u011flamak i&ccedil;in ihtiya&ccedil; duydu\u011fu her \u015feyi i&ccedil;eriyor. Hem k&uuml;&ccedil;&uuml;k i\u015fletmeler hem de enterprise seviyedeki kurulu\u015flar i&ccedil;in ideal bir kaynak.<\/p>\r\n<h2>\u2728 &Ouml;ne &Ccedil;\u0131kan &Ouml;zellikler<\/h2>\r\n<h3>\ud83d\udcda Kapsaml\u0131 Script Koleksiyonu<\/h3>\r\n<ul>\r\n<li><strong>100+ haz\u0131r script<\/strong> farkl\u0131 y&ouml;netim g&ouml;revleri i&ccedil;in<\/li>\r\n<li>Her script kendi ba\u015f\u0131na &ccedil;al\u0131\u015fabilir (self-contained)<\/li>\r\n<li>Detayl\u0131 yorumlar ve kullan\u0131m &ouml;rnekleri i&ccedil;erir<\/li>\r\n<li>Her script i&ccedil;in ba\u011flant\u0131l\u0131 blog yaz\u0131lar\u0131 mevcut<\/li>\r\n<\/ul>\r\n<h3>\u2699\ufe0f Otomasyon ve Zaman Tasarrufu<\/h3>\r\n<ul>\r\n<li>Tekrarlayan y&ouml;netim g&ouml;revlerini otomatikle\u015ftirin<\/li>\r\n<li>Manuel i\u015flemlerden kaynaklanan hatalar\u0131 azalt\u0131n<\/li>\r\n<li>Zamanlama deste\u011fi ile periyodik raporlar olu\u015fturun<\/li>\r\n<li>Toplu i\u015flemleri tek komutla ger&ccedil;ekle\u015ftirin<\/li>\r\n<\/ul>\r\n<h3>\ud83d\udcca Raporlama Yetenekleri<\/h3>\r\n<ul>\r\n<li>Denetim ve uyumluluk ama&ccedil;l\u0131 detayl\u0131 raporlar<\/li>\r\n<li>CSV format\u0131nda d&uuml;zenli export imkan\u0131<\/li>\r\n<li>Kullan\u0131c\u0131lar, gruplar, lisanslar hakk\u0131nda kapsaml\u0131 bilgi<\/li>\r\n<li>Oturum a&ccedil;ma aktiviteleri ve g&uuml;venlik raporlar\u0131<\/li>\r\n<\/ul>\r\n<h3>\ud83d\udd0d \u0130zleme ve Denetim<\/h3>\r\n<ul>\r\n<li>M365 aktivitelerini s&uuml;rekli izleyin<\/li>\r\n<li>\u015e&uuml;pheli kullan\u0131c\u0131lar\u0131 tespit edin<\/li>\r\n<li>Yetkisiz eri\u015fimleri belirleyin<\/li>\r\n<li>MFA de\u011fi\u015fikliklerini takip edin<\/li>\r\n<\/ul>\r\n<h3>\ud83d\udee0\ufe0f &Ouml;zelle\u015ftirilebilir Yap\u0131<\/h3>\r\n<ul>\r\n<li>Her script kolayca &ouml;zelle\u015ftirilebilir<\/li>\r\n<li>Built-in parametreler ile gran&uuml;ler kontrol<\/li>\r\n<li>Switch parametreleri ile esnek kullan\u0131m<\/li>\r\n<li>Kendi ihtiya&ccedil;lar\u0131n\u0131za g&ouml;re modifiye edin<\/li>\r\n<\/ul>\r\n<h2>\ud83d\udcbc Kullan\u0131m Alanlar\u0131<\/h2>\r\n<h3>Kullan\u0131c\u0131 Y&ouml;netimi<\/h3>\r\n<pre><code class=\"language-powershell\"># Kullan\u0131c\u0131 raporlar\u0131\r\n- T&uuml;m kullan\u0131c\u0131lar\u0131n listesi ve detaylar\u0131\r\n- Lisansl\u0131\/lisanss\u0131z kullan\u0131c\u0131lar\r\n- Son oturum a&ccedil;ma aktiviteleri\r\n- \u015eifre de\u011fi\u015fiklik ge&ccedil;mi\u015fi\r\n<\/code><\/pre>\r\n<h3>Lisans Y&ouml;netimi<\/h3>\r\n<pre><code class=\"language-powershell\"># Lisans raporlar\u0131\r\n- Lisans atamalar\u0131 ve kullan\u0131m\u0131\r\n- Lisans s&uuml;re sonu bildirimleri\r\n- Kullan\u0131lmayan lisanslar\r\n- Lisans de\u011fi\u015fiklik loglar\u0131\r\n<\/code><\/pre>\r\n<h3>G&uuml;venlik ve Uyumluluk<\/h3>\r\n<pre><code class=\"language-powershell\"># G&uuml;venlik raporlar\u0131\r\n- MFA durumu ve de\u011fi\u015fiklikleri\r\n- Admin rol atamalar\u0131\r\n- \u015e&uuml;pheli oturum a&ccedil;ma denemeleri\r\n- G&uuml;venlik uyar\u0131lar\u0131\r\n<\/code><\/pre>\r\n<h3>Grup Y&ouml;netimi<\/h3>\r\n<pre><code class=\"language-powershell\"># Grup operasyonlar\u0131\r\n- Grup &uuml;yelikleri\r\n- G&uuml;venlik gruplar\u0131\r\n- Distribution listleri\r\n- Microsoft 365 Groups\r\n<\/code><\/pre>\r\n<h2>\ud83d\ude80 Neden Bu Repository?<\/h2>\r\n<h3>1. Zaman Tasarrufu<\/h3>\r\n<p>Manuel olarak saatlerce s&uuml;recek i\u015flemleri dakikalar i&ccedil;inde tamamlay\u0131n. Her script optimize edilmi\u015f ve production-ready durumda.<\/p>\r\n<h3>2. Best Practices<\/h3>\r\n<p>Microsoft 365 y&ouml;netimi i&ccedil;in en iyi uygulamalar bu scriptlere entegre edilmi\u015f. G&uuml;venli ve verimli kod yap\u0131s\u0131.<\/p>\r\n<h3>3. &Uuml;cretsiz ve A&ccedil;\u0131k Kaynak<\/h3>\r\n<p>T&uuml;m scriptler &uuml;cretsiz kullan\u0131ma a&ccedil;\u0131k. Community taraf\u0131ndan s&uuml;rekli g&uuml;ncelleniyor ve geli\u015ftiriliyor.<\/p>\r\n<h3>4. Kolay Ba\u015flang\u0131&ccedil;<\/h3>\r\n<p>Her script detayl\u0131 a&ccedil;\u0131klamalar ve &ouml;rneklerle birlikte geliyor. PowerShell konusunda orta seviye bilgi bile yeterli.<\/p>\r\n<h3>5. Zamanlama Deste\u011fi<\/h3>\r\n<p>&Ccedil;o\u011fu script periyodik raporlama i&ccedil;in zamanlama &ouml;zelli\u011fini destekliyor. Task Scheduler ile entegre &ccedil;al\u0131\u015fabilir.<\/p>\r\n<h2>\ud83d\udce6 AdminDroid Ekosistemi<\/h2>\r\n<p>Repository, AdminDroid'in &uuml;cretsiz Microsoft 365 raporlama arac\u0131n\u0131 tamaml\u0131yor:<\/p>\r\n<h3>&Uuml;cretsiz Ara&ccedil; &Ouml;zellikleri:<\/h3>\r\n<ul>\r\n<li><strong>120+ temel rapor<\/strong> ve dashboard<\/li>\r\n<li>Kullan\u0131c\u0131, grup, lisans raporlar\u0131<\/li>\r\n<li>Oturum a&ccedil;ma aktiviteleri<\/li>\r\n<li>MFA ve admin rol de\u011fi\u015fiklikleri<\/li>\r\n<li>Tamamen &uuml;cretsiz kullan\u0131m<\/li>\r\n<\/ul>\r\n<h3>Premium Ara&ccedil; &Ouml;zellikleri:<\/h3>\r\n<ul>\r\n<li><strong>1900+ &ouml;nceden haz\u0131r rapor<\/strong><\/li>\r\n<li><strong>30+ i&ccedil;g&ouml;r&uuml;l&uuml; dashboard<\/strong><\/li>\r\n<li><strong>75+ haz\u0131r uyar\u0131 \u015fablonu<\/strong><\/li>\r\n<li>Tam g&ouml;r&uuml;n&uuml;rl&uuml;k ve kontrol<\/li>\r\n<\/ul>\r\n<h2>\ud83c\udf93 Kimler Kullanmal\u0131?<\/h2>\r\n<h3>IT Y&ouml;neticileri<\/h3>\r\n<ul>\r\n<li>Microsoft 365 tenant y&ouml;netimi<\/li>\r\n<li>Kullan\u0131c\u0131 ve lisans operasyonlar\u0131<\/li>\r\n<li>G&uuml;venlik ve uyumluluk denetimleri<\/li>\r\n<\/ul>\r\n<h3>Sistem Y&ouml;neticileri<\/h3>\r\n<ul>\r\n<li>Rutin g&ouml;revlerin otomasyonu<\/li>\r\n<li>Toplu i\u015flemler ve migrations<\/li>\r\n<li>Raporlama ve dok&uuml;mantasyon<\/li>\r\n<\/ul>\r\n<h3>G&uuml;venlik Uzmanlar\u0131<\/h3>\r\n<ul>\r\n<li>G&uuml;venlik audit'leri<\/li>\r\n<li>\u015e&uuml;pheli aktivite tespiti<\/li>\r\n<li>Uyumluluk raporlamas\u0131<\/li>\r\n<\/ul>\r\n<h3>MSP'ler (Managed Service Providers)<\/h3>\r\n<ul>\r\n<li>Multi-tenant y&ouml;netimi<\/li>\r\n<li>M&uuml;\u015fteri raporlar\u0131<\/li>\r\n<li>SLA takibi<\/li>\r\n<\/ul>\r\n<h2>\ud83d\udca1 H\u0131zl\u0131 Ba\u015flang\u0131&ccedil;<\/h2>\r\n<h3>Ad\u0131m 1: Repository'yi Klonlay\u0131n<\/h3>\r\n<pre><code class=\"language-powershell\">git clone https:\/\/github.com\/admindroid-community\/powershell-scripts.git\r\ncd powershell-scripts\r\n<\/code><\/pre>\r\n<h3>Ad\u0131m 2: Gerekli Mod&uuml;lleri Y&uuml;kleyin<\/h3>\r\n<pre><code class=\"language-powershell\"># Microsoft Graph PowerShell\r\nInstall-Module Microsoft.Graph -Scope CurrentUser\r\n\r\n# Exchange Online Management\r\nInstall-Module ExchangeOnlineManagement -Scope CurrentUser\r\n\r\n# Azure AD (gerekirse)\r\nInstall-Module AzureAD -Scope CurrentUser\r\n<\/code><\/pre>\r\n<h3>Ad\u0131m 3: Script'i &Ccedil;al\u0131\u015ft\u0131r\u0131n<\/h3>\r\n<pre><code class=\"language-powershell\"># &Ouml;rnek kullan\u0131m\r\n.\\Get-UserLicenseReport.ps1\r\n\r\n# Parametrelerle kullan\u0131m\r\n.\\Get-UserLicenseReport.ps1 -OutputPath \"C:\\Reports\"\r\n\r\n# Yard\u0131m i&ccedil;in\r\nGet-Help .\\Get-UserLicenseReport.ps1 -Detailed\r\n<\/code><\/pre>\r\n<h2>\ud83d\udd27 &Ouml;rnek Senaryolar<\/h2>\r\n<h3>Senaryo 1: Lisans S&uuml;re Sonu Raporu<\/h3>\r\n<pre><code class=\"language-powershell\"># 30 g&uuml;n i&ccedil;inde s&uuml;resi dolacak lisanslar\u0131 listele\r\n.\\Get-ExpiringLicenses.ps1 -Days 30 -SendEmail\r\n\r\n# Otomasyonla g&uuml;nl&uuml;k kontrol\r\n# Task Scheduler ile her g&uuml;n 09:00'da &ccedil;al\u0131\u015ft\u0131r\r\n<\/code><\/pre>\r\n<h3>Senaryo 2: MFA Kullan\u0131m Raporu<\/h3>\r\n<pre><code class=\"language-powershell\"># MFA etkin olmayan kullan\u0131c\u0131lar\u0131 tespit et\r\n.\\Get-MFAStatus.ps1 -OnlyDisabled -Export\r\n\r\n# Y&ouml;netici bilgilendirme emaili g&ouml;nder\r\n.\\Get-MFAStatus.ps1 -OnlyDisabled -NotifyAdmins\r\n<\/code><\/pre>\r\n<h3>Senaryo 3: Inactive User Cleanup<\/h3>\r\n<pre><code class=\"language-powershell\"># 90 g&uuml;n oturum a&ccedil;mayan kullan\u0131c\u0131lar\u0131 listele\r\n.\\Get-InactiveUsers.ps1 -Days 90\r\n\r\n# Lisanslar\u0131 otomatik kald\u0131r\r\n.\\Get-InactiveUsers.ps1 -Days 90 -RemoveLicense -WhatIf\r\n<\/code><\/pre>\r\n<h2>\ud83d\udcc8 Best Practices<\/h2>\r\n<h3>1. Test Ortam\u0131nda Deneyin<\/h3>\r\n<p>&Ouml;nce test tenant'\u0131n\u0131zda scriptleri deneyin. <code>-WhatIf<\/code> parametresini kullanarak de\u011fi\u015fiklikleri &ouml;nizleyin.<\/p>\r\n<h3>2. Yedekleme Al\u0131n<\/h3>\r\n<p>Toplu de\u011fi\u015fikliklerden &ouml;nce mutlaka CSV export al\u0131n:<\/p>\r\n<pre><code class=\"language-powershell\">.\\Get-AllUsers.ps1 -Export -BackupPath \"C:\\Backups\"\r\n<\/code><\/pre>\r\n<h3>3. Loglama Aktif Edin<\/h3>\r\n<pre><code class=\"language-powershell\"># Detayl\u0131 log tutun\r\n.\\Script.ps1 -Verbose -LogPath \"C:\\Logs\"\r\n<\/code><\/pre>\r\n<h3>4. G&uuml;venli Credential Y&ouml;netimi<\/h3>\r\n<pre><code class=\"language-powershell\"># Credential'lar\u0131 g&uuml;venli saklay\u0131n\r\n$cred = Get-Credential\r\n$cred | Export-Clixml -Path \"C:\\Secure\\cred.xml\"\r\n\r\n# Kullan\u0131rken\r\n$cred = Import-Clixml -Path \"C:\\Secure\\cred.xml\"\r\n<\/code><\/pre>\r\n<h3>5. Periyodik Raporlama<\/h3>\r\n<p>Task Scheduler ile otomatikle\u015ftirin:<\/p>\r\n<pre><code class=\"language-powershell\"># Haftal\u0131k rapor i&ccedil;in\r\n$action = New-ScheduledTaskAction -Execute 'PowerShell.exe' `\r\n    -Argument '-File \"C:\\Scripts\\WeeklyReport.ps1\"'\r\n$trigger = New-ScheduledTaskTrigger -Weekly -At 9am -DaysOfWeek Monday\r\nRegister-ScheduledTask -TaskName \"M365WeeklyReport\" -Action $action -Trigger $trigger\r\n<\/code><\/pre>\r\n<h2>\ud83c\udf1f Community ve Destek<\/h2>\r\n<h3>GitHub Issues<\/h3>\r\n<p>Sorunlar\u0131n\u0131z\u0131 ve &ouml;nerilerinizi GitHub Issues b&ouml;l&uuml;m&uuml;nde payla\u015f\u0131n. Active bir community taraf\u0131ndan destekleniyor.<\/p>\r\n<h3>Contribution<\/h3>\r\n<ul>\r\n<li>Pull request g&ouml;nderin<\/li>\r\n<li>Yeni scriptler ekleyin<\/li>\r\n<li>Mevcut scriptleri geli\u015ftirin<\/li>\r\n<li>Dok&uuml;mantasyona katk\u0131da bulunun<\/li>\r\n<\/ul>\r\n<h3>Blog ve Dok&uuml;mantasyon<\/h3>\r\n<p>Her script i&ccedil;in detayl\u0131 blog yaz\u0131lar\u0131 mevcut. Ad\u0131m ad\u0131m kullan\u0131m k\u0131lavuzlar\u0131 ve real-world senaryolar.<\/p>\r\n<h2>\ud83c\udf81 Bonus: Demo ve Deneyim<\/h2>\r\n<p>AdminDroid'in t&uuml;m &ouml;zelliklerini deneyimlemek i&ccedil;in:<\/p>\r\n<ul>\r\n<li><strong>Demo:<\/strong> <a href=\"https:\/\/demo.admindroid.com\/\">https:\/\/demo.admindroid.com<\/a><\/li>\r\n<li><strong>Download:<\/strong> <a href=\"https:\/\/admindroid.com\/download?src=GitHub\">AdminDroid Microsoft 365 Tool<\/a><\/li>\r\n<\/ul>\r\n<h2>\ud83d\udd12 G&uuml;venlik Notlar\u0131<\/h2>\r\n<ul>\r\n<li>Scriptler read-only i\u015flemler i&ccedil;in g&uuml;venlidir<\/li>\r\n<li>Write i\u015flemlerinde <code>-WhatIf<\/code> kullan\u0131n<\/li>\r\n<li>Credential'lar\u0131 asla script i&ccedil;ine hardcode etmeyin<\/li>\r\n<li>Least privilege prensibini uygulay\u0131n<\/li>\r\n<li>Audit loglar\u0131n\u0131 d&uuml;zenli kontrol edin<\/li>\r\n<\/ul>\r\n<h2>\ud83d\udcca Sonu&ccedil;<\/h2>\r\n<p><strong>admindroid-community\/powershell-scripts<\/strong> repository'si, Microsoft 365 y&ouml;netimi i&ccedil;in vazge&ccedil;ilmez bir kaynak. 100'den fazla haz\u0131r script, detayl\u0131 dok&uuml;mantasyon ve active community deste\u011fi ile:<\/p>\r\n<p>\u2705 Zaman tasarrufu sa\u011flar \u2705 Hata oran\u0131n\u0131 azalt\u0131r \u2705 Uyumlulu\u011fu kolayla\u015ft\u0131r\u0131r \u2705 G&uuml;venli\u011fi art\u0131r\u0131r \u2705 Maliyetleri d&uuml;\u015f&uuml;r&uuml;r<\/p>\r\n<p>&Uuml;cretsiz, a&ccedil;\u0131k kaynak ve s&uuml;rekli g&uuml;ncellenen bu koleksiyon, her IT y&ouml;neticisinin toolbox'\u0131nda olmas\u0131 gereken bir ara&ccedil; seti.<\/p>\r\n<hr>\r\n<p><strong>Hemen Ba\u015flay\u0131n:<\/strong> <a href=\"https:\/\/github.com\/admindroid-community\/powershell-scripts\">GitHub Repository<\/a><\/p>\r\n<p><strong>Daha Fazla Bilgi:<\/strong> <a href=\"https:\/\/admindroid.com\/\">AdminDroid Website<\/a><\/p>\r\n<p><em>Microsoft 365 y&ouml;netimini bir sonraki seviyeye ta\u015f\u0131y\u0131n!<\/em> \ud83d\ude80<\/p>","excerpt":"Microsoft 365 ortamlar\u0131n\u0131 y\u00f6netmek, raporlamak ve denetlemek i\u00e7in tasarlanm\u0131\u015f 100'den fazla haz\u0131r PowerShell scripti i\u00e7eren kapsaml\u0131 bir GitHub repository'si ile tan\u0131\u015f\u0131n","created_at":"2025-09-29 23:13:10","updated_at":"2026-09-07 09:46:39","category_id":6,"view_count":583,"reading_time":6,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-09-29 23:13:10","featured_image":"resimyok.jpg","slug":"admindroid-powershell-scripts","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":30,"title":"Get-FSPermissions","content":"<div   dir=\"ltr\"> <code>Get-FSPermissions<\/code> projesi, dosya sistemi izinlerini kolayca almay\u0131 ve analiz etmeyi sa\u011flayan bir PowerShell beti\u011fidir. Bu ara\u00e7 sayesinde belirli dosya ve klas\u00f6rlerin eri\u015fim kontrol listelerini (ACL'ler) ve g\u00fcvenlik tan\u0131mlay\u0131c\u0131lar\u0131n\u0131 h\u0131zl\u0131 bir \u015fekilde g\u00f6r\u00fcnt\u00fcleyebilirsiniz. Sistem y\u00f6neticileri ve g\u00fcvenlik uzmanlar\u0131 i\u00e7in dosya sistemi izinlerini denetleme ve sorun giderme s\u00fcre\u00e7lerini basitle\u015ftirmeyi hedefler. &nbsp; <h3>\u00d6zellikler<\/h3> &nbsp; <ul> <li><b>Detayl\u0131 \u0130zin Raporlamas\u0131:<\/b> Belirli bir dosya veya klas\u00f6rdeki kullan\u0131c\u0131 ve grup izinlerini ayr\u0131nt\u0131l\u0131 olarak listeler.<\/li> <li><b>Kullan\u0131m Kolayl\u0131\u011f\u0131:<\/b> PowerShell ortam\u0131nda basit komutlarla \u00e7al\u0131\u015facak \u015fekilde tasarlanm\u0131\u015ft\u0131r.<\/li> <li><b>Yol Tabanl\u0131 Sorgulama:<\/b> Belirli bir dizin veya dosya yolu i\u00e7in izin bilgilerini alabilir.<\/li> <li><b>Esnek \u00c7\u0131kt\u0131:<\/b> \u0130zin bilgilerini okunabilir bir formatta sunar, iste\u011fe ba\u011fl\u0131 olarak farkl\u0131 formatlarda (\u00f6rne\u011fin CSV, JSON) d\u0131\u015fa aktar\u0131labilir (e\u011fer betikte bu \u00f6zellik varsa veya gelecekte eklenecekse).<\/li> <\/ul> &nbsp; <h3>Kurulum<\/h3> &nbsp; Bu proje bir PowerShell beti\u011fi oldu\u011fundan, \u00f6zel bir kurulum ad\u0131m\u0131 gerektirmez. <ol start=\"1\"> <li><b>Depoyu Klonlay\u0131n:<\/b> <div > <div > <span >Bash<\/span> <div ><\/div> <\/div> <div > <div > <pre ><code  role=\"text\" data-test->git <span >clone<\/span> https:\/\/github.com\/onder7\/Get-FSPermissions.git <\/code><\/pre> <\/div> <\/div> <\/div> veya projenin ZIP dosyas\u0131n\u0131 indirip istedi\u011finiz bir dizine \u00e7\u0131kar\u0131n.<\/li> <li><b>Beti\u011fi \u00c7al\u0131\u015ft\u0131r\u0131n:<\/b> PowerShell konsolunuzdan betik dosyas\u0131na (<code>Get-FSPermissions.ps1<\/code> gibi) gidin ve \u00e7al\u0131\u015ft\u0131r\u0131n.<\/li> <\/ol> &nbsp; <h3>Nas\u0131l Kullan\u0131l\u0131r?<\/h3> &nbsp; Beti\u011fi bir PowerShell konsolunda \u00e7al\u0131\u015ft\u0131rarak dosya veya klas\u00f6r izinlerini g\u00f6r\u00fcnt\u00fcleyebilirsiniz. <b>\u00d6rnek Kullan\u0131m:<\/b> Belirli bir klas\u00f6r\u00fcn izinlerini almak i\u00e7in: <div > <div > <span >PowerShell<\/span> <div ><\/div> <\/div> <div > <div > <pre ><code  role=\"text\" data-test->.\/<span >Get-FSPermissions<\/span>.ps1 <span >-Path<\/span> <span >\"C:\\MyImportantFolder\"<\/span> <\/code><\/pre> <\/div> <\/div> <\/div> Belirli bir dosyan\u0131n izinlerini almak i\u00e7in: <div > <div > <span >PowerShell<\/span> <div ><\/div> <\/div> <div > <div > <pre ><code  role=\"text\" data-test->.\/<span >Get-FSPermissions<\/span>.ps1 <span >-Path<\/span> <span >\"C:\\MyImportantFolder\\document.txt\"<\/span> <\/code><\/pre> <\/div> <\/div> <\/div> <i>(Not: Yukar\u0131daki komutlar varsay\u0131msald\u0131r ve beti\u011finize \u00f6zg\u00fc parametre adlar\u0131na g\u00f6re ayarlanmal\u0131d\u0131r.)<\/i> &nbsp; &nbsp; &nbsp; <h2>English<\/h2> The <code>Get-FSPermissions<\/code> project is a PowerShell script designed to easily retrieve and analyze file system permissions. With this tool, you can quickly view the Access Control Lists (ACLs) and security descriptors of specific files and folders. It aims to simplify the process of auditing and troubleshooting file system permissions for system administrators and security professionals. &nbsp; <h3>Features<\/h3> &nbsp; <ul> <li><b>Detailed Permission Reporting:<\/b> Lists user and group permissions in detail for a given file or folder.<\/li> <li><b>Ease of Use:<\/b> Designed to work with simple commands within the PowerShell environment.<\/li> <li><b>Path-Based Querying:<\/b> Can retrieve permission information for a specific directory or file path.<\/li> <li><b>Flexible Output:<\/b> Presents permission information in a readable format, optionally exportable to different formats (e.g., CSV, JSON) if this feature is present in the script or planned for future development.<\/li> <\/ul> &nbsp; <h3>Installation<\/h3> &nbsp; As this is a PowerShell script, it does not require a special installation process. <ol start=\"1\"> <li><b>Clone the Repository:<\/b> <div > <div > <span >Bash<\/span> <div ><\/div> <\/div> <div > <div > <pre ><code  role=\"text\" data-test->git <span >clone<\/span> https:\/\/github.com\/onder7\/Get-FSPermissions.git <\/code><\/pre> <\/div> <\/div> <\/div> Alternatively, download the project as a ZIP file and extract it to your desired directory.<\/li> <li><b>Run the Script:<\/b> Navigate to the script file (e.g., <code>Get-FSPermissions.ps1<\/code>) from your PowerShell console and execute it.<\/li> <\/ol> &nbsp; <h3>How to Use<\/h3> &nbsp; You can view file or folder permissions by running the script in a PowerShell console. <b>Example Usage:<\/b> To get permissions for a specific folder: <div > <div > <span >PowerShell<\/span> <div ><\/div> <\/div> <div > <div > <pre ><code  role=\"text\" data-test->.\/<span >Get-FSPermissions<\/span>.ps1 <span >-Path<\/span> <span >\"C:\\MyImportantFolder\"<\/span> <\/code><\/pre> <\/div> <\/div> <\/div> To get permissions for a specific file: <div > <div > <span >PowerShell<\/span> <div ><\/div> <\/div> <div > <div > <pre ><code  role=\"text\" data-test->.\/<span >Get-FSPermissions<\/span>.ps1 <span >-Path<\/span> <span >\"C:\\MyImportantFolder\\document.txt\"<\/span> <\/code><\/pre> <\/div> <\/div> <\/div> <i>(Note: The commands above are hypothetical and should be adjusted according to the specific parameter names in your script.)<\/i> &nbsp; <hr \/> <\/div>","excerpt":"Get-FSPermissions projesi, dosya sistemi izinlerini kolayca almay\u0131 ve analiz etmeyi sa\u011flayan bir PowerShell beti\u011fidir. Bu ara\u00e7 sayesinde belirli...","created_at":"2025-07-16 10:12:07","updated_at":"2026-09-07 21:03:43","category_id":6,"view_count":634,"reading_time":3,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-07-16 10:12:07","featured_image":"resimyok.jpg","slug":"get-fspermissions","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":38,"title":"Siber G\u00fcvenlik Analistleri i\u00e7in Vazge\u00e7ilmez Windows Komutlar\u0131","content":"<p>Siber g&uuml;venlik d&uuml;nyas\u0131nda, grafik aray&uuml;zlerin (GUI) rahatl\u0131\u011f\u0131na ra\u011fmen, komut sat\u0131r\u0131 hala bir analistin en g&uuml;&ccedil;l&uuml; silahlar\u0131ndan biridir. Windows komutlar\u0131, bir sistemin derinliklerine inmek, anormallikleri tespit etmek, a\u011f trafi\u011fini analiz etmek ve bir g&uuml;venlik olay\u0131na m&uuml;dahale etmek i&ccedil;in h\u0131zl\u0131, etkili ve vazge&ccedil;ilmez bir yol sunar. <a href=\"https:\/\/cmd-test.site\" target=\"_blank\" rel=\"noopener\">cmd-test.site<\/a> adresinde bu komutlar\u0131 simile edebilirsiniz. Bu kapsaml\u0131 rehber, bir g&uuml;venlik analistinin bilmesi gereken temel Windows komutlar\u0131n\u0131 kategorilere ay\u0131rarak sunmaktad\u0131r. \u0130ster yeni ba\u015fl\u0131yor olun, ister bilgilerinizi tazelemek isteyin, bu liste sizin i&ccedil;in bir ba\u015fvuru kayna\u011f\u0131 olacakt\u0131r.<\/p>\r\n<h2>1. Sistem Bilgileri ve Yap\u0131land\u0131rma<\/h2>\r\n<p><img src=\"..\/..\/..\/wp-content\/uploads\/2025\/06\/whoami.png\" alt=\"\" width=\"954\" height=\"350\"> Bir sistemi analiz etmeye ba\u015flarken ilk ad\u0131m, ne ile kar\u015f\u0131 kar\u015f\u0131ya oldu\u011funuzu anlamakt\u0131r. Bu komutlar, i\u015fletim sistemi, donan\u0131m ve temel yap\u0131land\u0131rma hakk\u0131nda kritik bilgiler sa\u011flar <strong><code>systeminfo<\/code><\/strong>: \u0130\u015fletim sistemi yap\u0131land\u0131rmas\u0131, donan\u0131m detaylar\u0131 ve y&uuml;kl&uuml; yamalar (hotfix'ler) hakk\u0131nda ayr\u0131nt\u0131l\u0131 bilgi g&ouml;r&uuml;nt&uuml;ler. H\u0131zl\u0131 bir &ouml;zet i&ccedil;in: <strong>systeminfo | findstr \/B \/C:\"OS Name\" \/C:\"OS Version\" \/C:\"System Type\"<\/strong> Uzak bir sistemi sorgulamak i&ccedil;in: <strong>systeminfo \/s <\/strong> <strong><code>whoami<\/code><\/strong>: Mevcut kullan\u0131c\u0131 ba\u011flam\u0131n\u0131 g&ouml;sterir. Kullan\u0131c\u0131n\u0131n grup &uuml;yeliklerini g&ouml;rmek i&ccedil;in: <strong>whoami \/groups<\/strong> Kullan\u0131c\u0131 ayr\u0131cal\u0131klar\u0131n\u0131 de\u011ferlendirmek i&ccedil;in (genellikle y&ouml;netici yetkisi gerekir): <strong><code>whoami \/priv<\/code><\/strong> Kullan\u0131c\u0131, gruplar ve ayr\u0131cal\u0131klar hakk\u0131nda t&uuml;m bilgileri bir arada g&ouml;rmek i&ccedil;in: <strong>whoami \/all<\/strong> <strong><code>hostname<\/code><\/strong>: Bilgisayar\u0131n ana bilgisayar ad\u0131n\u0131 g&ouml;r&uuml;nt&uuml;ler. <strong><code>ver \/ winver<\/code><\/strong>: Windows s&uuml;r&uuml;m&uuml;n&uuml; g&ouml;sterir. <strong><code>ver<\/code><\/strong> komut sat\u0131r\u0131 s&uuml;r&uuml;m&uuml;n&uuml; <code><strong>winver<\/strong> ise yap\u0131 numaras\u0131n\u0131 i&ccedil;eren bir grafik aray&uuml;z penceresi a&ccedil;ar<\/code> <strong><code>getmac<\/code><\/strong>: Cihaz\u0131n MAC adresini veya adreslerini listeler <strong><code>getmac \/v<\/code><\/strong> komutu, adapt&ouml;r ad\u0131yla birlikte daha ayr\u0131nt\u0131l\u0131 bilgi verir. <strong><code>bcdedit<\/code><\/strong>: &Ouml;ny&uuml;kleme Yap\u0131land\u0131rma Verilerini (Boot Configuration Data) y&ouml;netir. Ola\u011fand\u0131\u015f\u0131 &ouml;ny&uuml;kleme giri\u015flerini kontrol etmek i&ccedil;in <code><strong>bcdedit \/enum all<\/strong><\/code> kullan\u0131labilir (Y&ouml;netici Yetkisi Gerekir) <strong><code>driverquery<\/code><\/strong>: Y&uuml;kl&uuml; ayg\u0131t s&uuml;r&uuml;c&uuml;lerinin bir listesini sunar. \u0130mzal\u0131 s&uuml;r&uuml;c&uuml;leri g&ouml;rmek i&ccedil;in <code>\/si<\/code> , imza bilgileri gibi detaylar\u0131 g&ouml;rmek i&ccedil;in <code>\/v<\/code> parametresi kullan\u0131l\u0131r <code>msinfo32 \/report C:\\temp\\sysinfo.txt<\/code> komutu kullan\u0131labilir. <strong><code>wmic<\/code><\/strong>: Windows Y&ouml;netim Ara&ccedil;lar\u0131 Komut Sat\u0131r\u0131. Art\u0131k kullan\u0131mdan kalkmakta ve yerini PowerShell'in <code>Get-CimInstance<\/code> komutuna b\u0131rakmakta olsa da hala yayg\u0131n olarak kullan\u0131lmaktad\u0131r. \u0130\u015fletim sistemi bilgilerini almak i&ccedil;in: <strong>wmic os get Caption, Version, BuildNumber, OSArchitecture.<\/strong> Y&uuml;kl&uuml; yaz\u0131l\u0131mlar\u0131 listelemek i&ccedil;in: <strong>wmic product get name, version<\/strong> Y&uuml;kl&uuml; yamalar\u0131 (Quick Fix Engineering) listelemek i&ccedil;in <strong>wmic qfe list brief<\/strong> <strong><code>powercfg<\/code><\/strong>: G&uuml;&ccedil; ayarlar\u0131n\u0131 y&ouml;netir. Kullan\u0131labilir uyku durumlar\u0131n\u0131 g&ouml;sterir: <strong><code>powercfg \/a<\/code><\/strong> Sistemi en son neyin uyand\u0131rd\u0131\u011f\u0131n\u0131 g&ouml;sterir: <code>powercfg \/lastwake<\/code> <strong><code>set<\/code><\/strong>: Ortam de\u011fi\u015fkenlerini g&ouml;r&uuml;nt&uuml;ler, ayarlar veya kald\u0131r\u0131r &nbsp;<\/p>\r\n<h2>2. A\u011f Analizi<\/h2>\r\n<p><img src=\"..\/..\/..\/wp-content\/uploads\/2025\/06\/ipconfigall.png\" alt=\"\" width=\"973\" height=\"456\"> A\u011f ba\u011flant\u0131lar\u0131n\u0131, yap\u0131land\u0131rmalar\u0131 ve olas\u0131 sorunlar\u0131 anlamak, g&uuml;venlik analizinin temel ta\u015flar\u0131ndan biridir. ipconfig: IP yap\u0131land\u0131rmas\u0131n\u0131 g&ouml;r&uuml;nt&uuml;ler. Detayl\u0131 bilgi (MAC, DNS, DHCP dahil) i&ccedil;in: ipconfig \/all DNS &ccedil;&ouml;z&uuml;mleyici &ouml;nbelle\u011fini g&ouml;r&uuml;nt&uuml;lemek i&ccedil;in: <strong>ipconfig \/displaydns.<\/strong> DNS &ouml;nbelle\u011fini temizlemek i&ccedil;in (Y&ouml;netici Yetkisi Gerekir): <strong>ipconfig \/flushdns.<\/strong> <strong>ping<\/strong>: ICMP yank\u0131 istekleri kullanarak a\u011f ba\u011flant\u0131s\u0131n\u0131 test eder. <strong>ping -t<\/strong> komutu durdurulana kadar s&uuml;rekli ping atar. <strong>netstat<\/strong>: A\u011f ba\u011flant\u0131lar\u0131n\u0131, dinleme portlar\u0131n\u0131 ve istatistikleri g&ouml;sterir. En kullan\u0131\u015fl\u0131 parametrelerden biri: <strong>netstat -ano<\/strong> TCP\/UDP portlar\u0131n\u0131, IP adreslerini, dinleme durumlar\u0131n\u0131 ve ili\u015fkili i\u015flem kimli\u011fini (PID) g&ouml;sterir. \u0130\u015flem ad\u0131n\u0131 da g&ouml;rmek i&ccedil;in (Y&ouml;netici Yetkisi Gerekir): <strong>netstat -anob<\/strong> <img src=\"..\/..\/..\/wp-content\/uploads\/2025\/06\/netstat-anob.png\" alt=\"\" width=\"953\" height=\"225\"> Y&ouml;nlendirme tablosunu g&ouml;stermek i&ccedil;in: <strong>netstat -r<\/strong> <img src=\"..\/..\/..\/wp-content\/uploads\/2025\/06\/netstat-r.png\" alt=\"\" width=\"947\" height=\"177\"> <strong>tracert<\/strong>: Bir hedefe giden rota &uuml;zerindeki atlamalar\u0131 (hops) izler. <strong>pathping<\/strong>: ping ve tracert komutlar\u0131n\u0131 birle\u015ftirerek her atlamadaki gecikme ve paket kayb\u0131n\u0131 g&ouml;sterir. <strong>nslookup<\/strong>: DNS sunucular\u0131n\u0131 sorgulamak i&ccedil;in kullan\u0131l\u0131r. <strong>nslookup -type=mx google.com<\/strong> gibi komutlarla belirli kay\u0131t t&uuml;rleri (&ouml;rne\u011fin, Mail Exchange) sorgulanabilir. <strong>arp<\/strong>: Adres &Ccedil;&ouml;z&uuml;mleme Protokol&uuml; (ARP) &ouml;nbelle\u011fini (IP-MAC e\u015fle\u015ftirmesi) g&ouml;r&uuml;nt&uuml;ler ve de\u011fi\u015ftirir. Mevcut giri\u015fleri g&ouml;rmek i&ccedil;in <strong>arp -a<\/strong> kullan\u0131l\u0131r. <strong>netsh<\/strong>: G&uuml;&ccedil;l&uuml; bir a\u011f yap\u0131land\u0131rma arac\u0131d\u0131r. T&uuml;m g&uuml;venlik duvar\u0131 kurallar\u0131n\u0131 g&ouml;stermek i&ccedil;in: <strong>netsh advfirewall firewall show rule name=all.<\/strong> Kaydedilmi\u015f Wi-Fi profillerini listelemek i&ccedil;in: <strong>netsh wlan show profiles.<\/strong> Kaydedilmi\u015f bir Wi-Fi \u015fifresini g&ouml;rmek i&ccedil;in (Y&ouml;netici Yetkisi Gerekir): <strong>netsh wlan show profile name=\"ProfilAd\u0131\" key=clear.<\/strong> <strong>route<\/strong>: Yerel IP y&ouml;nlendirme tablosunu g&ouml;r&uuml;nt&uuml;ler ve de\u011fi\u015ftirir. <strong>route print<\/strong> ile tabloyu g&ouml;rebilirsiniz.<\/p>\r\n<h2>3. \u0130\u015flem ve Servis Y&ouml;netimi<\/h2>\r\n<p>Sistemde hangi i\u015flemlerin ve servislerin &ccedil;al\u0131\u015ft\u0131\u011f\u0131n\u0131 bilmek, zararl\u0131 yaz\u0131l\u0131m tespiti ve sistem analizi i&ccedil;in kritiktir. <strong>tasklist<\/strong>: &Ccedil;al\u0131\u015fan i\u015flemleri listeler. <img src=\"..\/..\/..\/wp-content\/uploads\/2025\/06\/tasklist.png\" alt=\"\" width=\"942\" height=\"224\"> Her i\u015flemde bar\u0131nd\u0131r\u0131lan servisleri g&ouml;rmek i&ccedil;in: <strong>tasklist \/svc<\/strong> <img src=\"..\/..\/..\/wp-content\/uploads\/2025\/06\/tasklistsvc.png\" alt=\"\" width=\"934\" height=\"210\"> Belirli bir DLL'i kullanan i\u015flemleri bulmak i&ccedil;in: <strong>tasklist \/m <\/strong> G&ouml;r&uuml;nt&uuml; ad\u0131na g&ouml;re filtrelemek i&ccedil;in: <strong>tasklist \/fi \"IMAGENAME eq chrome.exe\"<\/strong> <strong>taskkill<\/strong>: \u0130\u015flemleri sonland\u0131r\u0131r. G&ouml;r&uuml;nt&uuml; ad\u0131na g&ouml;re sonland\u0131rmak i&ccedil;in: <strong>taskkill \/IM notepad.exe<\/strong> \u0130\u015flem kimli\u011fine (PID) g&ouml;re sonland\u0131rmak i&ccedil;in: <strong>taskkill \/PID <\/strong> Bir i\u015flemi ve onun alt i\u015flemlerini zorla sonland\u0131rmak i&ccedil;in: <strong>taskkill \/T \/IM \/F<\/strong> <strong>schtasks<\/strong>: Komutlar\u0131 ve programlar\u0131 zamanlar (G&ouml;rev Zamanlay\u0131c\u0131). T&uuml;m g&ouml;revlerin ayr\u0131nt\u0131l\u0131 bir listesini <strong>schtasks \/query \/fo LIST \/v<\/strong> ile alabilirsiniz. <strong>sc<\/strong>: Windows servislerini y&ouml;neten Servis Kontrol arac\u0131d\u0131r. T&uuml;m servisleri listelemek i&ccedil;in: <strong>sc query state=all<\/strong> Bir servisin yap\u0131land\u0131rmas\u0131n\u0131 (ikili dosya yolu, ba\u011f\u0131ml\u0131l\u0131klar vb.) sorgulamak analistler i&ccedil;in &ccedil;ok &ouml;nemlidir: <strong>sc qc <\/strong> Bir servisin PID'sini &ouml;\u011frenmek i&ccedil;in: <strong>sc queryex <\/strong> <strong>net start \/ net stop<\/strong>: Servisleri ba\u015flatmak ve durdurmak i&ccedil;in sc komutuna g&ouml;re daha basit bir alternatiftir. &Ccedil;al\u0131\u015fan servisleri listelemek i&ccedil;in <strong>net start<\/strong> kullan\u0131labilir. 4. Dosya Sistemi ve Veri Y&ouml;netimi Dosya ve dizin i\u015flemleri, kan\u0131t toplama, zararl\u0131 dosyalar\u0131 izole etme ve sistem yap\u0131land\u0131rmalar\u0131n\u0131 inceleme s\u0131ras\u0131nda s\u0131k&ccedil;a kullan\u0131l\u0131r. <strong>dir<\/strong>: Dosya ve dizinleri listeler. Gizli ve sistem dosyalar\u0131n\u0131 g&ouml;rmek i&ccedil;in <strong>\/a<\/strong> , alt dizinleri de dahil etmek i&ccedil;in <strong>\/s<\/strong> kullan\u0131l\u0131r. <strong>cd<\/strong> veya <strong>chdir<\/strong>: Dizini de\u011fi\u015ftirir. <strong>type<\/strong>: Bir metin dosyas\u0131n\u0131n i&ccedil;eri\u011fini g&ouml;r&uuml;nt&uuml;ler. &Ouml;rne\u011fin, <strong>type C:\\Windows\\System32\\drivers\\etc\\hosts<\/strong> <strong>findstr<\/strong>: Dosyalarda metin dizeleri arar ve normal ifadeleri (regex) destekler. <strong>ipconfig \/all | findstr \/i \"DNS Servers\"<\/strong> gibi komutlarla bir komutun &ccedil;\u0131kt\u0131s\u0131n\u0131 filtreleyebilirsiniz. <strong>robocopy<\/strong>: xcopy'den daha g&uuml;&ccedil;l&uuml; ve tercih edilen, sa\u011flam bir dosya kopyalama arac\u0131d\u0131r. <strong>\/MIR<\/strong> anahtar\u0131 bir dizini aynalar, ancak dikkatli kullan\u0131lmal\u0131d\u0131r &ccedil;&uuml;nk&uuml; hedefte olup kaynakta olmayan dosyalar\u0131 siler. <strong>attrib<\/strong>: Dosya &ouml;zniteliklerini (gizli, salt okunur vb.) g&ouml;r&uuml;nt&uuml;ler veya de\u011fi\u015ftirir. Bir dosyay\u0131 gizlemek i&ccedil;in <strong>attrib +h <\/strong> kullan\u0131labilir. <strong>icacls<\/strong>: Dosya ve klas&ouml;rlerin Eri\u015fim Kontrol Listelerini (izinlerini) g&ouml;r&uuml;nt&uuml;ler veya de\u011fi\u015ftirir. \u0130zinleri g&ouml;r&uuml;nt&uuml;lemek i&ccedil;in <strong>icacls <\/strong> yeterlidir. <strong>takeown<\/strong>: Bir y&ouml;neticinin bir dosya veya klas&ouml;r&uuml;n sahipli\u011fini almas\u0131n\u0131 sa\u011flar (Y&ouml;netici Yetkisi Gerekir).<\/p>\r\n<h2>5. Kullan\u0131c\u0131, Grup ve \u0130lke Y&ouml;netimi<\/h2>\r\n<p>Kullan\u0131c\u0131 hesaplar\u0131n\u0131, grup &uuml;yeliklerini ve uygulanan grup ilkelerini analiz etmek, yetkisiz eri\u015fimi ve g&uuml;venlik yap\u0131land\u0131rma hatalar\u0131n\u0131 tespit etmede hayati &ouml;nem ta\u015f\u0131r. <strong>net user<\/strong>: Yerel veritaban\u0131ndaki veya etki alan\u0131ndaki kullan\u0131c\u0131 hesaplar\u0131n\u0131 y&ouml;netir. Yerel kullan\u0131c\u0131lar\u0131 listelemek i&ccedil;in <strong>net user<\/strong> , bir kullan\u0131c\u0131y\u0131 devre d\u0131\u015f\u0131 b\u0131rakmak i&ccedil;in <strong>net user \/active:no<\/strong> kullan\u0131l\u0131r (Y&ouml;netici Yetkisi Gerekir). <strong>net localgroup<\/strong>: Yerel gruplar\u0131 y&ouml;netir. Y&ouml;neticiler grubunun &uuml;yelerini listelemek i&ccedil;in <strong>net localgroup Administrators<\/strong> komutu kullan\u0131l\u0131r. <strong>gpupdate<\/strong>: Grup \u0130lkesi ayarlar\u0131n\u0131 g&uuml;nceller. T&uuml;m ilkelerin yeniden uygulanmas\u0131n\u0131 zorlamak i&ccedil;in <strong>gpupdate \/force<\/strong> kullan\u0131l\u0131r. <strong>gpresult<\/strong>: Uygulanan Grup \u0130lkesi sonu&ccedil;lar\u0131n\u0131 (Resultant Set of Policy - RSoP) g&ouml;sterir. <strong>gpresult \/r<\/strong> komutu, mevcut kullan\u0131c\u0131 ve bilgisayar i&ccedil;in &ouml;zet verileri sunar. <strong>runas<\/strong>: Bir program\u0131 farkl\u0131 bir kullan\u0131c\u0131 olarak &ccedil;al\u0131\u015ft\u0131r\u0131r.<\/p>\r\n<h2>6. Olay G&uuml;nl&uuml;\u011f&uuml; Y&ouml;netimi<\/h2>\r\n<p>Olay g&uuml;nl&uuml;kleri (Event Logs), bir sistemde olan biten her \u015feyin kayd\u0131n\u0131 tutar ve bir g&uuml;venlik olay\u0131 incelemesinin en zengin bilgi kaynaklar\u0131ndan biridir. <strong>wevtutil<\/strong>: Olay g&uuml;nl&uuml;klerini y&ouml;netmek i&ccedil;in kullan\u0131lan g&uuml;&ccedil;l&uuml; bir komut sat\u0131r\u0131 arac\u0131d\u0131r. T&uuml;m olay g&uuml;nl&uuml;klerini listelemek i&ccedil;in: <strong>wevtutil el<\/strong> G&uuml;venlik g&uuml;nl&uuml;\u011f&uuml;ndeki en yeni 10 olay\u0131 metin format\u0131nda sorgulamak i&ccedil;in: <strong>wevtutil qe Security \/c:10 \/rd:true \/f:text<\/strong> Bir g&uuml;nl&uuml;\u011f&uuml; yedeklemek i&ccedil;in: <strong>wevtutil epl Security C:\\Backup\\SecurityLog.evtx<\/strong> Bir g&uuml;nl&uuml;\u011f&uuml; temizlemek (D\u0130KKAT: Kan\u0131tlar\u0131 siler!): <strong>wevtutil cl Security<\/strong> <strong>eventvwr<\/strong>: Olay G&ouml;r&uuml;nt&uuml;leyicisi GUI'sini a&ccedil;ar<\/p>\r\n<h2>7. G&uuml;venlik Denetim Ara&ccedil;lar\u0131<\/h2>\r\n<p>Bu ara&ccedil;lar, sistem b&uuml;t&uuml;nl&uuml;\u011f&uuml;n&uuml; kontrol etmek, denetim ilkelerini y&ouml;netmek ve sald\u0131rganlar taraf\u0131ndan k&ouml;t&uuml;ye kullan\u0131labilecek servisleri izlemek i&ccedil;in kullan\u0131l\u0131r. <strong>sfc<\/strong>: Sistem Dosyas\u0131 Denetleyicisi. Korunan sistem dosyalar\u0131n\u0131 tarar ve onar\u0131r (Y&ouml;netici Yetkisi Gerekir). <strong>sfc \/scannow<\/strong> komutu tam bir tarama ve onar\u0131m yapar. <strong>auditpol<\/strong>: Denetim ilkelerini y&ouml;netir (Y&ouml;netici Yetkisi Gerekir). Mevcut ayarlar\u0131 g&ouml;rmek i&ccedil;in <strong>auditpol \/get \/category:*<\/strong> kullan\u0131l\u0131r. <strong>bitsadmin<\/strong>: Arka Plan Ak\u0131ll\u0131 Aktar\u0131m Hizmeti (BITS) i\u015flerini y&ouml;netir. Genellikle zararl\u0131 yaz\u0131l\u0131mlar taraf\u0131ndan k&ouml;t&uuml;ye kullan\u0131ld\u0131\u011f\u0131 i&ccedil;in <strong>bitsadmin \/list \/allusers<\/strong> komutuyla t&uuml;m kullan\u0131c\u0131lar\u0131n i\u015flerini listelemek &ouml;nemlidir. <strong>certutil<\/strong>: Sertifikalar\u0131 y&ouml;netir ancak sald\u0131rganlar taraf\u0131ndan dosya indirme veya kodlama gibi &ccedil;e\u015fitli ama&ccedil;larla da kullan\u0131l\u0131r. En kullan\u0131\u015fl\u0131 &ouml;zelliklerinden biri: Bir dosyan\u0131n hash de\u011ferini hesaplamak i&ccedil;in: certutil -hashfile SHA256. Sald\u0131rganlar taraf\u0131ndan dosya indirmek i&ccedil;in kullan\u0131labilir: <strong>certutil -urlcache -split -f &lt;&ccedil;\u0131kt\u0131_dosyas\u0131&gt;<\/strong> <strong>fltmc<\/strong>: Filtre s&uuml;r&uuml;c&uuml;s&uuml; y&ouml;neticisidir (Y&ouml;netici Yetkisi Gerekir). fltmc filters komutu, y&uuml;kl&uuml; olan ve potansiyel olarak \u015f&uuml;pheli olabilecek dosya sistemi filtre s&uuml;r&uuml;c&uuml;lerini listeler.<\/p>\r\n<h2>8. PowerShell: Modern Standart<\/h2>\r\n<p>PowerShell, komut sat\u0131r\u0131 kabu\u011fu ve betik dilini bir araya getiren g&uuml;&ccedil;l&uuml; bir otomasyon ve yap\u0131land\u0131rma y&ouml;netimi &ccedil;er&ccedil;evesidir. Modern Windows y&ouml;netimi ve g&uuml;venlik analizi i&ccedil;in vazge&ccedil;ilmezdir. \u0130\u015fte baz\u0131 temel cmdlet (komut-let) &ouml;rnekleri: &nbsp; \u0130\u015flem Y&ouml;netimi: <strong>Get-Process<\/strong> (tasklist gibi), Stop-Process -Id -Force (taskkill gibi) Servis Y&ouml;netimi: <strong>Get-Service, Start-Service , Stop-Service <\/strong> A\u011f Y&ouml;netimi: <strong>Get-NetIPConfiguration (ipconfig \/all gibi), Test-NetConnection -Port , Get-NetTCPConnection<\/strong> (netstat -ano gibi) Olay G&uuml;nl&uuml;\u011f&uuml;: <strong>Get-WinEvent -LogName Security -MaxEvents<\/strong> 10 Sistem Bilgisi: <strong>Get-ComputerInfo<\/strong>,<strong> Get-HotFix<\/strong> (yamalar). <strong>WMI\/CIM: Get-CimInstance -ClassName Win32_OperatingSystem<\/strong> (bir&ccedil;ok wmic kullan\u0131m\u0131n\u0131n modern alternatifi).<\/p>\r\n<h2>9. Yard\u0131mc\u0131 Komutlar ve GUI K\u0131sayollar\u0131<\/h2>\r\n<p>Analiz s&uuml;recini h\u0131zland\u0131ran baz\u0131 temel yard\u0131mc\u0131lar: <strong>clip<\/strong>: Bir komutun &ccedil;\u0131kt\u0131s\u0131n\u0131 do\u011frudan Windows panosuna kopyalar. &Ouml;rne\u011fin: <strong>ipconfig \/all | clip<\/strong> <strong>shutdown<\/strong>: Bilgisayar\u0131 kapat\u0131r veya yeniden ba\u015flat\u0131r. <strong>shutdown \/r \/t 0<\/strong> komutu hemen yeniden ba\u015flat\u0131r. GUI K\u0131sayollar\u0131: <strong>services.msc<\/strong>: Servisler y&ouml;netim konsolunu a&ccedil;ar. <strong>devmgmt.msc:<\/strong> Ayg\u0131t Y&ouml;neticisi'ni a&ccedil;ar. <strong>diskmgmt.msc<\/strong>: Disk Y&ouml;netimi'ni a&ccedil;ar. <strong>resmon<\/strong>: Kaynak \u0130zleyicisi'ni a&ccedil;ar. <strong>mstsc<\/strong>: Uzak Masa&uuml;st&uuml; Ba\u011flant\u0131s\u0131 istemcisini a&ccedil;ar.<\/p>\r\n<h2>10. Sysinternals Suite (\u015eiddetle Tavsiye Edilen Harici Ara&ccedil;lar)<\/h2>\r\n<p>Bunlar Windows'ta yerle\u015fik olarak gelmese de, derinlemesine analiz i&ccedil;in vazge&ccedil;ilmez kabul edilirler ve Microsoft'tan indirilebilirler. &nbsp; <strong>Autoruns\/Autorunsc<\/strong>: Kay\u0131t defteri, servisler, zamanlanm\u0131\u015f g&ouml;revler gibi t&uuml;m ba\u015flang\u0131&ccedil; konumlar\u0131n\u0131 g&ouml;sterir ve y&ouml;netir. <strong>Process Explorer (procexp.exe)<\/strong>: Geli\u015fmi\u015f bir G&ouml;rev Y&ouml;neticisi'dir. DLL'leri, i\u015flem a\u011fac\u0131n\u0131 g&ouml;sterir ve imzalar\u0131 do\u011frular. <strong>Process Monitor (procmon.exe)<\/strong>: Dosya sistemi, kay\u0131t defteri, i\u015flem ve a\u011f etkinli\u011fini ger&ccedil;ek zamanl\u0131 olarak izler. Davran\u0131\u015f analizi i&ccedil;in son derece g&uuml;&ccedil;l&uuml;d&uuml;r. <strong>Sigcheck (sigcheck.exe)<\/strong>: Dosya imzalar\u0131n\u0131, hash de\u011ferlerini kontrol eder ve VirusTotal entegrasyonu sunar. TCPView (tcpview.exe): netstat'\u0131n ger&ccedil;ek zamanl\u0131 ve grafik aray&uuml;zl&uuml; halidir. Bu komutlara hakim olmak, bir g&uuml;venlik analistinin verimlili\u011fini ve etkinli\u011fini b&uuml;y&uuml;k &ouml;l&ccedil;&uuml;de art\u0131r\u0131r. Komut sat\u0131r\u0131, bir sistemi anlamak ve korumak i&ccedil;in en do\u011frudan ve g&uuml;&ccedil;l&uuml; yollardan biri olmaya devam etmektedir.<\/p>","excerpt":"Siber g\u00fcvenlik d\u00fcnyas\u0131nda, grafik aray\u00fczlerin (GUI) rahatl\u0131\u011f\u0131na ra\u011fmen, komut sat\u0131r\u0131 hala bir analistin en g\u00fc\u00e7l\u00fc silahlar\u0131ndan biridir....","created_at":"2025-06-25 20:39:40","updated_at":"2026-09-06 11:26:06","category_id":6,"view_count":789,"reading_time":12,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-06-25 20:39:40","featured_image":"resimyok.jpg","slug":"siber-guvenlik-analistleri-icin-vazgecilmez-windows-komutlari","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":39,"title":"PowerShell beti\u011fi ile Active Directory bilgilerini alma","content":"<p>Tek bir &ccedil;\u0131kt\u0131da Active Directory bilgisi nas\u0131l al\u0131n\u0131r? &Ouml;rne\u011fin, Active Directory'yi yeni bir sunucuya ta\u015f\u0131mak istiyorsunuz ve AD bilgilerini almak istiyorsunuz. Veya AD'de ka&ccedil; i\u015f istasyonu, sunucu veya grup bulundu\u011funu bilmek ister misiniz? Bu yaz\u0131da, PowerShell beti\u011fi ile Active Directory bilgilerini nas\u0131l alaca\u011f\u0131n\u0131z\u0131 &ouml;\u011freneceksiniz.<\/p>\r\n<div>\r\n<h2>\u0130&ccedil;indekiler<\/h2>\r\n<ul>\r\n<li>AD bilgilerini alma PowerShell beti\u011fi<\/li>\r\n<li>AD bilgilerini alma PowerShell komut dosyas\u0131n\u0131 indirin<\/li>\r\n<li>AD bilgilerini al PowerShell beti\u011fini &ccedil;al\u0131\u015ft\u0131r\u0131n<\/li>\r\n<li>Son<\/li>\r\n<\/ul>\r\n<\/div>\r\n<h2>AD bilgilerini alma PowerShell beti\u011fi<\/h2>\r\n<p>Get-ADInfo.ps1&nbsp;PowerShell beti\u011fi a\u015fa\u011f\u0131daki AD bilgilerini al\u0131r:<\/p>\r\n<ol>\r\n<li>Bilgisayarlar (\u0130\u015f \u0130stasyonlar\u0131 + Sunucular)<\/li>\r\n<li>I\u015f istasyon -lar\u0131<\/li>\r\n<li>Sunucu<\/li>\r\n<li>Kullan\u0131c\u0131<\/li>\r\n<li>Grup<\/li>\r\n<li>Active Directory orman ad\u0131<\/li>\r\n<li>Active Directory orman modu<\/li>\r\n<li>Active Directory etki alan\u0131 modu<\/li>\r\n<li>Active Directory \u015fema s&uuml;r&uuml;m&uuml;<\/li>\r\n<li>FSMO rol sahipleri<\/li>\r\n<\/ol>\r\n<h2>AD bilgilerini alma PowerShell komut dosyas\u0131n\u0131 indirin<\/h2>\r\n<p data-slot-rendered-content=\"true\">Get-ADInfo.ps1&nbsp;PowerShell beti\u011fini indirin ve&nbsp;<strong>C:\\scripts<\/strong>&nbsp;klas&ouml;r&uuml;ne yerle\u015ftirin. Komut dosyalar\u0131 klas&ouml;r&uuml;n&uuml;z yoksa bir tane olu\u015fturun.<\/p>\r\n<pre data-enlighter-language=\"python\"> # Get counts of different types of objects in Active Directory $Computers = (Get-ADComputer -Filter * | Measure-Object).Count $Workstations = (Get-ADComputer -Filter { OperatingSystem -notlike \"*Server*\" } | Measure-Object).Count $Servers = (Get-ADComputer -Filter { OperatingSystem -like \"*Server*\" } | Measure-Object).Count $Users = (Get-ADUser -Filter * | Measure-Object).Count $Groups = (Get-ADGroup -Filter * | Measure-Object).Count # Get Active Directory Forest information $ADForest = (Get-ADDomain).Forest $ADForestMode = (Get-ADForest).ForestMode $ADDomainMode = (Get-ADDomain).DomainMode # Obtain Active Directory Schema version and translate it to the corresponding Windows Server version $ADVer = Get-ADObject (Get-ADRootDSE).schemaNamingContext -Property objectVersion | Select-Object objectVersion $ADNum = $ADVer -replace \"@{objectVersion=\", \"\" -replace \"}\", \"\" switch ($ADNum) { '91' { $srv = 'Windows Server 2025' } '88' { $srv = 'Windows Server 2019\/Windows Server 2022' } '87' { $srv = 'Windows Server 2016' } '69' { $srv = 'Windows Server 2012 R2' } '56' { $srv = 'Windows Server 2012' } '47' { $srv = 'Windows Server 2008 R2' } '44' { $srv = 'Windows Server 2008' } '31' { $srv = 'Windows Server 2003 R2' } '30' { $srv = 'Windows Server 2003' } } # Display collected information Write-host \"Active Directory Info\" -ForegroundColor Yellow Write-host \"\" Write-Host \"Computers = $Computers\" -ForegroundColor Cyan Write-Host \"Workstions = $Workstations\" -ForegroundColor Cyan Write-Host \"Servers = $Servers\" -ForegroundColor Cyan Write-Host \"Users = $Users\" -ForegroundColor Cyan Write-Host \"Groups = $Groups\" -ForegroundColor Cyan Write-host \"\" Write-Host \"Active Directory Forest Name = \"$ADForest -ForegroundColor Cyan Write-Host \"Active Directory Forest Mode = \"$ADForestMode -ForegroundColor Cyan Write-Host \"Active Directory Domain Mode = \"$ADDomainMode -ForegroundColor Cyan Write-Host \"Active Directory Schema Version is $ADNum which corresponds to $srv\" -ForegroundColor Cyan Write-Host \"\" Write-Host \"FSMO Role Owners\" -ForegroundColor Cyan # Retrieve FSMO roles individually $Forest = Get-ADForest $SchemaMaster = $Forest.SchemaMaster $DomainNamingMaster = $Forest.DomainNamingMaster $Domain = Get-ADDomain $RIDMaster = $Domain.RIDMaster $PDCEmulator = $Domain.PDCEmulator $InfrastructureMaster = $Domain.InfrastructureMaster # Display FSMO role owners Write-Host \"Schema Master = $SchemaMaster\" -ForegroundColor Cyan Write-Host \"Domain Naming Master = $DomainNamingMaster\" -ForegroundColor Cyan Write-Host \"RID Master = $RIDMaster\" -ForegroundColor Cyan Write-Host \"PDC Emulator = $PDCEmulator\" -ForegroundColor Cyan Write-Host \"Infrastructure Master = $InfrastructureMaster\" -ForegroundColor Cyan<\/pre>\r\n<p>Komut dosyas\u0131n\u0131 &ccedil;al\u0131\u015ft\u0131r\u0131rken herhangi bir hatay\u0131 &ouml;nlemek i&ccedil;in dosyan\u0131n engellemesinin kald\u0131r\u0131ld\u0131\u011f\u0131ndan emin olun.&nbsp;<a href=\"..\/..\/..\/not-digitally-signed-hatasi-powershell-scriptlerini-calistirma-sorunu-ve-cozumleri\/\">PowerShell beti\u011fi &ccedil;al\u0131\u015ft\u0131r\u0131l\u0131rken dijital olarak imzalanmam\u0131\u015f hata<\/a>&nbsp;makalesinde daha fazla bilgi edinin. Di\u011fer bir se&ccedil;enek de a\u015fa\u011f\u0131daki kodu kopyalay\u0131p Not Defteri'ne yap\u0131\u015ft\u0131rmakt\u0131r.&nbsp;<strong>Get-ADInfo.ps1<\/strong>&nbsp;ad\u0131n\u0131 verin ve&nbsp;<strong>C:\\scripts<\/strong>&nbsp;klas&ouml;r&uuml;ne yerle\u015ftirin.<\/p>\r\n<pre data-enlighter-language=\"python\"> # Get counts of different types of objects in Active Directory $Computers = (Get-ADComputer -Filter * | Measure-Object).Count $Workstations = (Get-ADComputer -Filter { OperatingSystem -notlike \"*Server*\" } | Measure-Object).Count $Servers = (Get-ADComputer -Filter { OperatingSystem -like \"*Server*\" } | Measure-Object).Count $Users = (Get-ADUser -Filter * | Measure-Object).Count $Groups = (Get-ADGroup -Filter * | Measure-Object).Count # Get Active Directory Forest information $ADForest = (Get-ADDomain).Forest $ADForestMode = (Get-ADForest).ForestMode $ADDomainMode = (Get-ADDomain).DomainMode # Obtain Active Directory Schema version and translate it to the corresponding Windows Server version $ADVer = Get-ADObject (Get-ADRootDSE).schemaNamingContext -Property objectVersion | Select-Object objectVersion $ADNum = $ADVer -replace \"@{objectVersion=\", \"\" -replace \"}\", \"\" switch ($ADNum) { '91' { $srv = 'Windows Server 2025' } '88' { $srv = 'Windows Server 2019\/Windows Server 2022' } '87' { $srv = 'Windows Server 2016' } '69' { $srv = 'Windows Server 2012 R2' } '56' { $srv = 'Windows Server 2012' } '47' { $srv = 'Windows Server 2008 R2' } '44' { $srv = 'Windows Server 2008' } '31' { $srv = 'Windows Server 2003 R2' } '30' { $srv = 'Windows Server 2003' } } # Display collected information Write-host \"Active Directory Info\" -ForegroundColor Yellow Write-host \"\" Write-Host \"Computers = $Computers\" -ForegroundColor Cyan Write-Host \"Workstions = $Workstations\" -ForegroundColor Cyan Write-Host \"Servers = $Servers\" -ForegroundColor Cyan Write-Host \"Users = $Users\" -ForegroundColor Cyan Write-Host \"Groups = $Groups\" -ForegroundColor Cyan Write-host \"\" Write-Host \"Active Directory Forest Name = \"$ADForest -ForegroundColor Cyan Write-Host \"Active Directory Forest Mode = \"$ADForestMode -ForegroundColor Cyan Write-Host \"Active Directory Domain Mode = \"$ADDomainMode -ForegroundColor Cyan Write-Host \"Active Directory Schema Version is $ADNum which corresponds to $srv\" -ForegroundColor Cyan Write-Host \"\" Write-Host \"FSMO Role Owners\" -ForegroundColor Cyan # Retrieve FSMO roles individually $Forest = Get-ADForest $SchemaMaster = $Forest.SchemaMaster $DomainNamingMaster = $Forest.DomainNamingMaster $Domain = Get-ADDomain $RIDMaster = $Domain.RIDMaster $PDCEmulator = $Domain.PDCEmulator $InfrastructureMaster = $Domain.InfrastructureMaster # Display FSMO role owners Write-Host \"Schema Master = $SchemaMaster\" -ForegroundColor Cyan Write-Host \"Domain Naming Master = $DomainNamingMaster\" -ForegroundColor Cyan Write-Host \"RID Master = $RIDMaster\" -ForegroundColor Cyan Write-Host \"PDC Emulator = $PDCEmulator\" -ForegroundColor Cyan Write-Host \"Infrastructure Master = $InfrastructureMaster\" -ForegroundColor Cyan<\/pre>\r\n<h2>AD bilgilerini al PowerShell beti\u011fini &ccedil;al\u0131\u015ft\u0131r\u0131n<\/h2>\r\n<p>PowerShell'i y&ouml;netici olarak &ccedil;al\u0131\u015ft\u0131r\u0131n. Ard\u0131ndan, Active Directory bilgilerini toplamak i&ccedil;in PowerShell beti\u011fini &ccedil;al\u0131\u015ft\u0131r\u0131n. C:\\scripts\\.\\Get-ADInfo.ps1 Organizasyonumuzda &ccedil;\u0131kt\u0131 bu \u015fekilde g&ouml;r&uuml;n&uuml;yor.<\/p>\r\n<div data-slot-rendered-content=\"true\">Active Directory Info Computers = 5 Workstions = 1 Servers = 4 Users = 74 Groups = 88 Active Directory Forest Name = onder.local Active Directory Forest Mode = Windows2016Forest Active Directory Domain Mode = Windows2016Domain Active Directory Schema Version is 88 which corresponds to Windows Server 2019\/Windows Server 2022 FSMO Role Owners Schema Master = DC01-2019.onder.local Domain Naming Master = DC01-2019.onder.local RID Master = DC01-2019.onder.local PDC Emulator = DC01-2019.onder.local Infrastructure Master = DC01-2019.onder.local<\/div>\r\n<p>PowerShell beti\u011fi ile Active Directory bilgilerini nas\u0131l alaca\u011f\u0131n\u0131z\u0131 &ouml;\u011frendiniz. Active Directory'de &ccedil;ok fazla bilgi vard\u0131r ve bilgileri PowerShell veya GUI'de tek tek aramak &ccedil;ok zaman al\u0131r. Bir PS komut dosyas\u0131 &ccedil;al\u0131\u015ft\u0131rmak ve hepsini tek bir &ccedil;\u0131kt\u0131da bulundurmak zaman kazand\u0131r\u0131r ve bakmas\u0131 daha kolayd\u0131r.<\/p>","excerpt":"Tek bir \u00e7\u0131kt\u0131da Active Directory bilgisi nas\u0131l al\u0131n\u0131r? \u00d6rne\u011fin, Active Directory'yi yeni bir sunucuya ta\u015f\u0131mak istiyorsunuz ve AD...","created_at":"2025-06-22 22:18:06","updated_at":"2026-09-07 18:13:54","category_id":6,"view_count":874,"reading_time":5,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-06-22 22:18:06","featured_image":"resimyok.jpg","slug":"powershell-betigi-ile-active-directory-bilgilerini-alma","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":40,"title":"Not Digitally Signed\" Hatas\u0131: PowerShell Script'lerini \u00c7al\u0131\u015ft\u0131rma Sorunu ve \u00c7\u00f6z\u00fcmleri","content":"<p>PowerShell kullan\u0131c\u0131lar\u0131n\u0131n s\u0131k&ccedil;a kar\u015f\u0131la\u015ft\u0131\u011f\u0131 \"not digitally signed\" (dijital olarak imzalanmam\u0131\u015f) hatas\u0131, script'lerin &ccedil;al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 engelleyebilen can s\u0131k\u0131c\u0131 bir sorundur.<\/p>\r\n<p>Bu blog yaz\u0131s\u0131nda, bu hatan\u0131n nedenlerini ve &ccedil;e\u015fitli &ccedil;&ouml;z&uuml;m y&ouml;ntemlerini detayl\u0131ca ele alaca\u011f\u0131z.<\/p>\r\n<h2>Hatan\u0131n Nedeni<\/h2>\r\n<p>PowerShell'in g&uuml;venlik politikalar\u0131, sisteminizi potansiyel k&ouml;t&uuml; ama&ccedil;l\u0131 script'lere kar\u015f\u0131 korumak i&ccedil;in tasarlanm\u0131\u015ft\u0131r.<\/p>\r\n<p>Varsay\u0131lan olarak, PowerShell yaln\u0131zca g&uuml;venilir kaynaklardan gelen ve dijital olarak imzalanm\u0131\u015f script'leri &ccedil;al\u0131\u015ft\u0131r\u0131r. Bu nedenle, kendi yazd\u0131\u011f\u0131n\u0131z veya g&uuml;venilir kaynaklardan indirdi\u011finiz script'ler bile bu hatay\u0131 verebilir.<\/p>\r\n<h2>&Ccedil;&ouml;z&uuml;m Y&ouml;ntemleri<\/h2>\r\n<h3>1. Execution Policy (&Ccedil;al\u0131\u015ft\u0131rma Politikas\u0131) De\u011fi\u015ftirme<\/h3>\r\n<p>En yayg\u0131n &ccedil;&ouml;z&uuml;m, PowerShell'in execution policy ayar\u0131n\u0131 ge&ccedil;ici veya kal\u0131c\u0131 olarak de\u011fi\u015ftirmektir:<\/p>\r\n<p><strong>Ge&ccedil;ici &ccedil;&ouml;z&uuml;m (yaln\u0131zca mevcut oturum i&ccedil;in):<\/strong><\/p>\r\n<pre class=\"language-powershell\"><code>Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass\r\n<\/code><\/pre>\r\n<p><strong>Kal\u0131c\u0131 &ccedil;&ouml;z&uuml;m (dikkatli olun):<\/strong><\/p>\r\n<pre class=\"language-powershell\"><code>Set-ExecutionPolicy -ExecutionPolicy RemoteSigned\r\n<\/code><\/pre>\r\n<p><strong>Uyar\u0131:<\/strong> Unrestricted politikas\u0131 g&uuml;venlik riski olu\u015fturabilir, sadece g&uuml;vendi\u011finiz script'ler i&ccedil;in kullan\u0131n.<\/p>\r\n<h3>2. Script'i Dijital Olarak \u0130mzalama<\/h3>\r\n<p>Daha g&uuml;venli bir yakla\u015f\u0131m, script'inizi dijital sertifika ile imzalamakt\u0131r:<\/p>\r\n<ol>\r\n<li>Code signing sertifikas\u0131 edinin<\/li>\r\n<li>Script'i imzalay\u0131n:<\/li>\r\n<\/ol>\r\n<pre class=\"language-powershell\"><code>Set-AuthenticodeSignature -FilePath C:\\path\\to\\script.ps1 -Certificate $cert\r\n<\/code><\/pre>\r\n<h3>3. Script'i Komut Sat\u0131r\u0131ndan &Ccedil;al\u0131\u015ft\u0131rma<\/h3>\r\n<p>Alternatif olarak, script'i a\u015fa\u011f\u0131daki komutla &ccedil;al\u0131\u015ft\u0131rabilirsiniz:<\/p>\r\n<pre class=\"language-powershell\"><code>powershell.exe -ExecutionPolicy Bypass -File \"C:\\path\\to\\script.ps1\"\r\n<\/code><\/pre>\r\n<h3>4. Script \u0130&ccedil;eri\u011fini Do\u011frudan &Ccedil;al\u0131\u015ft\u0131rma<\/h3>\r\n<p>Script i&ccedil;eri\u011fini kopyalay\u0131p PowerShell'de do\u011frudan &ccedil;al\u0131\u015ft\u0131rabilirsiniz:<\/p>\r\n<ol>\r\n<li>Script i&ccedil;eri\u011fini kopyala<\/li>\r\n<li>PowerShell'de yap\u0131\u015ft\u0131r ve Enter'a bas<\/li>\r\n<\/ol>\r\n<h2>G&uuml;venlik Uyar\u0131lar\u0131<\/h2>\r\n<p>Execution policy'yi de\u011fi\u015ftirmeden &ouml;nce a\u015fa\u011f\u0131daki noktalar\u0131 g&ouml;z &ouml;n&uuml;nde bulundurun:<\/p>\r\n<ul>\r\n<li>Yaln\u0131zca g&uuml;vendi\u011finiz script'ler i&ccedil;in politikay\u0131 gev\u015fetin<\/li>\r\n<li>M&uuml;mk&uuml;nse script'leri imzalamay\u0131 tercih edin<\/li>\r\n<li>\u0130\u015f bitince politikay\u0131 eski haline getirin:<\/li>\r\n<\/ul>\r\n<pre class=\"language-powershell\"><code>Set-ExecutionPolicy -ExecutionPolicy Restricted\r\n<\/code><\/pre>\r\n<h2>Sonu&ccedil;<\/h2>\r\n<p>\"Not digitally signed\" hatas\u0131 PowerShell'in g&uuml;venlik &ouml;zelliklerinin bir par&ccedil;as\u0131d\u0131r.<\/p>\r\n<p>Ge&ccedil;ici &ccedil;&ouml;z&uuml;mler h\u0131zl\u0131 bir &ccedil;\u0131k\u0131\u015f yolu sunsa da, uzun vadede script'lerinizi dijital olarak imzalamak en g&uuml;venli yakla\u015f\u0131m olacakt\u0131r.<\/p>\r\n<p>Hangi y&ouml;ntemi se&ccedil;erseniz se&ccedil;in, g&uuml;venlik risklerini daima g&ouml;z &ouml;n&uuml;nde bulundurmay\u0131 unutmay\u0131n.<\/p>\r\n<p>PowerShell script'lerinizi sorunsuz &ccedil;al\u0131\u015ft\u0131rabilmeniz dile\u011fiyle!<\/p>","excerpt":"PowerShell kullan\u0131c\u0131lar\u0131n\u0131n s\u0131k\u00e7a kar\u015f\u0131la\u015ft\u0131\u011f\u0131 \"not digitally signed\" (dijital olarak imzalanmam\u0131\u015f) hatas\u0131, script'lerin...","created_at":"2025-06-22 22:15:27","updated_at":"2026-09-23 13:44:05","category_id":6,"view_count":961,"reading_time":2,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-06-22 22:15:27","featured_image":"resimyok.jpg","slug":"not-digitally-signed-hatasi-powershell-scriptlerini-calistirma-sorunu-ve-cozumleri","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":44,"title":"PowerShell ile Active Directory say\u0131s\u0131n\u0131 alma","content":"Active Directory nesneleri nas\u0131l say\u0131l\u0131r ve neden AD nesneleri say\u0131m\u0131na ihtiyac\u0131m\u0131z var? \u00d6rne\u011fimizde,\u00a0<a href=\"https:\/\/ondernet.net\/microsoft-entra-connect-nasil-yukseltilir\/\">Microsoft Entra Connect'i y\u00fcklemeden ve yap\u0131land\u0131rmadan<\/a>\u00a0\u00f6nce toplam say\u0131ya sahip olmak istiyoruz. Bunun nedeni, minimum sunucu gereksinimleri i\u00e7in toplam AD nesnelerini bilmemiz gerekti\u011fidir. Bu yaz\u0131da, PowerShell ile AD nesnelerinin nas\u0131l say\u0131laca\u011f\u0131na bakaca\u011f\u0131z. <h2>\u0130\u00e7indekiler<\/h2> <ul> <li>AD kullan\u0131c\u0131lar\u0131n\u0131 sayma<\/li> <li>AD gruplar\u0131n\u0131 sayma<\/li> <li>AD bilgisayarlar\u0131n\u0131 sayma<\/li> <li>AD toplam say\u0131s\u0131n\u0131 alma<\/li> <li>PowerShell beti\u011fi ile Active Directory bilgilerini alma<\/li> <li>Son<\/li> <\/ul> <h2  >AD kullan\u0131c\u0131lar\u0131n\u0131 sayma<\/h2> PowerShell ile AD kullan\u0131c\u0131lar\u0131n\u0131 say\u0131n.\u00a0<a href=\"https:\/\/learn.microsoft.com\/en-us\/powershell\/module\/activedirectory\/get-aduser\" target=\"_blank\" rel=\"noreferrer noopener\">Get-AdUser<\/a>\u00a0cmdlet'ini kullan\u0131n. <div > <pre  tabindex=\"0\"><code ><span >(<\/span>Get<span >-<\/span>AdUser <span >-<\/span><span >Filter<\/span> <span >*<\/span> <span >|<\/span> <span >Measure-Object<\/span><span >)<\/span><span >.<\/span>Count <\/code><\/pre> <h2  >AD gruplar\u0131n\u0131 sayma<\/h2> <p >PowerShell ile AD gruplar\u0131n\u0131 say\u0131n.\u00a0<a href=\"https:\/\/learn.microsoft.com\/en-us\/powershell\/module\/activedirectory\/get-adgroup\" target=\"_blank\" rel=\"noreferrer noopener\">Get-ADGroup<\/a>\u00a0cmdlet'ini kullan\u0131n.<\/p> (Get-ADGroup -Filter * | Measure-Object).Count <h2  >AD bilgisayarlar\u0131n\u0131 sayma<\/h2> <p data-slot-rendered-content=\"true\">PowerShell ile AD bilgisayarlar\u0131n\u0131 say\u0131n.\u00a0<a href=\"https:\/\/learn.microsoft.com\/en-us\/powershell\/module\/activedirectory\/get-adcomputer\" target=\"_blank\" rel=\"noreferrer noopener\">Get-ADComputer<\/a>\u00a0cmdlet'ini kullan\u0131n.<\/p> <div  data-slot> <div  data-slot> <div  data-slot> <div  data-slot> <div   data-wrapper=\"content_btf\" data-nosnippet=\"\"> <div   data-google-query->(Get-ADComputer -Filter * | Measure-Object).Count<\/div> <\/div> <div data-google-query-> <h2  >AD toplam say\u0131s\u0131n\u0131 alma<\/h2> PowerShell ile kullan\u0131c\u0131, grup ve bilgisayar say\u0131lar\u0131n\u0131 birlikte ekleyelim. A\u015fa\u011f\u0131daki beti\u011fi kullan\u0131n, kopyalay\u0131p PowerShell'e yap\u0131\u015ft\u0131r\u0131n. Ayr\u0131ca\u00a0Get-ADCount.ps1\u00a0beti\u011fini indirebilir ve PowerShell'den \u00e7al\u0131\u015ft\u0131rabilirsiniz. <pre  data-enlighter-language=\"python\">$ADUser = (Get-AdUser -Filter * | Measure-Object).Count $ADGroup = (Get-ADGroup -Filter * | Measure-Object).Count $ADComputer = (Get-ADComputer -Filter * | Measure-Object).Count $ADObjects = $ADUser + $ADGroup + $ADComputer $ADObjects<\/pre> Komut dosyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra bu \u015fekilde g\u00f6r\u00fcn\u00fcr. Toplam AD nesnesi say\u0131s\u0131\u00a0<strong>167'dir<\/strong>. <div > <pre  data-enlighter-language=\"python\">PS C:\\&gt; $ADUser = (Get-AdUser -Filter *).Count $ADGroup = (Get-ADGroup -Filter *).Count $ADComputer = (Get-ADComputer -Filter *).Count $ADObjects = $ADUser + $ADGroup + $ADComputer $ADObjects 167<\/pre> <h2  >PowerShell beti\u011fi ile Active Directory bilgilerini alma<\/h2> Active Directory say\u0131s\u0131n\u0131 alman\u0131n m\u00fckemmel bir yolu,\u00a0Get-ADInfo.ps1\u00a0PowerShell beti\u011fini \u00e7al\u0131\u015ft\u0131rmakt\u0131r. Bu, AD\u00a0<a href=\"https:\/\/ondernet.net\/powershell-betigi-ile-active-directory-bilgilerini-alma\/\">nesnelerinin say\u0131s\u0131n\u0131 ve Active Directory'niz hakk\u0131nda daha fazla bilgiyi<\/a>\u00a0g\u00f6sterecektir. <pre  data-enlighter-language=\"python\"># Get counts of different types of objects in Active Directory $Computers = (Get-ADComputer -Filter * | Measure-Object).Count $Workstations = (Get-ADComputer -Filter { OperatingSystem -notlike \"*Server*\" } | Measure-Object).Count $Servers = (Get-ADComputer -Filter { OperatingSystem -like \"*Server*\" } | Measure-Object).Count $Users = (Get-ADUser -Filter * | Measure-Object).Count $Groups = (Get-ADGroup -Filter * | Measure-Object).Count # Get Active Directory Forest information $ADForest = (Get-ADDomain).Forest $ADForestMode = (Get-ADForest).ForestMode $ADDomainMode = (Get-ADDomain).DomainMode # Obtain Active Directory Schema version and translate it to the corresponding Windows Server version $ADVer = Get-ADObject (Get-ADRootDSE).schemaNamingContext -Property objectVersion | Select-Object objectVersion $ADNum = $ADVer -replace \"@{objectVersion=\", \"\" -replace \"}\", \"\" switch ($ADNum) { '91' { $srv = 'Windows Server 2025' } '88' { $srv = 'Windows Server 2019\/Windows Server 2022' } '87' { $srv = 'Windows Server 2016' } '69' { $srv = 'Windows Server 2012 R2' } '56' { $srv = 'Windows Server 2012' } '47' { $srv = 'Windows Server 2008 R2' } '44' { $srv = 'Windows Server 2008' } '31' { $srv = 'Windows Server 2003 R2' } '30' { $srv = 'Windows Server 2003' } } # Display collected information Write-host \"Active Directory Info\" -ForegroundColor Yellow Write-host \"\" Write-Host \"Computers = $Computers\" -ForegroundColor Cyan Write-Host \"Workstions = $Workstations\" -ForegroundColor Cyan Write-Host \"Servers = $Servers\" -ForegroundColor Cyan Write-Host \"Users = $Users\" -ForegroundColor Cyan Write-Host \"Groups = $Groups\" -ForegroundColor Cyan Write-host \"\" Write-Host \"Active Directory Forest Name = \"$ADForest -ForegroundColor Cyan Write-Host \"Active Directory Forest Mode = \"$ADForestMode -ForegroundColor Cyan Write-Host \"Active Directory Domain Mode = \"$ADDomainMode -ForegroundColor Cyan Write-Host \"Active Directory Schema Version is $ADNum which corresponds to $srv\" -ForegroundColor Cyan Write-Host \"\" Write-Host \"FSMO Role Owners\" -ForegroundColor Cyan # Retrieve FSMO roles individually $Forest = Get-ADForest $SchemaMaster = $Forest.SchemaMaster $DomainNamingMaster = $Forest.DomainNamingMaster $Domain = Get-ADDomain $RIDMaster = $Domain.RIDMaster $PDCEmulator = $Domain.PDCEmulator $InfrastructureMaster = $Domain.InfrastructureMaster # Display FSMO role owners Write-Host \"Schema Master = $SchemaMaster\" -ForegroundColor Cyan Write-Host \"Domain Naming Master = $DomainNamingMaster\" -ForegroundColor Cyan Write-Host \"RID Master = $RIDMaster\" -ForegroundColor Cyan Write-Host \"PDC Emulator = $PDCEmulator\" -ForegroundColor Cyan Write-Host \"Infrastructure Master = $InfrastructureMaster\" -ForegroundColor Cyan<\/pre> &nbsp; <\/div> <\/div> <\/div> <\/div> <\/div> <\/div> <\/div>","excerpt":"Active Directory nesneleri nas\u0131l say\u0131l\u0131r ve neden AD nesneleri say\u0131m\u0131na ihtiyac\u0131m\u0131z var? \u00d6rne\u011fimizde,\u00a0Microsoft Entra Connect'i y\u00fcklemeden...","created_at":"2025-06-22 21:48:46","updated_at":"2026-09-07 19:17:41","category_id":6,"view_count":721,"reading_time":3,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-06-22 21:48:46","featured_image":"resimyok.jpg","slug":"powershell-ile-active-directory-sayisini-alma","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":87,"title":"Sunucu Hizmet \u0130zleme, PowerShell ile G\u00fcvenli ve Etkili Betik Olu\u015fturma","content":"Havayolu \u015firketleri gibi kritik sistemlerde \u00e7al\u0131\u015fan ortamlarda, sunucular \u00fczerindeki hizmetlerin s\u00fcrekli olarak izlenmesi hayati \u00f6neme sahiptir. Herhangi bir hizmetin durmas\u0131 veya ba\u011flant\u0131 hatas\u0131, u\u00e7u\u015f planlamas\u0131, rezervasyon sistemi veya g\u00fcvenlik s\u00fcre\u00e7lerini do\u011frudan etkileyebilir. Bu yaz\u0131da, Get-Service cmdlet'i ve try-catch hata i\u015fleme yap\u0131s\u0131 kullan\u0131larak, havayolu \u015firketinin birden fazla Windows sunucusunda belirli bir hizmetin durumunu g\u00fcvenli bir \u015fekilde kontrol eden PowerShell beti\u011fi nas\u0131l yaz\u0131l\u0131r? <h3>Neden Get-Service ve try-catch?<\/h3> Bu senaryo i\u00e7in \u00f6nerilen yakla\u015f\u0131m\u0131n temel gerek\u00e7eleri \u015funlard\u0131r: <h5>A. Get-Service Cmdlet'i: Do\u011fal ve Basit \u00c7\u00f6z\u00fcm<\/h5> <ul> <li>Get-Service, Windows hizmetlerini sorgulamak i\u00e7in do\u011frudan tasarlanm\u0131\u015ft\u0131r.<\/li> <li>Komut sat\u0131r\u0131nda Get-Service -Name \"Spooler\" gibi basit bir komutla hizmetin durumu (Running, Stopped, vb.) al\u0131nabilir.<\/li> <li>Uzak sunucularda \u00e7al\u0131\u015ft\u0131r\u0131labilmesi i\u00e7in Invoke-Command ile birlikte kullan\u0131labilir.<\/li> <\/ul> <h5> B. try-catch: Ba\u011flant\u0131 Hatalar\u0131n\u0131 Yakalama ve Y\u00f6netme<\/h5> Uzak sunuculara ba\u011flant\u0131 s\u0131ras\u0131nda \u015fu hatalar olu\u015fabilir: <ul> <li>Sunucu kapal\u0131 veya eri\u015filemez.<\/li> <li>Hizmet ad\u0131 yanl\u0131\u015f veya mevcut de\u011fil.<\/li> <li>Yetkilendirme sorunlar\u0131 (\u00f6rne\u011fin, eri\u015fim reddedildi).<\/li> <\/ul> try-catch yap\u0131s\u0131, bu t\u00fcr istisnalar\u0131 yakalayarak beti\u011fin \u00e7\u00f6kmesini engeller ve \u00f6zel hata mesajlar\u0131 g\u00f6sterir. \u00d6rne\u011fin, bir sunucuya eri\u015filemedi\u011finde kullan\u0131c\u0131ya \"Sunucuya ula\u015f\u0131lam\u0131yor\" gibi bilgilendirici bir mesaj verilebilir. <h3><strong data-spm-anchor->Uzak Sunucularda Hizmet Durumu Kontrol\u00fc<\/strong><\/h3> <pre  data-enlighter-language=\"powershell\"># \u0130zlenecek sunucular ve hizmet ad\u0131 $servers = \"Server01\", \"Server02\", \"Server03\" $serviceName = \"FlightScheduler\" foreach ($server in $servers) { try { # Uzak sunucuda hizmet durumunu sorgula $service = Invoke-Command -ComputerName $server -ScriptBlock { Get-Service -Name $using:serviceName -ErrorAction Stop } -ErrorAction Stop # Hizmet durumunu kontrol et if ($service.Status -eq \"Running\") { Write-Host \"$server \u00fczerinde $serviceName hizmeti aktif.\" -ForegroundColor Green } else { Write-Host \"$server \u00fczerinde $serviceName hizmeti durmu\u015f!\" -ForegroundColor Red # Alternatif i\u015flem (\u00f6rne\u011fin, uyar\u0131 e-postas\u0131 g\u00f6nderme) Send-MailMessage -To \"admin@airline.com\" -From \"monitor@airline.com\" ` -Subject \"Uyar\u0131: Hizmet Durduruldu - $server\" ` -Body \"$serviceName hizmeti $server \u00fczerinde \u00e7al\u0131\u015fm\u0131yor!\" ` -SmtpServer \"smtp.airline.com\" } } catch { # Ba\u011flant\u0131 veya hata durumlar\u0131n\u0131 yakala Write-Host \"$server \u00fczerinde hizmet kontrol\u00fc ba\u015far\u0131s\u0131z: $($_.Exception.Message)\" -ForegroundColor Yellow # Kritik hatalar\u0131 logla Write-EventLog -LogName \"Application\" -Source \"ServiceMonitor\" ` -EntryType Error -EventID 5001 ` -Message \"Sunucu: $server | Hata: $($_.Exception.Message)\" } }<\/pre> <h4><strong>A. <code >Invoke-Command<\/code> ile Uzak Sunucu Eri\u015fimi<\/strong><\/h4> <ul> <li><code >Invoke-Command<\/code> cmdlet'i, uzak sunucularda komut \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 sa\u011flar.<\/li> <li><code >-ComputerName<\/code> parametresiyle hedef sunucu belirlenir.<\/li> <li><code >using:<\/code> de\u011fi\u015fkeni, yerel de\u011fi\u015fkenleri uzak komut blo\u011funa aktar\u0131r.<\/li> <\/ul> <h4><strong>B. <code >-ErrorAction Stop<\/code> ile \u0130stisna Tetikleme<\/strong><\/h4> <ul> <li><code >Get-Service<\/code>, hizmet bulunamad\u0131\u011f\u0131nda varsay\u0131lan olarak hata vermez (non-terminating error).<\/li> <li><code >-ErrorAction Stop<\/code> ile bu t\u00fcr hatalar istisna olarak tetiklenir ve <code >catch<\/code> blo\u011fu taraf\u0131ndan yakalanabilir.<\/li> <\/ul> <h4><strong>C. <code >Send-MailMessage<\/code> ile Uyar\u0131 Bildirimi<\/strong><\/h4> <ul> <li>Hizmet durdu\u011funda e-posta ile bildirim g\u00f6nderilir.<\/li> <li>Bu, IT ekibine h\u0131zl\u0131 m\u00fcdahale imkan\u0131 sunar.<\/li> <\/ul> <h4><strong>D. <code >Write-EventLog<\/code> ile Hata Kayd\u0131<\/strong><\/h4> <ul> <li>Kritik hatalar Windows Olay G\u00fcnl\u00fc\u011f\u00fcne yaz\u0131l\u0131r.<\/li> <li data-spm-anchor->Bu loglar, ileride analiz i\u00e7in saklanabilir.<\/li> <\/ul> Gereksinimler: <ul> <li data-spm-anchor-><strong>A. G\u00fcvenli Ba\u011flant\u0131lar:<\/strong> <ul data-spm-anchor-> <li><code >Invoke-Command<\/code> i\u00e7in PowerShell Remoting (WinRM) yap\u0131land\u0131rmas\u0131 yap\u0131lmal\u0131d\u0131r.<\/li> <li>G\u00fcvenli protokoller (\u00f6rne\u011fin HTTPS) kullan\u0131n.<\/li> <\/ul> <div ><\/div><\/li> <li><strong>B. S\u0131k\u0131\u015f\u0131k A\u011flar\u0131 Dikkate Al\u0131n:<\/strong> <ul> <li><code >-ThrottleLimit<\/code> parametresiyle ayn\u0131 anda ka\u00e7 sunucuya ba\u011flan\u0131laca\u011f\u0131n\u0131 s\u0131n\u0131rlay\u0131n.<\/li> <\/ul> <div ><\/div><\/li> <li><strong>C. Hata Mesajlar\u0131n\u0131 \u00d6zelle\u015ftirin:<\/strong> <ul> <li>Kullan\u0131c\u0131ya anlaml\u0131 bilgiler verin (\u00f6rne\u011fin, <code >\"Hizmet bulunamad\u0131\"<\/code> yerine <code >\"FlightScheduler hizmeti Server01'de yok\"<\/code>).<\/li> <\/ul> <div ><\/div><\/li> <li><strong>D. D\u00fczenli Test Edin:<\/strong> <ul> <li>Sunucular kapal\u0131 oldu\u011funda beti\u011fin nas\u0131l davranaca\u011f\u0131n\u0131 test edin. <h3 data-spm-anchor-><\/h3> <div > <div > <table > <thead > <tr > <th  scope=\"col\"> <div ><strong>Hata<\/strong><\/div><\/th> <th  scope=\"col\"> <div ><strong>A\u00e7\u0131klama<\/strong><\/div><\/th> <th  scope=\"col\"> <div ><strong>\u00c7\u00f6z\u00fcm<\/strong><\/div><\/th> <\/tr> <\/thead> <tbody> <tr > <td > <div ><code >Access is denied<\/code><\/div><\/td> <td > <div >Yetki eksikli\u011fi<\/div><\/td> <td > <div >Beti\u011fi y\u00f6netici haklar\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131n veya<code >Enter-PSSession<\/code>ile kimlik do\u011frulamas\u0131 yap\u0131n.<\/div><\/td> <\/tr> <tr > <td > <div ><code >The RPC server is unavailable<\/code><\/div><\/td> <td > <div >Sunucuya eri\u015filemiyor<\/div><\/td> <td > <div >A\u011f ba\u011flant\u0131s\u0131n\u0131 kontrol edin veya<code >-ThrottleLimit<\/code>azalt\u0131n.<\/div><\/td> <\/tr> <tr > <td > <div ><code >Service does not exist<\/code><\/div><\/td> <td > <div >Hizmet ad\u0131 yanl\u0131\u015f<\/div><\/td> <td > <div ><code >Get-Service<\/code>komutunu do\u011frulay\u0131n.<\/div><\/td> <\/tr> <\/tbody> <\/table> Bu betik, havayolu \u015firketinin sunucular\u0131ndaki kritik hizmetlerin izlenmesi i\u00e7in g\u00fcvenilir bir \u00e7\u00f6z\u00fcm sunar. Get-Service ve try-catch kombinasyonu, hem basit hem de g\u00fc\u00e7l\u00fcd\u00fcr. \u00d6zellikle ba\u011flant\u0131 hatalar\u0131n\u0131 y\u00f6netebilme ve \u00f6zel uyar\u0131lar tan\u0131mlayabilme \u00f6zellikleri, havayolu sekt\u00f6r\u00fcnde kesintisiz hizmet sunulmas\u0131n\u0131 sa\u011flar.\u00a0Beti\u011fi Zamanlanm\u0131\u015f G\u00f6rev (Task Scheduler) ile otomatikle\u015ftirerek her X dakikada bir \u00e7al\u0131\u015ft\u0131rabilirsiniz. <\/div> <\/div><\/li> <\/ul> <\/li> <\/ul>","excerpt":"Havayolu \u015firketleri gibi kritik sistemlerde \u00e7al\u0131\u015fan ortamlarda, sunucular \u00fczerindeki hizmetlerin s\u00fcrekli olarak izlenmesi hayati \u00f6neme...","created_at":"2025-05-01 11:56:50","updated_at":"2026-09-23 11:37:23","category_id":6,"view_count":636,"reading_time":4,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-05-01 11:56:50","featured_image":"resimyok.jpg","slug":"sunucu-hizmet-izleme-powershell-ile-guvenli-ve-etkili-betik-olusturma","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":115,"title":"Active Directory'de \u015fifre s\u00fcreleri dolmadan kullan\u0131c\u0131lar\u0131 otomatik olarak uyaran PowerShell scripti","content":"Active Directory'de \u015fifre s\u00fcreleri dolmadan kullan\u0131c\u0131lar\u0131 otomatik olarak uyaran bir PowerShell script Bu script \u015funlar\u0131 yapar: <ol> <li>Active Directory'den \u015fifresi dolmak \u00fczere olan kullan\u0131c\u0131lar\u0131 tespit eder<\/li> <li>\u015eifresi belirli g\u00fcn aral\u0131klar\u0131nda (14, 7, 3, 1 g\u00fcn) dolacak kullan\u0131c\u0131lara \u00f6zelle\u015ftirilmi\u015f e-posta g\u00f6nderir<\/li> <li>T\u00fcm i\u015flemleri g\u00fcnl\u00fck dosyas\u0131na (log) kaydeder<\/li> <li>HTML format\u0131nda profesyonel bir e-posta \u015fablonu kullan\u0131r<\/li> <\/ol> Kullanmadan \u00f6nce a\u015fa\u011f\u0131daki de\u011fi\u015fkenleri kendi ortam\u0131n\u0131za g\u00f6re ayarlaman\u0131z gerekir: <ul> <li><code>$smtpServer<\/code> - SMTP sunucu adresiniz<\/li> <li><code>$smtpPort<\/code> - SMTP port numaras\u0131<\/li> <li><code>$smtpFrom<\/code> - G\u00f6nderen e-posta adresi<\/li> <li><code>$domain<\/code> - \u015eirket domain ad\u0131n\u0131z<\/li> <li>\u015eifre politikas\u0131 bilgilerini g\u00fcncelleyin (HTML i\u00e7indeki listeyi)<\/li> <\/ul> Bu script'i Windows G\u00f6rev Zamanlay\u0131c\u0131'da g\u00fcnl\u00fck olarak \u00e7al\u0131\u015facak \u015fekilde a\u015fa\u011f\u0131daki \u015fekilde ayarlayabilirsiniz: <ol> <li>PowerShell script'i <code>.ps1<\/code> uzant\u0131s\u0131yla kaydedin<\/li> <li>G\u00f6rev Zamanlay\u0131c\u0131'y\u0131 a\u00e7\u0131n ve yeni bir g\u00f6rev olu\u015fturun<\/li> <li>Program\/script olarak <code>powershell.exe<\/code> yaz\u0131n<\/li> <li>Arg\u00fcmanlar b\u00f6l\u00fcm\u00fcne <code>-ExecutionPolicy Bypass -File \"C:\\Scripts\\PasswordNotification\\PasswordExpiryNotification.ps1\"<\/code> yaz\u0131n<\/li> <\/ol> <pre  data-enlighter-language=\"powershell\"># Active Directory \u015eifre Uyar\u0131 Sistemi # Bu script, \u015fifresi yak\u0131n zamanda dolacak kullan\u0131c\u0131lara otomatik e-posta g\u00f6nderir # Gerekli mod\u00fcl\u00fc i\u00e7e aktarma Import-Module ActiveDirectory # G\u00fcnl\u00fck dosyas\u0131 olu\u015fturma $LogFile = \"C:\\Scripts\\PasswordNotification\\PasswordExpiryLog_$(Get-Date -Format 'yyyyMMdd').log\" $ScriptDir = \"C:\\Scripts\\PasswordNotification\" # Script klas\u00f6r\u00fc kontrol\u00fc if (!(Test-Path $ScriptDir)) { New-Item -ItemType Directory -Path $ScriptDir -Force } # Loglama fonksiyonu function Write-Log { param( $Message ) $TimeStamp = Get-Date -Format \"yyyy-MM-dd HH:mm:ss\" \"$TimeStamp - $Message\" | Out-File -FilePath $LogFile -Append } Write-Log \"Script ba\u015flat\u0131ld\u0131.\" # E-posta ayarlar\u0131 - Kendi SMTP sunucunuza g\u00f6re d\u00fczenleyin $smtpServer = \"smtp.sirketiniz.com\" $smtpPort = 25 $smtpFrom = \"it@sirketiniz.com\" $emailSubject = \"\u00d6nemli Bildirim: \u015eifreniz yak\u0131nda sona erecek\" $emailSignature = @\" &lt;p&gt;Sayg\u0131lar\u0131m\u0131zla,&lt;br&gt; IT Departman\u0131&lt;br&gt; &lt;strong&gt;\u015eirketiniz A.\u015e.&lt;\/strong&gt;&lt;br&gt; Tel: +90 212 555 55 55&lt;\/p&gt; \"@ # Domain bilgileri $domain = \"sirketiniz.com\" # \u015eifre politikas\u0131 bilgilerini al $passwordPolicy = Get-ADDefaultDomainPasswordPolicy $maxPasswordAge = $passwordPolicy.MaxPasswordAge.Days # Uyar\u0131 yap\u0131lacak g\u00fcn aral\u0131klar\u0131 $warningDays = @(14, 7, 3, 1) # Bug\u00fcn\u00fcn tarihini al $today = Get-Date Write-Log \"\u015eifre politikas\u0131 bilgisi al\u0131nd\u0131. Maksimum \u015fifre ya\u015f\u0131: $maxPasswordAge g\u00fcn.\" # T\u00fcm etkin kullan\u0131c\u0131lar\u0131 al (devre d\u0131\u015f\u0131 kullan\u0131c\u0131lar hari\u00e7) try { $users = Get-ADUser -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false} -Properties Name, EmailAddress, PasswordLastSet, PasswordNeverExpires Write-Log \"Active Directory'den $($users.Count) aktif kullan\u0131c\u0131 al\u0131nd\u0131.\" } catch { Write-Log \"Hata: Active Directory'den kullan\u0131c\u0131lar al\u0131namad\u0131: $_\" exit } # Her bir kullan\u0131c\u0131 i\u00e7in kontrol et foreach ($user in $users) { # Kullan\u0131c\u0131n\u0131n e-posta adresi yoksa atla if (::IsNullOrEmpty($user.EmailAddress)) { Write-Log \"Kullan\u0131c\u0131 $($user.Name) i\u00e7in e-posta adresi bulunamad\u0131, atlan\u0131yor.\" continue } # \u015eifre son de\u011fi\u015ftirilme tarihi yoksa atla if (-not $user.PasswordLastSet) { Write-Log \"Kullan\u0131c\u0131 $($user.Name) i\u00e7in \u015fifre de\u011fi\u015fiklik tarihi bulunamad\u0131, atlan\u0131yor.\" continue } # \u015eifre son de\u011fi\u015fikli\u011finden bu yana ge\u00e7en s\u00fcreyi hesapla $passwordSetDate = $user.PasswordLastSet $expireDate = $passwordSetDate.AddDays($maxPasswordAge) $daysToExpire = (New-TimeSpan -Start $today -End $expireDate).Days # Belirlenen uyar\u0131 g\u00fcnlerinden birinde ise e-posta g\u00f6nder if ($warningDays -contains $daysToExpire) { Write-Log \"Kullan\u0131c\u0131 $($user.Name) i\u00e7in \u015fifre $daysToExpire g\u00fcn i\u00e7inde dolacak, bildirim g\u00f6nderiliyor.\" $emailBody = @\" &lt;html&gt; &lt;head&gt; &lt;style&gt; body { font-family: Arial, sans-serif; } .header { background-color: #0056b3; color: white; padding: 10px; } .content { padding: 20px; } .footer { font-size: 12px; color: #666; border-top: 1px solid #eee; padding-top: 10px; } .highlight { color: red; font-weight: bold; } &lt;\/style&gt; &lt;\/head&gt; &lt;body&gt; &lt;div &gt; &lt;h2&gt;\u015eifre De\u011fi\u015ftirme Hat\u0131rlatmas\u0131&lt;\/h2&gt; &lt;\/div&gt; &lt;div &gt; &lt;p&gt;Say\u0131n $($user.Name),&lt;\/p&gt; &lt;p&gt;Bu e-posta, \u015firket hesab\u0131n\u0131z\u0131n \u015fifresinin &lt;span &gt;$daysToExpire g\u00fcn i\u00e7inde&lt;\/span&gt; sona erece\u011fini bildirmek i\u00e7in g\u00f6nderilmi\u015ftir.&lt;\/p&gt; &lt;p&gt;L\u00fctfen, eri\u015fim kesintisi ya\u015famamak i\u00e7in \u015fifrenizi en k\u0131sa s\u00fcrede de\u011fi\u015ftirin.&lt;\/p&gt; &lt;h3&gt;\u015eifre De\u011fi\u015ftirme \u0130\u015flemi:&lt;\/h3&gt; &lt;ol&gt; &lt;li&gt;Windows bilgisayar\u0131n\u0131zda &lt;strong&gt;CTRL+ALT+DEL&lt;\/strong&gt; tu\u015f kombinasyonunu kullan\u0131n&lt;\/li&gt; &lt;li&gt;\"\u015eifre De\u011fi\u015ftir\" se\u00e7ene\u011fini t\u0131klay\u0131n&lt;\/li&gt; &lt;li&gt;Mevcut \u015fifrenizi ve yeni \u015fifrenizi girin&lt;\/li&gt; &lt;\/ol&gt; &lt;p&gt;&lt;strong&gt;\u015eifre Politikas\u0131 Hat\u0131rlatmas\u0131:&lt;\/strong&gt;&lt;\/p&gt; &lt;ul&gt; &lt;li&gt;En az 8 karakter uzunlu\u011funda olmal\u0131&lt;\/li&gt; &lt;li&gt;B\u00fcy\u00fck harf, k\u00fc\u00e7\u00fck harf, rakam ve \u00f6zel karakter i\u00e7ermeli&lt;\/li&gt; &lt;li&gt;Son 5 \u015fifrenizden farkl\u0131 olmal\u0131&lt;\/li&gt; &lt;\/ul&gt; &lt;p&gt;Herhangi bir sorunuz veya yard\u0131ma ihtiyac\u0131n\u0131z olursa, l\u00fctfen IT Yard\u0131m Masas\u0131 ile ileti\u015fime ge\u00e7in.&lt;\/p&gt; &lt;\/div&gt; &lt;div &gt; $emailSignature &lt;\/div&gt; &lt;\/body&gt; &lt;\/html&gt; \"@ try { # E-posta g\u00f6nderme $smtp = New-Object Net.Mail.SmtpClient($smtpServer, $smtpPort) $msg = New-Object Net.Mail.MailMessage $msg.From = $smtpFrom $msg.To.Add($user.EmailAddress) $msg.Subject = $emailSubject $msg.Body = $emailBody $msg.IsBodyHtml = $true $smtp.Send($msg) Write-Log \"E-posta ba\u015far\u0131yla g\u00f6nderildi: $($user.EmailAddress)\" } catch { Write-Log \"E-posta g\u00f6nderimi ba\u015far\u0131s\u0131z: $($user.EmailAddress), Hata: $_\" } } } Write-Log \"Script tamamland\u0131.\" # \u00c7\u0131kt\u0131y\u0131 g\u00f6ster Write-Host \"\u015eifre uyar\u0131 g\u00f6nderimi tamamland\u0131. L\u00fctfen loglar\u0131 kontrol edin: $LogFile\" -ForegroundColor Green<\/pre> &nbsp;","excerpt":"Active Directory'de \u015fifre s\u00fcreleri dolmadan kullan\u0131c\u0131lar\u0131 otomatik olarak uyaran bir PowerShell script Bu script \u015funlar\u0131 yapar: Active...","created_at":"2025-04-14 21:28:32","updated_at":"2026-09-08 03:28:14","category_id":6,"view_count":865,"reading_time":5,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-04-14 21:28:32","featured_image":"resimyok.jpg","slug":"active-directoryde-sifre-sureleri-dolmadan-kullanicilari-otomatik-olarak-uyaran-powershell-scripti","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":126,"title":"Microsoft Teams \u00d6nbelle\u011fini Temizleme","content":"Microsoft Teams, i\u015f d\u00fcnyas\u0131nda ve e\u011fitim kurumlar\u0131nda en \u00e7ok tercih edilen ileti\u015fim ve i\u015fbirli\u011fi platformlar\u0131ndan biri haline geldi. Ancak, uzun s\u00fcreli kullan\u0131mlarda veya g\u00fcncellemelerden sonra bazen uygulaman\u0131n yava\u015flad\u0131\u011f\u0131n\u0131, hata verdi\u011fini veya beklenmedik \u015fekilde davrand\u0131\u011f\u0131n\u0131 fark edebilirsiniz. Bu t\u00fcr sorunlar\u0131n en yayg\u0131n \u00e7\u00f6z\u00fcmlerinden biri, Microsoft Teams \u00f6nbelle\u011fini temizlemektir. Bu rehberde, Microsoft Teams \u00f6nbelle\u011finin ne oldu\u011funu, neden temizlenmesi gerekti\u011fini ve farkl\u0131 i\u015fletim sistemlerinde (Windows, macOS, mobil) nas\u0131l temizlenece\u011fini ad\u0131m ad\u0131m anlataca\u011f\u0131z. <h2>\u0130\u00e7indekiler<\/h2> <p style=\"padding-left: 80px;\">1.Microsoft Teams \u00d6nbelle\u011fi Nedir? 2.Neden Teams \u00d6nbelle\u011fini Temizlemelisiniz? 3.Teams \u00d6nbelle\u011fini Temizlemeden \u00d6nce Bilinmesi Gerekenler 4.Windows'ta Teams \u00d6nbelle\u011fini Temizleme<\/p> <ul> <li style=\"list-style-type: none;\"> <ul> <li style=\"list-style-type: none;\"> <ul> <li>Manuel Y\u00f6ntem<\/li> <li>PowerShell Script ile Temizleme<\/li> <li>CMD Komut Sat\u0131r\u0131 ile Temizleme<\/li> <\/ul> <\/li> <\/ul> <\/li> <\/ul> <p style=\"padding-left: 80px;\">5.macOS'ta Teams \u00d6nbelle\u011fini Temizleme 6.Mobil Cihazlarda Teams \u00d6nbelle\u011fini Temizleme<\/p> <ul> <li style=\"list-style-type: none;\"> <ul> <li style=\"list-style-type: none;\"> <ul> <li>Android<\/li> <li>iOS<\/li> <\/ul> <\/li> <\/ul> <\/li> <\/ul> <p style=\"padding-left: 80px;\"> 7.Web Taray\u0131c\u0131s\u0131nda Teams \u00d6nbelle\u011fini Temizleme 8.S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri 9.Teams Performans\u0131n\u0131 \u0130yile\u015ftirme \u0130pu\u00e7lar\u0131 10.SSS - S\u0131k\u00e7a Sorulan Sorular<\/p> <h2>Microsoft Teams \u00d6nbelle\u011fi Nedir?<\/h2> Microsoft Teams \u00f6nbelle\u011fi, uygulaman\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 i\u00e7in kulland\u0131\u011f\u0131 ve yerel depolama alan\u0131n\u0131zda saklanan ge\u00e7ici dosyalar\u0131n bir koleksiyonudur. Bu \u00f6nbellek \u015funlar\u0131 i\u00e7erir: <ul> <li>Profil resimleri ve di\u011fer medya i\u00e7erikleri<\/li> <li>Sohbet ge\u00e7mi\u015fleri ve mesajlar<\/li> <li>Ekip ve kanal verileri<\/li> <li>Oturum \u00e7erezleri ve kimlik do\u011frulama belirte\u00e7leri<\/li> <li>Uygulama ayarlar\u0131 ve tercihler<\/li> <li>\u0130ndirilen dosyalar ve ekler<\/li> <\/ul> Teams, bu verileri bilgisayar\u0131n\u0131zda veya cihaz\u0131n\u0131zda saklayarak uygulaman\u0131n her a\u00e7\u0131l\u0131\u015f\u0131nda t\u00fcm bu bilgileri yeniden indirmek zorunda kalmadan daha h\u0131zl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. Ancak zamanla, bu \u00f6nbellek fazla yer kaplayabilir veya bozulabilir, bu da uygulaman\u0131n performans\u0131n\u0131 etkileyebilir. <h2>Neden Teams \u00d6nbelle\u011fini Temizlemelisiniz?<\/h2> Teams \u00f6nbelle\u011fini temizlemek i\u00e7in bir\u00e7ok neden olabilir: <ol> <li><strong>Performans Sorunlar\u0131<\/strong>: Uygulama yava\u015f \u00e7al\u0131\u015f\u0131yorsa veya donuyorsa<\/li> <li><strong>Oturum A\u00e7ma Sorunlar\u0131<\/strong>: Teams'e giri\u015f yapam\u0131yorsan\u0131z veya kimlik do\u011frulama hatalar\u0131 al\u0131yorsan\u0131z<\/li> <li><strong>G\u00f6r\u00fcnt\u00fc veya Ses Sorunlar\u0131<\/strong>: Toplant\u0131larda ses\/g\u00f6r\u00fcnt\u00fc sorunlar\u0131 ya\u015f\u0131yorsan\u0131z<\/li> <li><strong>Mesaj Teslimat Sorunlar\u0131<\/strong>: Mesajlar g\u00f6nderilmiyor veya al\u0131nm\u0131yorsa<\/li> <li><strong>Aray\u00fcz Hatalar\u0131<\/strong>: Aray\u00fcz elementleri d\u00fczg\u00fcn g\u00f6r\u00fcnt\u00fclenmiyorsa<\/li> <li><strong>G\u00fcncellemelerden Sonra<\/strong>: Bir uygulama g\u00fcncellemesinden sonra sorunlar ya\u015f\u0131yorsan\u0131z<\/li> <li><strong>Depolama Alan\u0131 Kazanma<\/strong>: Disk alan\u0131ndan tasarruf etmek istiyorsan\u0131z<\/li> <li><strong>Veri Gizlili\u011fi<\/strong>: Payla\u015f\u0131lan bir cihazda kullan\u0131m izlerinizi silmek istiyorsan\u0131z<\/li> <\/ol> <h2>Teams \u00d6nbelle\u011fini Temizlemeden \u00d6nce Bilinmesi Gerekenler<\/h2> \u00d6nbelle\u011fi temizlemeden \u00f6nce dikkat edilmesi gereken baz\u0131 noktalar: <ul> <li><strong>Oturumunuz Kapat\u0131lacak<\/strong>: \u00d6nbelle\u011fi temizledikten sonra Teams'e yeniden giri\u015f yapman\u0131z gerekecek<\/li> <li><strong>Yeniden \u0130ndirme<\/strong>: Baz\u0131 veriler (profil resimleri, son mesajlar vb.) yeniden indirilecek<\/li> <li><strong>Yerel Dosyalar Korunur<\/strong>: \u00d6nbelle\u011fi temizlemek, indirdi\u011finiz dosyalar\u0131 silmez<\/li> <li><strong>Ayarlar S\u0131f\u0131rlanabilir<\/strong>: Baz\u0131 uygulama ayarlar\u0131 varsay\u0131lan de\u011ferlerine d\u00f6nebilir<\/li> <li><strong>\u0130ndirilen Dosyalar Korunur<\/strong>: \u0130ndirdi\u011finiz dosyalar \"\u0130ndirilenler\" klas\u00f6r\u00fcnde kal\u0131r<\/li> <\/ul> <h2>Windows'ta Teams \u00d6nbelle\u011fini Temizleme<\/h2> <h3>Windows Manuel Y\u00f6ntem<\/h3> <ol> <li><strong>Teams Uygulamas\u0131n\u0131 Kapat\u0131n<\/strong>: <ul> <li>Sistem tepsisinde Teams simgesine sa\u011f t\u0131klay\u0131n<\/li> <li>\"\u00c7\u0131k\u0131\u015f\" se\u00e7ene\u011fini se\u00e7in<\/li> <li>G\u00f6rev Y\u00f6neticisi'ni a\u00e7\u0131n (Ctrl+Shift+Esc) ve \u00e7al\u0131\u015fan t\u00fcm Teams s\u00fcre\u00e7lerinin kapand\u0131\u011f\u0131ndan emin olun<\/li> <\/ul> <\/li> <li><strong>\u00d6nbellek Klas\u00f6rlerine Eri\u015fim<\/strong>: <ul> <li>Windows arama \u00e7ubu\u011funa <code>%appdata%\\Microsoft\\Teams<\/code> yaz\u0131n ve Enter tu\u015funa bas\u0131n<\/li> <li>Bu, Teams'in ana \u00f6nbellek klas\u00f6r\u00fcn\u00fc a\u00e7acakt\u0131r<\/li> <\/ul> <\/li> <li><strong>Temizlenecek Klas\u00f6rler<\/strong>: A\u015fa\u011f\u0131daki klas\u00f6rleri silin veya i\u00e7eriklerini temizleyin: <ul> <li><code>Application Cache\\Cache<\/code><\/li> <li><code>blob_storage<\/code><\/li> <li><code>Cache<\/code><\/li> <li><code>databases<\/code><\/li> <li><code>GPUCache<\/code><\/li> <li><code>IndexedDB<\/code><\/li> <li><code>Local Storage<\/code><\/li> <li><code>tmp<\/code><\/li> <\/ul> <blockquote><strong>Not<\/strong>: Ana Teams klas\u00f6r\u00fcn\u00fc veya <code>desktop-config.json<\/code> dosyas\u0131n\u0131 silmeyin, bu i\u015flem uygulaman\u0131n yeniden y\u00fcklenmesini gerektirebilir.<\/blockquote> <\/li> <li><strong>Teams'i Yeniden Ba\u015flat\u0131n<\/strong>: <ul> <li>Teams uygulamas\u0131n\u0131 yeniden ba\u015flat\u0131n<\/li> <li>Kimlik bilgilerinizle tekrar oturum a\u00e7\u0131n<\/li> <\/ul> <\/li> <\/ol> <h3>PowerShell Script ile Temizleme<\/h3> PowerShell ile \u00f6nbelle\u011fi daha h\u0131zl\u0131 ve g\u00fcvenli bir \u015fekilde temizleyebilirsiniz: <ol> <li>PowerShell'i y\u00f6netici olarak a\u00e7\u0131n<\/li> <li>A\u015fa\u011f\u0131daki komutu yap\u0131\u015ft\u0131r\u0131n ve Enter tu\u015funa bas\u0131n:<\/li> <\/ol> <pre style=\"padding-left: 40px;\"><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\"># Teams uygulamas\u0131n\u0131 kapat Get-Process -Name Teams -ErrorAction SilentlyContinue | Stop-Process -Force # 3 saniye bekle Start-Sleep -Seconds 3 # \u00d6nbellek klas\u00f6rlerini temizle $cacheFolders = @( \"$env:APPDATA\\Microsoft\\Teams\\Application Cache\\Cache\", \"$env:APPDATA\\Microsoft\\Teams\\blob_storage\", \"$env:APPDATA\\Microsoft\\Teams\\Cache\", \"$env:APPDATA\\Microsoft\\Teams\\databases\", \"$env:APPDATA\\Microsoft\\Teams\\GPUCache\", \"$env:APPDATA\\Microsoft\\Teams\\IndexedDB\", \"$env:APPDATA\\Microsoft\\Teams\\Local Storage\", \"$env:APPDATA\\Microsoft\\Teams\\tmp\" ) foreach ($folder in $cacheFolders) { if (Test-Path $folder) { Remove-Item -Path \"$folder\\*\" -Recurse -Force -ErrorAction SilentlyContinue Write-Host \"Temizlendi: $folder\" -ForegroundColor Green } else { Write-Host \"Klas\u00f6r bulunamad\u0131: $folder\" -ForegroundColor Yellow } } # Teams'i yeniden ba\u015flat Start-Process -FilePath \"$env:LOCALAPPDATA\\Microsoft\\Teams\\current\\Teams.exe\" Write-Host \"Microsoft Teams \u00f6nbelle\u011fi ba\u015far\u0131yla temizlendi ve uygulama yeniden ba\u015flat\u0131ld\u0131.\" -ForegroundColor Cyan<\/pre> <pre style=\"padding-left: 40px;\"><code ><\/code><\/pre> &nbsp; <pre style=\"padding-left: 40px;\"><code ><\/code><\/pre> <h3>CMD Komut Sat\u0131r\u0131 ile Temizleme<\/h3> Alternatif olarak, CMD kullanarak da \u00f6nbelle\u011fi temizleyebilirsiniz: <ol> <li>Teams uygulamas\u0131n\u0131 kapat\u0131n<\/li> <li>Komut \u0130stemi'ni y\u00f6netici olarak a\u00e7\u0131n<\/li> <li>A\u015fa\u011f\u0131daki komutlar\u0131 s\u0131rayla \u00e7al\u0131\u015ft\u0131r\u0131n:<\/li> <\/ol> <pre><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\">taskkill \/f \/im teams.exe rmdir \/s \/q \"%appdata%\\Microsoft\\Teams\\Application Cache\\Cache\" rmdir \/s \/q \"%appdata%\\Microsoft\\Teams\\blob_storage\" rmdir \/s \/q \"%appdata%\\Microsoft\\Teams\\Cache\" rmdir \/s \/q \"%appdata%\\Microsoft\\Teams\\databases\" rmdir \/s \/q \"%appdata%\\Microsoft\\Teams\\GPUCache\" rmdir \/s \/q \"%appdata%\\Microsoft\\Teams\\IndexedDB\" rmdir \/s \/q \"%appdata%\\Microsoft\\Teams\\Local Storage\" rmdir \/s \/q \"%appdata%\\Microsoft\\Teams\\tmp\" start %localappdata%\\Microsoft\\Teams\\current\\Teams.exe<\/pre> <pre><code ><\/code><\/pre> &nbsp; <pre><code ><\/code><\/pre> <h2>macOS'ta Teams \u00d6nbelle\u011fini Temizleme<\/h2> macOS'ta Teams \u00f6nbelle\u011fini temizlemek i\u00e7in \u015fu ad\u0131mlar\u0131 izleyin: <ol> <li><strong>Teams Uygulamas\u0131n\u0131 Kapat\u0131n<\/strong>: <ul> <li>Dock'ta Teams simgesine sa\u011f t\u0131klay\u0131n ve \"\u00c7\u0131k\u0131\u015f\" se\u00e7ene\u011fini se\u00e7in<\/li> <li>Alternatif olarak, \u00fcst men\u00fc \u00e7ubu\u011funda Teams &gt; \u00c7\u0131k\u0131\u015f se\u00e7ene\u011fini kullan\u0131n<\/li> <\/ul> <\/li> <li><strong>Terminal Uygulamas\u0131n\u0131 A\u00e7\u0131n<\/strong>: <ul> <li>Uygulamalar &gt; Yard\u0131mc\u0131 Programlar &gt; Terminal yolunu izleyin veya Spotlight aramas\u0131n\u0131 kullan\u0131n<\/li> <\/ul> <\/li> <li><strong>\u00d6nbellek Klas\u00f6rlerini Temizleyin<\/strong>: <ul> <li>Terminal'e a\u015fa\u011f\u0131daki komutlar\u0131 s\u0131rayla girin:<\/li> <\/ul> <\/li> <\/ol> <pre><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\"># Teams uygulamas\u0131n\u0131 kapat\u0131n pkill -f Teams # \u00d6nbellek klas\u00f6rlerini temizleyin rm -rf ~\/Library\/Application\\ Support\/Microsoft\/Teams\/Application\\ Cache\/Cache rm -rf ~\/Library\/Application\\ Support\/Microsoft\/Teams\/blob_storage rm -rf ~\/Library\/Application\\ Support\/Microsoft\/Teams\/Cache rm -rf ~\/Library\/Application\\ Support\/Microsoft\/Teams\/databases rm -rf ~\/Library\/Application\\ Support\/Microsoft\/Teams\/GPUCache rm -rf ~\/Library\/Application\\ Support\/Microsoft\/Teams\/IndexedDB rm -rf ~\/Library\/Application\\ Support\/Microsoft\/Teams\/Local\\ Storage rm -rf ~\/Library\/Application\\ Support\/Microsoft\/Teams\/tmp # Teams'i yeniden ba\u015flat\u0131n open -a Microsoft\\ Teams<\/pre> <pre><code ><\/code><\/pre> &nbsp; <pre><code ><\/code><\/pre> <ol start=\"4\"> <li><strong>Teams'i Yeniden Ba\u015flat\u0131n<\/strong>: <ul> <li>Uygulamalar klas\u00f6r\u00fcnden Teams'i a\u00e7\u0131n<\/li> <li>Kimlik bilgilerinizle tekrar oturum a\u00e7\u0131n<\/li> <\/ul> <\/li> <\/ol> <h2>Mobil Cihazlarda Teams \u00d6nbelle\u011fini Temizleme<\/h2> <h3>Android<\/h3> Android cihazlarda Teams \u00f6nbelle\u011fini temizlemek i\u00e7in: <ol> <li>Cihaz\u0131n\u0131z\u0131n <strong>Ayarlar<\/strong> uygulamas\u0131n\u0131 a\u00e7\u0131n<\/li> <li><strong>Uygulamalar<\/strong> veya <strong>Uygulama Y\u00f6neticisi<\/strong>'ne gidin<\/li> <li>Uygulama listesinde <strong>Microsoft Teams<\/strong>'i bulun<\/li> <li><strong>Depolama<\/strong> veya <strong>Depolama ve \u00d6nbellek<\/strong> se\u00e7ene\u011fine dokunun<\/li> <li><strong>\u00d6nbelle\u011fi Temizle<\/strong> d\u00fc\u011fmesine dokunun (sadece \u00f6nbelle\u011fi temizler)<\/li> <li>T\u00fcm verileri s\u0131f\u0131rlamak isterseniz <strong>Verileri Temizle<\/strong> d\u00fc\u011fmesine dokunun (dikkat: bu, t\u00fcm uygulama verilerini siler)<\/li> <\/ol> <h3>iOS<\/h3> iOS cihazlarda \u00f6nbellek temizleme: <ol> <li>iPhone veya iPad'inizde <strong>Teams uygulamas\u0131n\u0131<\/strong> bulun<\/li> <li>Simgeyi bas\u0131l\u0131 tutun ve a\u00e7\u0131lan men\u00fcden <strong>Uygulamay\u0131 Kald\u0131r<\/strong> se\u00e7ene\u011fini se\u00e7in<\/li> <li>Onay ekran\u0131nda <strong>Uygulamay\u0131 Kald\u0131r<\/strong>'\u0131 se\u00e7in<\/li> <li><strong>App Store<\/strong>'a gidin ve Teams uygulamas\u0131n\u0131 yeniden y\u00fckleyin<\/li> <li>Uygulamay\u0131 a\u00e7\u0131n ve hesab\u0131n\u0131zla tekrar oturum a\u00e7\u0131n<\/li> <\/ol> <blockquote><strong>Not<\/strong>: iOS, uygulamalar\u0131n \u00f6nbelle\u011fini do\u011frudan temizleme se\u00e7ene\u011fi sunmaz. Bu nedenle uygulamay\u0131 kald\u0131r\u0131p yeniden y\u00fcklemek en etkili y\u00f6ntemdir.<\/blockquote> <h2>Web Taray\u0131c\u0131s\u0131nda Teams \u00d6nbelle\u011fini Temizleme<\/h2> Teams'i web taray\u0131c\u0131s\u0131nda (teams.microsoft.com) kullan\u0131yorsan\u0131z, taray\u0131c\u0131 \u00f6nbelle\u011fini temizlemek sorunu \u00e7\u00f6zebilir: <h3>Google Chrome<\/h3> <ol> <li>Sa\u011f \u00fcst k\u00f6\u015fedeki \u00fc\u00e7 nokta simgesine t\u0131klay\u0131n<\/li> <li><strong>Di\u011fer Ara\u00e7lar &gt; Tarama Verilerini Temizle<\/strong>'yi se\u00e7in<\/li> <li>Zaman aral\u0131\u011f\u0131n\u0131 \"T\u00fcm zamanlar\" olarak ayarlay\u0131n<\/li> <li>\"\u00c7erezler ve site verileri\" ile \"\u00d6nbelle\u011fe al\u0131nm\u0131\u015f g\u00f6rseller ve dosyalar\"\u0131 se\u00e7in<\/li> <li><strong>Verileri Temizle<\/strong> d\u00fc\u011fmesine t\u0131klay\u0131n<\/li> <\/ol> <h3>Microsoft Edge<\/h3> <ol> <li>Sa\u011f \u00fcst k\u00f6\u015fedeki \u00fc\u00e7 nokta simgesine t\u0131klay\u0131n<\/li> <li><strong>Ayarlar &gt; Gizlilik, arama ve hizmetler<\/strong>'i se\u00e7in<\/li> <li>\"Tarama verilerini temizle\" b\u00f6l\u00fcm\u00fcnde <strong>\u015eimdi temizle<\/strong> d\u00fc\u011fmesine t\u0131klay\u0131n<\/li> <li>Zaman aral\u0131\u011f\u0131n\u0131 \"T\u00fcm zamanlar\" olarak ayarlay\u0131n<\/li> <li>\"\u00c7erezler ve site verileri\" ile \"\u00d6nbelle\u011fe al\u0131nm\u0131\u015f g\u00f6rseller ve dosyalar\"\u0131 se\u00e7in<\/li> <li><strong>Temizle<\/strong> d\u00fc\u011fmesine t\u0131klay\u0131n<\/li> <\/ol> <h3>Mozilla Firefox<\/h3> <ol> <li>Sa\u011f \u00fcst k\u00f6\u015fedeki \u00fc\u00e7 \u00e7izgi simgesine t\u0131klay\u0131n<\/li> <li><strong>Ayarlar &gt; Gizlilik ve G\u00fcvenlik<\/strong>'i se\u00e7in<\/li> <li>\"\u00c7erezler ve Site Verileri\" b\u00f6l\u00fcm\u00fcnde <strong>Verileri Temizle<\/strong> d\u00fc\u011fmesine t\u0131klay\u0131n<\/li> <li>\"\u00c7erezler ve Site Verileri\" ile \"\u00d6nbelle\u011fe Al\u0131nm\u0131\u015f Web \u0130\u00e7eri\u011fi\"ni se\u00e7in<\/li> <li><strong>Temizle<\/strong> d\u00fc\u011fmesine t\u0131klay\u0131n<\/li> <\/ol> <h3>Safari (macOS)<\/h3> <ol> <li>\u00dcst men\u00fcden <strong>Safari &gt; Ayarlar<\/strong>'\u0131 se\u00e7in<\/li> <li><strong>Geli\u015fmi\u015f<\/strong> sekmesine t\u0131klay\u0131n<\/li> <li>\"Geli\u015ftirici men\u00fcs\u00fcn\u00fc g\u00f6ster\" se\u00e7ene\u011fini i\u015faretleyin<\/li> <li>\u00dcst men\u00fcden <strong>Geli\u015ftir &gt; \u00d6nbellekleri Bo\u015falt<\/strong>'\u0131 se\u00e7in<\/li> <li>Alternatif olarak, <strong>Safari &gt; Ge\u00e7mi\u015fi ve Web Sitesi Verilerini Temizle<\/strong>'yi de kullanabilirsiniz<\/li> <\/ol> <h2>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h2> <h3>Sorun: Teams a\u00e7\u0131lm\u0131yor veya y\u00fckleme ekran\u0131nda tak\u0131l\u0131yor<\/h3> <strong>\u00c7\u00f6z\u00fcm<\/strong>: <ol> <li>Teams uygulamas\u0131n\u0131 G\u00f6rev Y\u00f6neticisi'nden tamamen kapat\u0131n<\/li> <li>\u00d6nbelle\u011fi temizleyin (yukar\u0131daki ad\u0131mlar\u0131 kullanarak)<\/li> <li><code>%appdata%\\Microsoft\\Teams<\/code> klas\u00f6r\u00fcnden <code>desktop-config.json<\/code> dosyas\u0131n\u0131 yedekleyip silin<\/li> <li>Teams'i yeniden ba\u015flat\u0131n<\/li> <\/ol> <h3>Sorun: Sesli\/g\u00f6r\u00fcnt\u00fcl\u00fc aramalarda ses veya video sorunlar\u0131<\/h3> <strong>\u00c7\u00f6z\u00fcm<\/strong>: <ol> <li>Teams \u00f6nbelle\u011fini temizleyin<\/li> <li>Bilgisayar\u0131n\u0131z\u0131 yeniden ba\u015flat\u0131n<\/li> <li>Teams ayarlar\u0131ndan ses ve video cihazlar\u0131n\u0131 kontrol edin<\/li> <li>Taray\u0131c\u0131 s\u00fcr\u00fcm\u00fcn\u00fc deneyin (teams.microsoft.com)<\/li> <\/ol> <h3>Sorun: Mesajlar y\u00fcklenmiyor veya senkronize edilmiyor<\/h3> <strong>\u00c7\u00f6z\u00fcm<\/strong>: <ol> <li>\u0130nternet ba\u011flant\u0131n\u0131z\u0131 kontrol edin<\/li> <li>Teams \u00f6nbelle\u011fini temizleyin<\/li> <li>Oturumu kapat\u0131p yeniden a\u00e7\u0131n<\/li> <li>Microsoft 365 servis durumunu kontrol edin (status.office365.com)<\/li> <\/ol> <h3>Sorun: \u00d6nbelle\u011fi temizledikten sonra Teams ba\u015flam\u0131yor<\/h3> <strong>\u00c7\u00f6z\u00fcm<\/strong>: <ol> <li>Teams'i yeniden y\u00fckleyin: <ul> <li>Denetim Masas\u0131 &gt; Programlar ve \u00d6zellikler &gt; Microsoft Teams &gt; Kald\u0131r<\/li> <li><a href=\"https:\/\/www.microsoft.com\/tr-tr\/microsoft-teams\/download-app\">Teams'in resmi indirme sayfas\u0131ndan<\/a> yeniden y\u00fckleyin<\/li> <\/ul> <\/li> <\/ol> <h3>Sorun: PowerShell betikleri \u00e7al\u0131\u015fm\u0131yor<\/h3> <strong>\u00c7\u00f6z\u00fcm<\/strong>: <ol> <li>PowerShell'i y\u00f6netici olarak \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun<\/li> <li>Y\u00fcr\u00fctme politikas\u0131n\u0131 ge\u00e7ici olarak de\u011fi\u015ftirin: <pre><code >Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass <\/code><\/pre> <\/li> <li>Beti\u011fi \u00e7al\u0131\u015ft\u0131r\u0131n<\/li> <li>\u0130\u015flem tamamland\u0131ktan sonra politikay\u0131 geri al\u0131n: <pre><code >Set-ExecutionPolicy -Scope Process -ExecutionPolicy Default <\/code><\/pre> <\/li> <\/ol> <h2>Teams Performans\u0131n\u0131 \u0130yile\u015ftirme \u0130pu\u00e7lar\u0131<\/h2> \u00d6nbellek temizlemenin yan\u0131 s\u0131ra, Teams performans\u0131n\u0131 iyile\u015ftirmek i\u00e7in uygulayabilece\u011finiz di\u011fer ipu\u00e7lar\u0131: <ol> <li><strong>Teams Uygulamas\u0131n\u0131 G\u00fcncel Tutun<\/strong>: Microsoft d\u00fczenli olarak performans iyile\u015ftirmeleri ve hata d\u00fczeltmeleri yay\u0131nlar<\/li> <li><strong>GPU H\u0131zland\u0131rmay\u0131 Devre D\u0131\u015f\u0131 B\u0131rak\u0131n<\/strong> (yava\u015f bilgisayarlarda): <ul> <li>Teams &gt; Ayarlar &gt; Genel<\/li> <li>\"GPU donan\u0131m h\u0131zland\u0131rmas\u0131n\u0131 devre d\u0131\u015f\u0131 b\u0131rak\" se\u00e7ene\u011fini i\u015faretleyin<\/li> <li>Teams'i yeniden ba\u015flat\u0131n<\/li> <\/ul> <\/li> <li><strong>Arka Plan Efektlerini Azalt\u0131n<\/strong>: <ul> <li>Video toplant\u0131larda arka plan bulan\u0131kl\u0131\u011f\u0131 veya \u00f6zel arka planlar, i\u015flemci y\u00fck\u00fcn\u00fc art\u0131r\u0131r<\/li> <li>Daha iyi performans i\u00e7in bunlar\u0131 kapatmay\u0131 deneyin<\/li> <\/ul> <\/li> <li><strong>Kullan\u0131lmayan Uygulamalar\u0131 Kapat\u0131n<\/strong>: Teams \u00e7al\u0131\u015f\u0131rken di\u011fer uygulamalar\u0131 kapatarak daha fazla sistem kayna\u011f\u0131 sa\u011flay\u0131n<\/li> <li><strong>Teams'i Ba\u015flang\u0131\u00e7ta A\u00e7\u0131lacak \u015eekilde Ayarlamay\u0131n<\/strong>: <ul> <li>Teams &gt; Ayarlar &gt; Genel<\/li> <li>\"Uygulama Windows'ta \u00e7al\u0131\u015fmaya devam etsin\" se\u00e7ene\u011finin i\u015faretini kald\u0131r\u0131n<\/li> <\/ul> <\/li> <li><strong>\u0130stemci Verilerini D\u00fczenli Olarak Temizleyin<\/strong>: <ul> <li>Bu rehberdeki ad\u0131mlar\u0131 1-2 ayda bir uygulay\u0131n<\/li> <li>\u00d6zellikle \u00f6nemli g\u00fcncellemelerden sonra<\/li> <\/ul> <\/li> <li><strong>Web S\u00fcr\u00fcm\u00fcn\u00fc Kullan\u0131n<\/strong>: Bilgisayar\u0131n\u0131z daha eski veya kaynaklar\u0131 s\u0131n\u0131rl\u0131ysa, masa\u00fcst\u00fc uygulamas\u0131 yerine web s\u00fcr\u00fcm\u00fcn\u00fc kullanmay\u0131 d\u00fc\u015f\u00fcn\u00fcn<\/li> <\/ol> <h2>SSS - S\u0131k\u00e7a Sorulan Sorular<\/h2> <h3>Teams \u00f6nbelle\u011fini ne s\u0131kl\u0131kla temizlemeliyim?<\/h3> Genellikle, sorun ya\u015fad\u0131\u011f\u0131n\u0131zda temizlemeniz yeterlidir. \u00d6nleyici bak\u0131m olarak, yo\u011fun kullan\u0131c\u0131lar i\u00e7in 1-2 ayda bir temizlemek faydal\u0131 olabilir. <h3>\u00d6nbelle\u011fi temizlemek mesajlar\u0131m\u0131 veya dosyalar\u0131m\u0131 siler mi?<\/h3> Hay\u0131r, mesajlar\u0131n\u0131z ve payla\u015f\u0131lan dosyalar\u0131n\u0131z Microsoft sunucular\u0131nda saklan\u0131r. \u00d6nbelle\u011fi temizlemek sadece yerel kopyan\u0131z\u0131 etkiler, yeniden oturum a\u00e7t\u0131\u011f\u0131n\u0131zda verileriniz geri y\u00fcklenir. <h3>Teams performans\u0131n\u0131 etkileyen di\u011fer fakt\u00f6rler nelerdir?<\/h3> \u0130nternet ba\u011flant\u0131 h\u0131z\u0131, bilgisayar\u0131n\u0131z\u0131n \u00f6zellikleri (\u00f6zellikle RAM ve i\u015flemci), di\u011fer a\u00e7\u0131k uygulamalar ve Microsoft 365 hizmet durumu performans\u0131 etkileyebilir. <h3>Teams'i tamamen yeniden y\u00fcklemem gerekirse ne yapmal\u0131y\u0131m?<\/h3> <ol> <li>Teams'i kald\u0131r\u0131n<\/li> <li><code>%appdata%\\Microsoft\\Teams<\/code>, <code>%localappdata%\\Microsoft\\Teams<\/code> ve <code>%localappdata%\\Microsoft\\TeamsPresenceAddin<\/code> klas\u00f6rlerindeki t\u00fcm i\u00e7eri\u011fi silin<\/li> <li>Microsoft Teams'i resmi web sitesinden yeniden y\u00fckleyin<\/li> <\/ol> <h3>Microsoft Teams Rooms (MTR) cihazlar\u0131nda \u00f6nbelle\u011fi nas\u0131l temizlerim?<\/h3> MTR cihazlar\u0131 farkl\u0131 bir s\u00fcr\u00fcm kullan\u0131r. Bu cihazlarda \u00f6nbelle\u011fi temizlemek i\u00e7in cihaz\u0131n ayarlar men\u00fcs\u00fcnden \"Factory Reset\" se\u00e7ene\u011fini kullan\u0131n veya IT departman\u0131n\u0131za ba\u015fvurun. <h3>Teams'in yeni s\u00fcr\u00fcm\u00fc ne zaman yay\u0131nlanacak?<\/h3> Microsoft, Teams istemcisini otomatik olarak g\u00fcnceller. G\u00fcncellemeler genellikle kademeli olarak da\u011f\u0131t\u0131l\u0131r, bu nedenle baz\u0131 kullan\u0131c\u0131lar yeni \u00f6zellikleri di\u011ferlerinden \u00f6nce alabilir. <hr \/> Bu kapsaml\u0131 rehber, Microsoft Teams \u00f6nbelle\u011fini temizleme ve performans sorunlar\u0131n\u0131 giderme konusunda size yard\u0131mc\u0131 olacakt\u0131r. Teknik sorunlar ya\u015famaya devam ederseniz, IT destek ekibinize ba\u015fvurman\u0131z veya Microsoft Destek sayfalar\u0131n\u0131 ziyaret etmeniz \u00f6nerilir. Microsoft Teams'i daha etkili kullanman\u0131z dile\u011fiyle!","excerpt":"Microsoft Teams, i\u015f d\u00fcnyas\u0131nda ve e\u011fitim kurumlar\u0131nda en \u00e7ok tercih edilen ileti\u015fim ve i\u015fbirli\u011fi platformlar\u0131ndan biri haline geldi. Ancak,...","created_at":"2025-04-05 15:36:10","updated_at":"2026-09-07 15:21:03","category_id":6,"view_count":753,"reading_time":12,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-04-05 15:36:10","featured_image":"resimyok.jpg","slug":"microsoft-teams-onbellegini-temizleme","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":127,"title":"Microsoft 365 \u0130naktif Kullan\u0131c\u0131 Raporu Nas\u0131l Al\u0131n\u0131r?","content":"Modern i\u015fletmelerde Microsoft 365 (eski ad\u0131yla Office 365) kullan\u0131m\u0131 giderek yayg\u0131nla\u015fmaktad\u0131r. Bu bulut tabanl\u0131 hizmet, lisans maliyetleri ile birlikte gelmektedir. Bu nedenle, aktif olarak kullan\u0131lmayan hesaplar\u0131n tespit edilmesi ve gerekli aksiyonlar\u0131n al\u0131nmas\u0131, i\u015fletmeler i\u00e7in hem mali hem de g\u00fcvenlik a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck \u00f6nem ta\u015f\u0131maktad\u0131r. Bu yaz\u0131da, Microsoft 365 ortam\u0131n\u0131zdaki inaktif kullan\u0131c\u0131lar\u0131 nas\u0131l tespit edece\u011finizi, rapor olu\u015fturaca\u011f\u0131n\u0131z\u0131 ve bu raporlar\u0131 nas\u0131l analiz edip kullanaca\u011f\u0131n\u0131z\u0131 detayl\u0131ca ele alaca\u011f\u0131z. <h2>\u0130naktif Kullan\u0131c\u0131 Raporunun \u00d6nemi<\/h2> <h3>Maliyet Optimizasyonu<\/h3> Microsoft 365 lisanslar\u0131, kullan\u0131c\u0131 ba\u015f\u0131na ayl\u0131k veya y\u0131ll\u0131k olarak faturaland\u0131r\u0131l\u0131r. \u0130naktif kullan\u0131c\u0131lara ait lisanslar\u0131n tespiti ve yeniden tahsisi veya iptali, i\u015fletmenizin gereksiz maliyetlerden kurtulmas\u0131n\u0131 sa\u011flar. Orta \u00f6l\u00e7ekli bir i\u015fletmede bile, bu tasarruf y\u0131ll\u0131k binlerce TL'ye ula\u015fabilir. <h3>G\u00fcvenlik Riskleri<\/h3> Aktif olarak kullan\u0131lmayan hesaplar, i\u015fletmenizin g\u00fcvenlik zafiyetine neden olabilir. \u0130\u015ften ayr\u0131lm\u0131\u015f ancak hesab\u0131 kapat\u0131lmam\u0131\u015f eski \u00e7al\u0131\u015fanlar veya uzun s\u00fcredir kullan\u0131lmayan hesaplar, siber sald\u0131r\u0131lar i\u00e7in potansiyel bir giri\u015f noktas\u0131 olu\u015fturur. Bu hesaplar\u0131n d\u00fczenli olarak tespit edilip gerekli aksiyonlar\u0131n al\u0131nmas\u0131, g\u00fcvenlik riski y\u00f6netiminin \u00f6nemli bir par\u00e7as\u0131d\u0131r. <h3>Veri Y\u00f6netimi ve Uyumluluk<\/h3> KVKK (Ki\u015fisel Verilerin Korunmas\u0131 Kanunu) ve GDPR (Genel Veri Koruma Y\u00f6netmeli\u011fi) gibi d\u00fczenlemeler, ki\u015fisel verilerin gereksiz yere saklanmamas\u0131n\u0131 gerektirir. Art\u0131k organizasyonunuzda bulunmayan ki\u015filere ait verilerin y\u00f6netimi, bu d\u00fczenlemelere uyum sa\u011flamak a\u00e7\u0131s\u0131ndan kritiktir. <h2>\u0130naktif Kullan\u0131c\u0131 Raporu Olu\u015fturma Y\u00f6ntemleri<\/h2> <h3>1. PowerShell ile Detayl\u0131 \u0130naktif Kullan\u0131c\u0131 Raporu Olu\u015fturma<\/h3> PowerShell, Microsoft 365 y\u00f6netimi i\u00e7in en g\u00fc\u00e7l\u00fc ara\u00e7lardan biridir. A\u015fa\u011f\u0131da, detayl\u0131 bir inaktif kullan\u0131c\u0131 raporu olu\u015fturmak i\u00e7in kullanabilece\u011finiz ad\u0131mlar\u0131 ve komut dosyalar\u0131n\u0131 bulacaks\u0131n\u0131z. <h4>\u00d6n Gereksinimler<\/h4> <ul> <li>Windows PowerShell 5.1 veya daha yeni s\u00fcr\u00fcm<\/li> <li>Exchange Online PowerShell mod\u00fcl\u00fc<\/li> <li>Microsoft Graph PowerShell mod\u00fcl\u00fc<\/li> <li>Global Y\u00f6netici veya Exchange Y\u00f6neticisi yetkileri<\/li> <\/ul> <h4>PowerShell Mod\u00fcllerinin Kurulumu<\/h4> <pre><code ># Exchange Online PowerShell mod\u00fcl\u00fcn\u00fc y\u00fckleyin Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber # Microsoft Graph PowerShell mod\u00fcl\u00fcn\u00fc y\u00fckleyin Install-Module -Name Microsoft.Graph -Force -AllowClobber <\/code><\/pre> <h4>Exchange Online'a Ba\u011flanma<\/h4> <pre><code ># Modern kimlik do\u011frulama ile Exchange Online'a ba\u011flan\u0131n Connect-ExchangeOnline -UserPrincipalName admin@sirketiniz.com <\/code><\/pre> <h4>Microsoft Graph'e Ba\u011flanma<\/h4> <pre><code ># Microsoft Graph'e ba\u011flan\u0131n ve gerekli izinleri al\u0131n Connect-MgGraph -Scopes \"User.Read.All\", \"AuditLog.Read.All\" <\/code><\/pre> <h4>Geli\u015fmi\u015f \u0130naktif Kullan\u0131c\u0131 Raporu Olu\u015fturma<\/h4> <pre><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\"># Parametreleri tan\u0131mlama param( $InactiveDays = 90, # Varsay\u0131lan olarak 90 g\u00fcn $OutputPath = \"C:\\Raporlar\\InaktifKullanicilar_$(Get-Date -Format 'yyyyMMdd').csv\", $IncludeSharedMailboxes = $false, $IncludeResourceMailboxes = $false ) # Fonksiyonlar\u0131 tan\u0131mlama function Write-Log { param ( $Message, $LogLevel = \"INFO\" ) $timestamp = Get-Date -Format \"yyyy-MM-dd HH:mm:ss\" Write-Host \" $Message\" } # Ba\u015flang\u0131\u00e7 mesaj\u0131 Write-Log \"Microsoft 365 \u0130naktif Kullan\u0131c\u0131 Raporu olu\u015fturuluyor...\" Write-Log \"\u0130naktif g\u00fcn say\u0131s\u0131: $InactiveDays\" # Klas\u00f6r\u00fc olu\u015ftur (e\u011fer yoksa) $outputFolder = Split-Path -Path $OutputPath -Parent if (-not (Test-Path -Path $outputFolder)) { New-Item -ItemType Directory -Path $outputFolder -Force | Out-Null Write-Log \"$outputFolder klas\u00f6r\u00fc olu\u015fturuldu\" \"INFO\" } # \u0130naktif tarihi hesapla $inactiveDate = (Get-Date).AddDays(-$InactiveDays) Write-Log \"\u0130naktif tarih e\u015fi\u011fi: $inactiveDate\" \"INFO\" # T\u00fcm posta kutular\u0131n\u0131 al Write-Log \"Posta kutular\u0131 al\u0131n\u0131yor...\" \"INFO\" $mailboxFilter = \"RecipientTypeDetails -eq 'UserMailbox'\" if ($IncludeSharedMailboxes) { $mailboxFilter += \" -or RecipientTypeDetails -eq 'SharedMailbox'\" } if ($IncludeResourceMailboxes) { $mailboxFilter += \" -or RecipientTypeDetails -eq 'RoomMailbox' -or RecipientTypeDetails -eq 'EquipmentMailbox'\" } $mailboxes = Get-EXOMailbox -ResultSize Unlimited -Filter $mailboxFilter -Properties DisplayName, UserPrincipalName, RecipientTypeDetails, WhenCreated, WhenChanged Write-Log \"$($mailboxes.Count) posta kutusu bulundu\" \"INFO\" # Sonu\u00e7lar\u0131 saklamak i\u00e7in bir koleksiyon olu\u015ftur $results = @() # \u0130lerleme sayac\u0131 $progressCounter = 0 $totalMailboxes = $mailboxes.Count foreach ($mailbox in $mailboxes) { # \u0130lerleme \u00e7ubu\u011funu g\u00fcncelle $progressCounter++ $progressPercentage = ::Round(($progressCounter \/ $totalMailboxes) * 100, 2) Write-Progress -Activity \"\u0130naktif Kullan\u0131c\u0131lar Taran\u0131yor\" -Status \"$progressCounter \/ $totalMailboxes ($progressPercentage%)\" -PercentComplete $progressPercentage # Her posta kutusu i\u00e7in son oturum a\u00e7ma tarihini al $stats = $null try { $stats = Get-EXOMailboxStatistics -Identity $mailbox.UserPrincipalName -ErrorAction Stop | Select-Object DisplayName, LastLogonTime, ItemCount, TotalItemSize } catch { Write-Log \"Hata: $($mailbox.UserPrincipalName) i\u00e7in istatistik al\u0131namad\u0131: $($_.Exception.Message)\" \"ERROR\" continue } # Son oturum a\u00e7ma tarihi kontrol\u00fc $isInactive = $false $inactiveDaysCount = 0 if ($null -eq $stats.LastLogonTime) { $isInactive = $true $inactiveDaysCount = ::Round((New-TimeSpan -Start $mailbox.WhenCreated -End (Get-Date)).TotalDays, 0) } elseif ($stats.LastLogonTime -lt $inactiveDate) { $isInactive = $true $inactiveDaysCount = ::Round((New-TimeSpan -Start $stats.LastLogonTime -End (Get-Date)).TotalDays, 0) } # \u0130naktif ise sonu\u00e7lara ekle if ($isInactive) { # Lisans bilgilerini al $licenses = \"Bulunamad\u0131\" try { $user = Get-MgUser -UserId $mailbox.UserPrincipalName -Property AssignedLicenses -ErrorAction Stop if ($user.AssignedLicenses.Count -gt 0) { $licenseDetails = @() foreach ($license in $user.AssignedLicenses) { $licenseSkuId = $license.SkuId # Lisans SKU ID'lerini daha okunabilir isimlerle e\u015fle\u015ftir switch ($licenseSkuId) { \"c5928f49-12ba-48f7-ada3-0d743a3601d5\" { $licenseName = \"Microsoft 365 E5\" } \"06ebc4ee-1bb5-4d50-a87d-2e37e3ec5f57\" { $licenseName = \"Microsoft 365 E3\" } \"a403ebcc-fae0-4ca2-8c8c-7a907fd6c235\" { $licenseName = \"Microsoft 365 Business Standard\" } \"f245ecc8-75af-4f8e-b61f-27d8114de5f3\" { $licenseName = \"Microsoft 365 Business Basic\" } \"3b555118-da6a-4418-894f-7df1e2096870\" { $licenseName = \"Microsoft 365 Business Premium\" } default { $licenseName = $licenseSkuId } } $licenseDetails += $licenseName } $licenses = $licenseDetails -join \", \" } else { $licenses = \"Lisans Yok\" } } catch { Write-Log \"Hata: $($mailbox.UserPrincipalName) i\u00e7in lisans bilgisi al\u0131namad\u0131: $($_.Exception.Message)\" \"ERROR\" } # Son kullan\u0131c\u0131 aktivitesini al $lastUserActivity = \"Aktivite Bulunamad\u0131\" try { $activityLogs = Get-MgAuditLogSignIn -Filter \"userPrincipalName eq '$($mailbox.UserPrincipalName)'\" -Top 1 -ErrorAction Stop if ($activityLogs) { $lastUserActivity = $activityLogs.CreatedDateTime } } catch { Write-Log \"Hata: $($mailbox.UserPrincipalName) i\u00e7in aktivite kayd\u0131 al\u0131namad\u0131: $($_.Exception.Message)\" \"ERROR\" } # Sonu\u00e7 nesnesini olu\u015ftur $result = @{ 'G\u00f6r\u00fcnen Ad' = $mailbox.DisplayName 'E-posta Adresi' = $mailbox.UserPrincipalName 'Hesap T\u00fcr\u00fc' = $mailbox.RecipientTypeDetails 'Olu\u015fturulma Tarihi' = $mailbox.WhenCreated 'Son De\u011fi\u015ftirilme Tarihi' = $mailbox.WhenChanged 'Son Oturum A\u00e7ma' = $stats.LastLogonTime '\u0130naktif G\u00fcn Say\u0131s\u0131' = $inactiveDaysCount '\u00d6\u011fe Say\u0131s\u0131' = $stats.ItemCount 'Posta Kutusu Boyutu' = $stats.TotalItemSize 'Lisanslar' = $licenses 'Son Aktivite' = $lastUserActivity } $results += $result } } # \u0130lerleme \u00e7ubu\u011funu temizle Write-Progress -Activity \"\u0130naktif Kullan\u0131c\u0131lar Taran\u0131yor\" -Completed # Sonu\u00e7lar\u0131 s\u0131rala $sortedResults = $results | Sort-Object -Property '\u0130naktif G\u00fcn Say\u0131s\u0131' -Descending # Sonu\u00e7lar\u0131 CSV olarak d\u0131\u015fa aktar if ($sortedResults.Count -gt 0) { $sortedResults | Export-Csv -Path $OutputPath -NoTypeInformation -Encoding UTF8 Write-Log \"$($sortedResults.Count) inaktif kullan\u0131c\u0131 bulundu ve rapor olu\u015fturuldu: $OutputPath\" \"INFO\" } else { Write-Log \"\u0130naktif kullan\u0131c\u0131 bulunamad\u0131\" \"INFO\" } # \u00d6zet bilgi Write-Log \"Rapor tamamland\u0131\" \"INFO\" Write-Log \"Toplam tarama yap\u0131lan posta kutusu: $totalMailboxes\" \"INFO\" Write-Log \"Bulunan inaktif posta kutusu: $($sortedResults.Count)\" \"INFO\" Write-Log \"\u0130naktiflik e\u015fi\u011fi: $InactiveDays g\u00fcn\" \"INFO\" # \u00d6zet raporu g\u00f6ster if ($sortedResults.Count -gt 0) { Write-Host \"\" Write-Host \"En Uzun \u0130naktif Olan 5 Kullan\u0131c\u0131:\" -ForegroundColor Yellow $sortedResults | Select-Object 'G\u00f6r\u00fcnen Ad', 'E-posta Adresi', '\u0130naktif G\u00fcn Say\u0131s\u0131', 'Lisanslar' | Format-Table -AutoSize | Out-String | Write-Host }<\/pre> <pre><code ><\/code><\/pre> &nbsp; <pre><code ><\/code><\/pre> Bu PowerShell beti\u011fi: <ul> <li>Belirtilen g\u00fcn say\u0131s\u0131na g\u00f6re inaktif kullan\u0131c\u0131lar\u0131 tespit eder (varsay\u0131lan: 90 g\u00fcn)<\/li> <li>Kullan\u0131c\u0131lar\u0131n son oturum a\u00e7ma tarihlerini, posta kutusu boyutlar\u0131n\u0131 ve \u00f6\u011fe say\u0131lar\u0131n\u0131 rapor eder<\/li> <li>Kullan\u0131c\u0131lara atanm\u0131\u015f lisanslar\u0131 g\u00f6sterir<\/li> <li>Son kullan\u0131c\u0131 aktivitesini Azure AD oturum a\u00e7ma kay\u0131tlar\u0131ndan al\u0131r<\/li> <li>\u0130naktif g\u00fcn say\u0131s\u0131na g\u00f6re s\u0131ralanm\u0131\u015f CSV raporu olu\u015fturur<\/li> <li>\u0130lerleme \u00e7ubu\u011fu ile i\u015flem durumunu g\u00f6sterir<\/li> <li>Detayl\u0131 log bilgisi sa\u011flar<\/li> <\/ul> <h4>Raporun \u00c7al\u0131\u015ft\u0131r\u0131lmas\u0131<\/h4> Beti\u011fi farkl\u0131 parametrelerle \u00e7al\u0131\u015ft\u0131rmak i\u00e7in: <pre><code ># Varsay\u0131lan ayarlarla \u00e7al\u0131\u015ft\u0131rma (90 g\u00fcn inaktif) .\\InaktifKullaniciRaporu.ps1 # \u00d6zel inaktif g\u00fcn say\u0131s\u0131 belirterek \u00e7al\u0131\u015ft\u0131rma .\\InaktifKullaniciRaporu.ps1 -InactiveDays 45 # Payla\u015f\u0131ml\u0131 posta kutular\u0131n\u0131 dahil ederek \u00e7al\u0131\u015ft\u0131rma .\\InaktifKullaniciRaporu.ps1 -IncludeSharedMailboxes # \u00d6zel \u00e7\u0131kt\u0131 yolu belirterek \u00e7al\u0131\u015ft\u0131rma .\\InaktifKullaniciRaporu.ps1 -OutputPath \"D:\\Raporlar\\InaktifKullanicilar.csv\" <\/code><\/pre> <h3>2. Microsoft 365 Admin Center ile Rapor Alma<\/h3> PowerShell kullanmak istemeyenler i\u00e7in Microsoft 365 Admin Center arac\u0131l\u0131\u011f\u0131yla da inaktif kullan\u0131c\u0131 raporu olu\u015fturulabilir. Bu y\u00f6ntem daha s\u0131n\u0131rl\u0131 bilgi sa\u011flasa da, teknik bilgisi daha az olan y\u00f6neticiler i\u00e7in kullan\u0131m\u0131 daha kolayd\u0131r. <h4>Ad\u0131m 1: Microsoft 365 Admin Center'a Giri\u015f<\/h4> <ol> <li>Web taray\u0131c\u0131n\u0131zdan <a href=\"https:\/\/admin.microsoft.com\/\">https:\/\/admin.microsoft.com<\/a> adresine gidin<\/li> <li>Y\u00f6netici hesab\u0131n\u0131zla oturum a\u00e7\u0131n<\/li> <\/ol> <h4>Ad\u0131m 2: Raporlar B\u00f6l\u00fcm\u00fcne Eri\u015fim<\/h4> <ol> <li>Sol men\u00fcden \"Raporlar\" se\u00e7ene\u011fine t\u0131klay\u0131n<\/li> <li>\"Kullan\u0131m\" sekmesini se\u00e7in<\/li> <\/ol> <h4>Ad\u0131m 3: Kullan\u0131c\u0131 Etkinlik Raporunu G\u00f6r\u00fcnt\u00fcleme<\/h4> <ol> <li>\"Microsoft 365 Kullan\u0131c\u0131 Etkinlik\" raporunu se\u00e7in<\/li> <li>Sa\u011f \u00fcst k\u00f6\u015feden rapor i\u00e7in zaman aral\u0131\u011f\u0131n\u0131 se\u00e7in (son 7 g\u00fcn, 30 g\u00fcn, 90 g\u00fcn veya 180 g\u00fcn)<\/li> <li>\"Aktif kullan\u0131c\u0131lar\" s\u00fctununu inceleyerek inaktif kullan\u0131c\u0131lar\u0131 belirleyin<\/li> <\/ol> <h4>Ad\u0131m 4: Raporu D\u0131\u015fa Aktarma<\/h4> <ol> <li>Sa\u011f \u00fcst k\u00f6\u015fedeki \"D\u0131\u015fa aktar\" d\u00fc\u011fmesine t\u0131klay\u0131n<\/li> <li>Excel format\u0131nda raporu indirin<\/li> <\/ol> <h2>Rapor Analizi ve Aksiyon Plan\u0131<\/h2> \u0130naktif kullan\u0131c\u0131 raporunuzu olu\u015fturduktan sonra, bu veriler \u00fczerinde yapaca\u011f\u0131n\u0131z analiz ve alaca\u011f\u0131n\u0131z aksiyonlar \u00f6nemlidir. \u0130\u015fte izlemeniz gereken ad\u0131mlar: <h3>1. Kullan\u0131c\u0131 Kategorilerinin Belirlenmesi<\/h3> \u0130naktif kullan\u0131c\u0131lar\u0131 \u015fu kategorilere ay\u0131r\u0131n: <ul> <li><strong>Ge\u00e7ici \u0130naktif Kullan\u0131c\u0131lar<\/strong>: \u0130zin, rapor, do\u011fum izni gibi nedenlerle ge\u00e7ici olarak sistemden uzak olan kullan\u0131c\u0131lar<\/li> <li><strong>\u0130\u015ften Ayr\u0131lm\u0131\u015f Kullan\u0131c\u0131lar<\/strong>: Organizasyondan ayr\u0131lm\u0131\u015f ancak hesaplar\u0131 kapat\u0131lmam\u0131\u015f kullan\u0131c\u0131lar<\/li> <li><strong>D\u00fc\u015f\u00fck Kullan\u0131ml\u0131 Kullan\u0131c\u0131lar<\/strong>: Microsoft 365 hizmetlerini nadiren kullanan \u00e7al\u0131\u015fanlar<\/li> <li><strong>Test\/Servis Hesaplar\u0131<\/strong>: Sistem testleri veya otomasyonlar i\u00e7in olu\u015fturulmu\u015f hesaplar<\/li> <\/ul> <h3>2. Departman Y\u00f6neticileri ile Do\u011frulama<\/h3> Rapordaki inaktif kullan\u0131c\u0131lar\u0131 ilgili departman y\u00f6neticileri ile payla\u015farak do\u011frulay\u0131n. Bu ad\u0131m, gereksiz hesap kapatmalar\u0131n\u0131 \u00f6nler. <h3>3. Lisans Optimizasyon Stratejisi<\/h3> \u0130naktif kullan\u0131c\u0131lar i\u00e7in \u015fu stratejilerden birini uygulay\u0131n: <ul> <li><strong>Lisans Kald\u0131rma<\/strong>: \u0130\u015ften ayr\u0131lm\u0131\u015f kullan\u0131c\u0131lar\u0131n lisanslar\u0131n\u0131 tamamen kald\u0131r\u0131n<\/li> <li><strong>Lisans Downgrade<\/strong>: Nadiren kullan\u0131lan hesaplar i\u00e7in daha d\u00fc\u015f\u00fck seviyeli lisanslara ge\u00e7i\u015f yap\u0131n<\/li> <li><strong>Hesap Yeniden Tahsisi<\/strong>: Kullan\u0131lmayan lisanslar\u0131 yeni \u00e7al\u0131\u015fanlara veya ihtiyac\u0131 olan kullan\u0131c\u0131lara yeniden tahsis edin<\/li> <\/ul> <h3>4. Hesap Y\u00f6netimi Politikas\u0131<\/h3> \u0130naktif kullan\u0131c\u0131lar i\u00e7in kurumsal bir politika olu\u015fturun: <ul> <li><strong>Ge\u00e7ici Devre D\u0131\u015f\u0131 B\u0131rakma<\/strong>: 60 g\u00fcn inaktif olan hesaplar ge\u00e7ici olarak devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131r<\/li> <li><strong>Lisans Kald\u0131rma<\/strong>: 90 g\u00fcn inaktif olan hesaplar\u0131n lisanslar\u0131 kald\u0131r\u0131l\u0131r<\/li> <li><strong>Hesap Silme\/Ar\u015fivleme<\/strong>: 180 g\u00fcn inaktif olan hesaplar, veriler ar\u015fivlendikten sonra silinir<\/li> <\/ul> <h2>\u0130naktif Kullan\u0131c\u0131 Tespiti i\u00e7in En \u0130yi Uygulamalar<\/h2> <h3>D\u00fczenli Raporlama Takvimi<\/h3> \u0130naktif kullan\u0131c\u0131 raporlar\u0131n\u0131 d\u00fczenli olarak (haftal\u0131k, ayl\u0131k veya \u00fc\u00e7 ayl\u0131k) olu\u015fturun ve g\u00f6zden ge\u00e7irin. Bu d\u00fczenlilik, potansiyel sorunlar\u0131n erken tespit edilmesini sa\u011flar. <h3>Otomatik Raporlama<\/h3> PowerShell betiklerini Windows G\u00f6rev Zamanlay\u0131c\u0131s\u0131 ile otomatik olarak \u00e7al\u0131\u015ft\u0131rarak d\u00fczenli raporlar olu\u015fturun ve belirli e-posta adreslerine g\u00f6nderin. <pre><code ># G\u00f6rev Zamanlay\u0131c\u0131s\u0131 i\u00e7in \u00f6rnek komut $action = New-ScheduledTaskAction -Execute \"PowerShell.exe\" -Argument \"-NoProfile -ExecutionPolicy Bypass -File 'C:\\Scripts\\InaktifKullaniciRaporu.ps1'\" $trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 8am Register-ScheduledTask -Action $action -Trigger $trigger -TaskName \"Microsoft 365 \u0130naktif Kullan\u0131c\u0131 Raporu\" -Description \"Her Pazartesi sabah 8'de Microsoft 365 inaktif kullan\u0131c\u0131 raporu olu\u015fturur\" <\/code><\/pre> <h3>\u00c7ok Fakt\u00f6rl\u00fc \u0130naktiflik De\u011ferlendirmesi<\/h3> Sadece son oturum a\u00e7ma tarihine g\u00f6re de\u011fil, ayn\u0131 zamanda: <ul> <li>E-posta kullan\u0131m istatistikleri<\/li> <li>Teams toplant\u0131 kat\u0131l\u0131mlar\u0131<\/li> <li>SharePoint\/OneDrive dosya eri\u015fimleri<\/li> <li>Microsoft 365 uygulamalar\u0131n\u0131n kullan\u0131m oranlar\u0131<\/li> <\/ul> gibi \u00e7e\u015fitli fakt\u00f6rleri de\u011ferlendirerek daha kapsaml\u0131 bir inaktiflik analizi yap\u0131n. <h2>Microsoft 365 \u0130naktif Kullan\u0131c\u0131 Y\u00f6netimi i\u00e7in Ek Kaynaklar<\/h2> <h3>Microsoft Lisans Maliyeti Hesaplay\u0131c\u0131<\/h3> Microsoft 365 lisans maliyetlerinizi hesaplamak ve optimizasyon f\u0131rsatlar\u0131n\u0131 belirlemek i\u00e7in Microsoft'un resmi <a href=\"https:\/\/www.microsoft.com\/tr-tr\/microsoft-365\/business\/compare-all-microsoft-365-business-products\">Lisans Maliyeti Hesaplay\u0131c\u0131s\u0131<\/a>'n\u0131 kullanabilirsiniz. <h3>PowerShell Betik Deposu<\/h3> Microsoft 365 y\u00f6netimi i\u00e7in daha fazla PowerShell beti\u011fine <a href=\"https:\/\/github.com\/microsoft\/Microsoft365DSC\">Microsoft 365 DSC<\/a> GitHub deposundan eri\u015febilirsiniz. <h3>Microsoft 365 G\u00fcvenlik Portal\u0131<\/h3> \u0130naktif hesaplar\u0131 g\u00fcvenlik perspektifinden de\u011ferlendirmek i\u00e7in <a href=\"https:\/\/security.microsoft.com\/\">Microsoft 365 G\u00fcvenlik Portal\u0131<\/a>'n\u0131 ziyaret edin. Microsoft 365 ortam\u0131n\u0131zdaki inaktif kullan\u0131c\u0131lar\u0131n d\u00fczenli olarak tespit edilmesi, raporlanmas\u0131 ve y\u00f6netilmesi, i\u015fletmenizin bulut maliyetlerini optimize etmesine, g\u00fcvenlik risklerini azaltmas\u0131na ve kaynaklar\u0131n\u0131 daha verimli kullanmas\u0131na olanak tan\u0131r. Bu yaz\u0131da payla\u015f\u0131lan PowerShell betikleri ve y\u00f6ntemler, Microsoft 365 y\u00f6neticilerine kapsaml\u0131 bir inaktif kullan\u0131c\u0131 y\u00f6netimi stratejisi olu\u015fturmalar\u0131 i\u00e7in gerekli ara\u00e7lar\u0131 sa\u011flamaktad\u0131r. \u0130naktif kullan\u0131c\u0131 raporunuzu olu\u015fturduktan sonra, mutlaka bir aksiyon plan\u0131 geli\u015ftirin ve bu plan\u0131 d\u00fczenli olarak uygulay\u0131n. Bu sayede, Microsoft 365 yat\u0131r\u0131m\u0131n\u0131zdan maksimum de\u011feri elde edebilir ve organizasyonunuzun dijital varl\u0131klar\u0131n\u0131 g\u00fcvende tutabilirsiniz.","excerpt":"Modern i\u015fletmelerde Microsoft 365 (eski ad\u0131yla Office 365) kullan\u0131m\u0131 giderek yayg\u0131nla\u015fmaktad\u0131r. Bu bulut tabanl\u0131 hizmet, lisans maliyetleri...","created_at":"2025-04-05 15:30:49","updated_at":"2026-09-23 13:45:32","category_id":6,"view_count":728,"reading_time":11,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-04-05 15:30:49","featured_image":"resimyok.jpg","slug":"microsoft-365-inaktif-kullanici-raporu-nasil-alinir","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":128,"title":"Robocopy","content":"Robocopy (Robust File Copy), Microsoft Windows i\u015fletim sistemlerinde bulunan, g\u00fc\u00e7l\u00fc ve esnek bir komut sat\u0131r\u0131 dosya kopyalama arac\u0131d\u0131r. \u0130lk olarak Windows Resource Kit'in bir par\u00e7as\u0131 olarak sunulan Robocopy, Windows Vista'dan itibaren i\u015fletim sisteminin standart bir bile\u015feni haline gelmi\u015ftir. Normal kopyalama komutlar\u0131n\u0131n (copy, xcopy) \u00f6tesinde, Robocopy \u00f6zellikle b\u00fcy\u00fck veri transferleri, a\u011f \u00fczerinden kopyalama ve kesintiye dayan\u0131kl\u0131 kopyalama i\u015flemleri i\u00e7in optimize edilmi\u015ftir. <h2>Neden Robocopy Kullanmal\u0131y\u0131z?<\/h2> Robocopy'nin standart dosya kopyalama ara\u00e7lar\u0131na g\u00f6re belirgin avantajlar\u0131 vard\u0131r: <ul> <li><strong>Kesintiye Dayan\u0131kl\u0131l\u0131k<\/strong>: A\u011f ba\u011flant\u0131s\u0131 kesildi\u011finde veya i\u015flem yar\u0131da kald\u0131\u011f\u0131nda, kopyalama i\u015flemine kald\u0131\u011f\u0131 yerden devam edebilir.<\/li> <li><strong>\u00c7oklu \u0130\u015f Par\u00e7ac\u0131\u011f\u0131 Deste\u011fi<\/strong>: Birden fazla dosyay\u0131 ayn\u0131 anda kopyalayarak i\u015flem s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde azaltabilir.<\/li> <li><strong>Geli\u015fmi\u015f Filtreleme<\/strong>: Dosya ad\u0131, boyut, tarih ve \u00f6zniteliklere g\u00f6re geli\u015fmi\u015f filtreleme sa\u011flar.<\/li> <li><strong>A\u011f Optimizasyonu<\/strong>: \u00d6zellikle a\u011f \u00fczerinden kopyalama i\u015flemleri i\u00e7in optimize edilmi\u015ftir.<\/li> <li><strong>Ayr\u0131nt\u0131l\u0131 Loglama<\/strong>: Kapsaml\u0131 kay\u0131t tutma \u00f6zellikleri sunar.<\/li> <li><strong>Dosya \u00d6zniteliklerini Koruma<\/strong>: NTFS izinleri, zaman damgalar\u0131 ve di\u011fer meta verileri korur.<\/li> <\/ul> <h2>Temel Kullan\u0131m<\/h2> Robocopy'nin temel s\u00f6zdizimi \u015fu \u015fekildedir: <pre><code>Robocopy &lt;Kaynak&gt; &lt;Hedef&gt; <\/code><\/pre> <h3>Basit \u00d6rnek<\/h3> Bir klas\u00f6r\u00fc t\u00fcm i\u00e7eri\u011fiyle birlikte kopyalamak i\u00e7in: <pre><code >Robocopy \"C:\\KaynakKlas\u00f6r\" \"D:\\HedefKlas\u00f6r\" \/E <\/code><\/pre> <code>\/E<\/code> parametresi, alt klas\u00f6rler dahil t\u00fcm i\u00e7eri\u011fi kopyalar. <h2>S\u0131k Kullan\u0131lan Parametreler<\/h2> <h3>Temel Kopyalama Parametreleri<\/h3> <ul> <li><code>\/E<\/code>: T\u00fcm alt klas\u00f6rleri kopyalar (bo\u015f olanlar dahil)<\/li> <li><code>\/S<\/code>: Alt klas\u00f6rleri kopyalar (bo\u015f olanlar hari\u00e7)<\/li> <li><code>\/COPYALL<\/code> veya <code>\/COPY:DATSOU<\/code>: T\u00fcm dosya bilgilerini kopyalar (Veri, \u00d6znitelikler, Zaman damgalar\u0131, G\u00fcvenlik, Kullan\u0131c\u0131 bilgisi, Denetim bilgisi)<\/li> <li><code>\/DCOPY:T<\/code>: Dizin zaman damgalar\u0131n\u0131 korur<\/li> <li><code>\/PURGE<\/code>: Hedefte var olan ancak kaynakta olmayan dosyalar\u0131 siler<\/li> <li><code>\/MIR<\/code>: Kayna\u011f\u0131 hedefle e\u015fle\u015ftirir (ayna kopyalama - <code>\/E<\/code> ve <code>\/PURGE<\/code> kombinasyonu)<\/li> <\/ul> <h3>Yeniden Deneme ve Dayan\u0131kl\u0131l\u0131k Parametreleri<\/h3> <ul> <li><code>\/Z<\/code>: Yeniden ba\u015flatma modunda kopyalar (kesintiye u\u011frarsa kald\u0131\u011f\u0131 yerden devam edebilir)<\/li> <li><code>\/ZB<\/code>: Yeniden ba\u015flatma modunda kopyalar, eri\u015fim reddedilirse yedekleme modunu kullan\u0131r<\/li> <li><code>\/R:n<\/code>: Ba\u015far\u0131s\u0131z kopyalamalar i\u00e7in yeniden deneme say\u0131s\u0131 (varsay\u0131lan: 1 milyon)<\/li> <li><code>\/W:n<\/code>: Yeniden denemeler aras\u0131nda beklenecek s\u00fcre (saniye)<\/li> <\/ul> <h3>Performans Parametreleri<\/h3> <ul> <li><code>\/MT<\/code>: \u00c7oklu i\u015f par\u00e7ac\u0131\u011f\u0131 kullan\u0131r (n: 1-128 aras\u0131, varsay\u0131lan: 8)<\/li> <li><code>\/J<\/code>: Tamponlanmam\u0131\u015f I\/O kullan\u0131r (\u00e7ok b\u00fcy\u00fck dosyalar i\u00e7in)<\/li> <li><code>\/LEV:n<\/code>: Sadece belirtilen seviyeye kadar olan dizinleri kopyalar<\/li> <\/ul> <h3>Filtreleme Parametreleri<\/h3> <ul> <li><code>\/XF dosya1 dosya2 ...<\/code>: Belirtilen dosyalar\u0131 hari\u00e7 tutar<\/li> <li><code>\/XD klas\u00f6r1 klas\u00f6r2 ...<\/code>: Belirtilen klas\u00f6rleri hari\u00e7 tutar<\/li> <li><code>\/IF<\/code>: Belirtilen dosyalar\u0131 i\u00e7erir<\/li> <li><code>\/XC<\/code>: De\u011fi\u015ftirilmi\u015f dosyalar\u0131 hari\u00e7 tutar<\/li> <li><code>\/XN<\/code>: Yeni dosyalar\u0131 hari\u00e7 tutar<\/li> <li><code>\/XO<\/code>: Eski dosyalar\u0131 hari\u00e7 tutar<\/li> <li><code>\/MAX:n<\/code>: Maksimum dosya boyutu - n bayt<\/li> <li><code>\/MIN:n<\/code>: Minimum dosya boyutu - n bayt<\/li> <li><code>\/MAXAGE:n<\/code>: Maksimum dosya ya\u015f\u0131 - n g\u00fcn\/tarih<\/li> <li><code>\/MINAGE:n<\/code>: Minimum dosya ya\u015f\u0131 - n g\u00fcn\/tarih<\/li> <\/ul> <h3>Loglama Parametreleri<\/h3> <ul> <li><code>\/LOG:dosya<\/code>: Detayl\u0131 i\u015flem kayd\u0131n\u0131 belirtilen dosyaya yazar<\/li> <li><code>\/LOG+:dosya<\/code>: Detayl\u0131 i\u015flem kayd\u0131n\u0131 belirtilen dosyaya ekler<\/li> <li><code>\/TEE<\/code>: Hem konsola hem de log dosyas\u0131na \u00e7\u0131kt\u0131 verir<\/li> <li><code>\/NP<\/code>: \u0130lerleme y\u00fczdesini g\u00f6stermez<\/li> <li><code>\/V<\/code>: Ayr\u0131nt\u0131l\u0131 \u00e7\u0131kt\u0131 g\u00f6sterir<\/li> <li><code>\/TS<\/code>: Zaman damgas\u0131 ile \u00e7\u0131kt\u0131 verir<\/li> <li><code>\/FP<\/code>: Tam dosya yolunu i\u00e7eren \u00e7\u0131kt\u0131 \u00fcretir<\/li> <\/ul> <h2>\u0130leri D\u00fczey Kullan\u0131m Senaryolar\u0131<\/h2> <h3>1. Ayna Kopyalama (Mirroring)<\/h3> Bir klas\u00f6r\u00fc ba\u015fka bir konuma tam olarak yans\u0131tmak i\u00e7in: <pre><code >Robocopy \"C:\\Kaynak\" \"D:\\Hedef\" \/MIR \/FFT \/Z \/XA:SH \/W:5 \/R:2 \/MT:32 <\/code><\/pre> Bu komut: <ul> <li><code>\/MIR<\/code>: Kaynak ve hedef klas\u00f6rleri tamamen e\u015fle\u015ftirir<\/li> <li><code>\/FFT<\/code>: FAT dosya zamanlar\u0131 i\u00e7in daha az hassas zaman damgas\u0131 kar\u015f\u0131la\u015ft\u0131rmas\u0131 yapar<\/li> <li><code>\/Z<\/code>: Yeniden ba\u015flatma modunda kopyalar<\/li> <li><code>\/XA:SH<\/code>: Sistem ve gizli dosyalar\u0131 hari\u00e7 tutar<\/li> <li><code>\/W:5<\/code>: Yeniden denemeler aras\u0131nda 5 saniye bekler<\/li> <li><code>\/R:2<\/code>: Ba\u015far\u0131s\u0131z kopyalamay\u0131 2 kez dener<\/li> <li><code>\/MT:32<\/code>: 32 i\u015f par\u00e7ac\u0131\u011f\u0131 kullan\u0131r<\/li> <\/ul> <h3>2. Sunucular Aras\u0131 Veri Aktar\u0131m\u0131<\/h3> Sunucular aras\u0131nda b\u00fcy\u00fck veri transferleri i\u00e7in: <pre><code >Robocopy \"\\\\SunucuA\\Payla\u015f\u0131m\" \"\\\\SunucuB\\Payla\u015f\u0131m\" \/E \/COPYALL \/DCOPY:DAT \/MT:16 \/Z \/R:3 \/W:10 \/LOG:\"C:\\Logs\\Transfer.log\" \/TEE <\/code><\/pre> Bu komut: <ul> <li><code>\/COPYALL<\/code>: T\u00fcm dosya bilgilerini kopyalar<\/li> <li><code>\/DCOPY:DAT<\/code>: Dizin zaman\u0131n\u0131, \u00f6zniteliklerini ve di\u011fer bilgileri kopyalar<\/li> <li><code>\/MT:16<\/code>: 16 i\u015f par\u00e7ac\u0131\u011f\u0131 kullan\u0131r<\/li> <li><code>\/LOG:\"C:\\Logs\\Transfer.log\"<\/code>: Transfer kayd\u0131n\u0131 belirtilen dosyaya yazar<\/li> <li><code>\/TEE<\/code>: Hem ekrana hem de log dosyas\u0131na \u00e7\u0131kt\u0131 verir<\/li> <\/ul> <h3>3. Yedekleme Senaryosu<\/h3> D\u00fczenli yedekleme i\u015flemleri i\u00e7in PowerShell script \u00f6rne\u011fi: <pre><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\">$Tarih = Get-Date -Format \"yyyy-MM-dd\" $KaynakYolu = \"C:\\\u00d6nemliVeriler\" $HedefYolu = \"D:\\Yedekler\\$Tarih\" $LogDosyas\u0131 = \"D:\\Yedekler\\Logs\\Yedek-$Tarih.log\" # Hedef klas\u00f6r\u00fc olu\u015ftur New-Item -ItemType Directory -Path $HedefYolu -Force | Out-Null # Robocopy ile yedekleme Robocopy $KaynakYolu $HedefYolu \/MIR \/B \/COPYALL \/DCOPY:DAT \/Z \/MT:8 \/R:5 \/W:15 \/LOG:$LogDosyas\u0131 \/TEE # Yedekleme durumunu kontrol et if ($LASTEXITCODE -lt 8) { Write-Host \"Yedekleme ba\u015far\u0131yla tamamland\u0131.\" -ForegroundColor Green } else { Write-Host \"Yedekleme s\u0131ras\u0131nda hatalar olu\u015ftu. L\u00fctfen log dosyas\u0131n\u0131 kontrol edin.\" -ForegroundColor Red }<\/pre> <pre><code ><\/code><\/pre> <pre><code >\u00a0<\/code><\/pre> Bu script: <ul> <li>Tarih tabanl\u0131 klas\u00f6r yap\u0131s\u0131 olu\u015fturur<\/li> <li><code>\/B<\/code>: Yedekleme modunda \u00e7al\u0131\u015f\u0131r (y\u00f6netici haklar\u0131 gerektirir)<\/li> <li>Robocopy \u00e7\u0131k\u0131\u015f kodunu kontrol ederek ba\u015far\u0131 durumunu de\u011ferlendirir<\/li> <\/ul> <h2>Robocopy \u00c7\u0131k\u0131\u015f Kodlar\u0131<\/h2> Robocopy, i\u015flemin sonucunu belirten \u00e7e\u015fitli \u00e7\u0131k\u0131\u015f kodlar\u0131 d\u00f6nd\u00fcr\u00fcr: <table> <thead> <tr> <th>De\u011fer<\/th> <th>Anlam\u0131<\/th> <\/tr> <\/thead> <tbody> <tr> <td>0<\/td> <td>\u0130\u015flem ba\u015far\u0131l\u0131, kopyalanacak dosya yok<\/td> <\/tr> <tr> <td>1<\/td> <td>\u0130\u015flem ba\u015far\u0131l\u0131, dosyalar kopyaland\u0131<\/td> <\/tr> <tr> <td>2<\/td> <td>\u0130\u015flem ba\u015far\u0131l\u0131, ekstra dosyalar veya klas\u00f6rler bulundu<\/td> <\/tr> <tr> <td>3<\/td> <td>\u0130\u015flem ba\u015far\u0131l\u0131, baz\u0131 dosyalar e\u015fle\u015fmiyor<\/td> <\/tr> <tr> <td>4<\/td> <td>\u0130\u015flem ba\u015far\u0131l\u0131, baz\u0131 e\u015fle\u015fmeyen dosyalar ve ekstra dosyalar var<\/td> <\/tr> <tr> <td>5<\/td> <td>\u0130\u015flem ba\u015far\u0131l\u0131, baz\u0131 dosyalar kopyaland\u0131, baz\u0131 dosyalar ba\u015far\u0131s\u0131z<\/td> <\/tr> <tr> <td>6<\/td> <td>\u0130\u015flem ba\u015far\u0131l\u0131, ek dosyalar ve e\u015fle\u015fmeyen dosyalar var, baz\u0131 dosyalar ba\u015far\u0131s\u0131z<\/td> <\/tr> <tr> <td>7<\/td> <td>\u0130\u015flem ba\u015far\u0131l\u0131, dosyalar kopyaland\u0131, ekstra dosyalar var, baz\u0131 dosyalar ba\u015far\u0131s\u0131z<\/td> <\/tr> <tr> <td>8<\/td> <td>\u0130\u015flem ba\u015far\u0131s\u0131z, baz\u0131 dosyalar kopyaland\u0131<\/td> <\/tr> <tr> <td>16<\/td> <td>\u0130\u015flem ciddi hata ile ba\u015far\u0131s\u0131z oldu<\/td> <\/tr> <\/tbody> <\/table> <h2>\u0130yi Uygulama \u00d6rnekleri<\/h2> <h3>1. B\u00fcy\u00fck Dosya Transferleri<\/h3> \u00c7ok b\u00fcy\u00fck dosyalar\u0131 (&gt;2GB) kopyalarken: <pre><code >Robocopy \"C:\\B\u00fcy\u00fckDosyalar\" \"D:\\HedefKlas\u00f6r\" \/J \/MT:4 \/Z <\/code><\/pre> <code>\/J<\/code> parametresi, tamponlanmam\u0131\u015f I\/O kullanarak b\u00fcy\u00fck dosya kopyalamalar\u0131n\u0131 optimize eder. <h3>2. S\u00fcrekli Senkronizasyon<\/h3> Belirli aral\u0131klarla klas\u00f6rleri senkronize etmek i\u00e7in bir PowerShell d\u00f6ng\u00fcs\u00fc: <pre><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\">while ($true) { $Timestamp = Get-Date -Format \"yyyy-MM-dd HH:mm:ss\" Write-Host \"$Timestamp - Senkronizasyon ba\u015flat\u0131l\u0131yor...\" Robocopy \"C:\\KaynakVeri\" \"D:\\YedekVeri\" \/MIR \/MT:8 \/Z \/W:5 \/R:2 \/LOG:\"C:\\Logs\\Sync-$(Get-Date -Format 'yyyy-MM-dd').log\" \/NP Write-Host \"Bir sonraki senkronizasyon i\u00e7in 30 dakika bekleniyor...\" Start-Sleep -Seconds 1800 }<\/pre> <pre><code ><\/code><\/pre> &nbsp; <pre><code ><\/code><\/pre> <h3>3. \u0130zinleri Koruma<\/h3> NTFS izinlerini koruyarak dosya aktar\u0131m\u0131: <pre><code >Robocopy \"C:\\Kaynak\" \"D:\\Hedef\" \/E \/COPY:DATS \/SECFIX \/TIMFIX <\/code><\/pre> <ul> <li><code>\/COPY:DATS<\/code>: Veri, \u00f6znitelikler, zaman damgalar\u0131 ve g\u00fcvenlik bilgilerini kopyalar<\/li> <li><code>\/SECFIX<\/code>: T\u00fcm dosyalar\u0131n g\u00fcvenlik bilgilerini d\u00fczeltir<\/li> <li><code>\/TIMFIX<\/code>: T\u00fcm dosyalar\u0131n zaman damgalar\u0131n\u0131 d\u00fczeltir<\/li> <\/ul> <h2>Genel \u0130pu\u00e7lar\u0131 ve P\u00fcf Noktalar\u0131<\/h2> <ol> <li><strong>Test \u00c7al\u0131\u015ft\u0131rmas\u0131<\/strong>: Ger\u00e7ek kopyalama i\u015fleminden \u00f6nce <code>\/L<\/code> parametresi ile \"listeleme modunda\" test edin: <pre><code >Robocopy \"C:\\Kaynak\" \"D:\\Hedef\" \/MIR \/L <\/code><\/pre> <\/li> <li><strong>\u00c7\u0131k\u0131\u015f Kodlar\u0131n\u0131 Anlama<\/strong>: PowerShell'de <code>$LASTEXITCODE<\/code> de\u011fi\u015fkeni ile Robocopy'nin \u00e7\u0131k\u0131\u015f kodunu kontrol edin. 8'den k\u00fc\u00e7\u00fck de\u011ferler genellikle ba\u015far\u0131l\u0131 say\u0131l\u0131r.<\/li> <li><strong>A\u011f Bant Geni\u015fli\u011fi Kontrol\u00fc<\/strong>: A\u011f kullan\u0131m\u0131n\u0131 kontrol etmek i\u00e7in <code>\/IPG:n<\/code> parametresi ile paketler aras\u0131nda gecikme ekleyin.<\/li> <li><strong>H\u0131z Limitleri<\/strong>: Resmi olarak bir h\u0131z s\u0131n\u0131rlama parametresi olmasa da, <code>\/IPG<\/code> ve <code>\/MT<\/code> parametrelerini ayarlayarak kopyalama h\u0131z\u0131n\u0131 kontrol edebilirsiniz.<\/li> <li><strong>UAC K\u0131s\u0131tlamalar\u0131<\/strong>: Y\u00f6netici haklar\u0131n\u0131 gerektiren i\u015flemler i\u00e7in y\u00fckseltilmi\u015f komut sat\u0131r\u0131 veya PowerShell penceresi kullan\u0131n.<\/li> <\/ol> <h2>PowerShell ile Robocopy Kullan\u0131m\u0131<\/h2> PowerShell, Robocopy komutlar\u0131n\u0131 daha esnek ve programlanabilir hale getirir: <pre><code ><\/code><\/pre> <pre  data-enlighter-language=\"python\">function Start-RobustCopy { param ( $Source, $Destination, ]$ExcludeFolders, ]$ExcludeFiles, $Mirror, $Threads = 8, $LogPath ) $RobocopyArgs = @( \"`\"$Source`\"\", \"`\"$Destination`\"\", \"\/E\", \"\/Z\", \"\/R:3\", \"\/W:5\", \"\/MT:$Threads\" ) if ($Mirror) { $RobocopyArgs += \"\/MIR\" } if ($ExcludeFolders) { $RobocopyArgs += \"\/XD\" $ExcludeFolders | ForEach-Object { $RobocopyArgs += \"`\"$_`\"\" } } if ($ExcludeFiles) { $RobocopyArgs += \"\/XF\" $ExcludeFiles | ForEach-Object { $RobocopyArgs += \"`\"$_`\"\" } } if ($LogPath) { $RobocopyArgs += \"\/LOG:`\"$LogPath`\"\" $RobocopyArgs += \"\/TEE\" } Write-Host \"Robocopy komutu \u00e7al\u0131\u015ft\u0131r\u0131l\u0131yor...\" -ForegroundColor Cyan $Process = Start-Process -FilePath \"Robocopy\" -ArgumentList $RobocopyArgs -NoNewWindow -PassThru -Wait switch ($Process.ExitCode) { { $_ -lt 8 } { Write-Host \"\u0130\u015flem ba\u015far\u0131yla tamamland\u0131 (Kod: $($Process.ExitCode))\" -ForegroundColor Green } default { Write-Host \"\u0130\u015flem hatayla sonu\u00e7land\u0131 (Kod: $($Process.ExitCode))\" -ForegroundColor Red } } return $Process.ExitCode } # Fonksiyon kullan\u0131m \u00f6rne\u011fi Start-RobustCopy -Source \"C:\\Veriler\" -Destination \"D:\\Yedek\" -Mirror -ExcludeFolders \"C:\\Veriler\\Temp\", \"C:\\Veriler\\Logs\" -LogPath \"C:\\Logs\\RobocopyTransfer.log\"<\/pre> <pre><code ><\/code><\/pre> &nbsp; <pre><code ># Fonksiyon kullan\u0131m \u00f6rne\u011fi Start-RobustCopy -Source \"C:\\Veriler\" -Destination \"D:\\Yedek\" -Mirror -ExcludeFolders \"C:\\Veriler\\Temp\", \"C:\\Veriler\\Logs\" -LogPath \"C:\\Logs\\RobocopyTransfer.log\" <\/code><\/pre> Bu fonksiyon, Robocopy'nin s\u0131k kullan\u0131lan parametrelerini daha kullan\u0131c\u0131 dostu bir PowerShell aray\u00fcz\u00fc ile sunar. <h2>Robocopy vs. Di\u011fer Ara\u00e7lar<\/h2> <table> <thead> <tr> <th>\u00d6zellik<\/th> <th>Robocopy<\/th> <th>XCOPY<\/th> <th>PowerShell Copy-Item<\/th> <th>\u00dc\u00e7\u00fcnc\u00fc Parti Yaz\u0131l\u0131mlar<\/th> <\/tr> <\/thead> <tbody> <tr> <td>Kesintiye Dayan\u0131kl\u0131l\u0131k<\/td> <td>\u2713<\/td> <td>\u2717<\/td> <td>K\u0131s\u0131tl\u0131<\/td> <td>Genellikle \u2713<\/td> <\/tr> <tr> <td>\u00c7oklu \u0130\u015f Par\u00e7ac\u0131\u011f\u0131<\/td> <td>\u2713<\/td> <td>\u2717<\/td> <td>\u2717<\/td> <td>\u00c7o\u011funlukla \u2713<\/td> <\/tr> <tr> <td>NTFS \u0130zinleri<\/td> <td>\u2713<\/td> <td>K\u0131s\u0131tl\u0131<\/td> <td>K\u0131s\u0131tl\u0131<\/td> <td>\u00c7o\u011funlukla \u2713<\/td> <\/tr> <tr> <td>Ayna Kopyalama<\/td> <td>\u2713<\/td> <td>\u2717<\/td> <td>Script ile<\/td> <td>Genellikle \u2713<\/td> <\/tr> <tr> <td>Filtreleme Se\u00e7enekleri<\/td> <td>\u00c7ok Kapsaml\u0131<\/td> <td>Temel<\/td> <td>Orta<\/td> <td>De\u011fi\u015fken<\/td> <\/tr> <tr> <td>Kullan\u0131m Kolayl\u0131\u011f\u0131<\/td> <td>Komut Sat\u0131r\u0131<\/td> <td>Basit<\/td> <td>PowerShell Bilgisi Gerekiyor<\/td> <td>Genellikle GUI<\/td> <\/tr> <tr> <td>Entegrasyon\/Otomasyon<\/td> <td>M\u00fckemmel<\/td> <td>K\u0131s\u0131tl\u0131<\/td> <td>M\u00fckemmel<\/td> <td>De\u011fi\u015fken<\/td> <\/tr> <\/tbody> <\/table> <h2>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h2> <h3>1. \"Yetersiz Eri\u015fim Haklar\u0131\" Sorunu<\/h3> <strong>Sorun<\/strong>: \"Access is denied\" (Eri\u015fim reddedildi) hatalar\u0131. <strong>\u00c7\u00f6z\u00fcm<\/strong>: Yedekleme modunda \u00e7al\u0131\u015ft\u0131r\u0131n: <pre><code >Robocopy \"C:\\Kaynak\" \"D:\\Hedef\" \/B \/E <\/code><\/pre> Veya hem Yedekleme hem de Yeniden Ba\u015flatma modunu birlikte kullan\u0131n: <pre><code >Robocopy \"C:\\Kaynak\" \"D:\\Hedef\" \/ZB \/E <\/code><\/pre> <h3>2. \"Dosya Kullan\u0131mda\" Sorunu<\/h3> <strong>Sorun<\/strong>: Kilitli veya kullan\u0131mda olan dosyalar\u0131 kopyalayamama. <strong>\u00c7\u00f6z\u00fcm<\/strong>: <code>\/R<\/code> ve <code>\/W<\/code> parametrelerini ayarlay\u0131n ve \u00e7ok say\u0131da yeniden deneme yapmas\u0131n\u0131 sa\u011flay\u0131n: <pre><code >Robocopy \"C:\\Kaynak\" \"D:\\Hedef\" \/R:10 \/W:30 <\/code><\/pre> <h3>3. Uzun Dosya Yolu S\u0131n\u0131rlamalar\u0131<\/h3> <strong>Sorun<\/strong>: 260 karakterden uzun dosya yollar\u0131nda \"Path too long\" hatas\u0131. <strong>\u00c7\u00f6z\u00fcm<\/strong>: Uzun yol deste\u011fini a\u00e7\u0131n (Windows 10\/11): <pre><code ># Registry ayar\u0131n\u0131 de\u011fi\u015ftirme Set-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" -Name \"LongPathsEnabled\" -Value 1 -Type DWord <\/code><\/pre> Sonra <code>\/256<\/code> parametresi ile Robocopy'yi \u00e7al\u0131\u015ft\u0131r\u0131n: <pre><code >Robocopy \"C:\\Kaynak\" \"D:\\Hedef\" \/E \/256 <\/code><\/pre> <h2>Robocopy Performans Optimizasyonu<\/h2> <h3>1. \u0130\u015f Par\u00e7ac\u0131\u011f\u0131 Say\u0131s\u0131n\u0131 Optimize Etme<\/h3> Optimum i\u015f par\u00e7ac\u0131\u011f\u0131 say\u0131s\u0131, sisteminizin \u00f6zellikleri ve dosya yap\u0131n\u0131za ba\u011fl\u0131d\u0131r: <ul> <li><strong>\u00c7ok say\u0131da k\u00fc\u00e7\u00fck dosya<\/strong>: Y\u00fcksek i\u015f par\u00e7ac\u0131\u011f\u0131 say\u0131s\u0131 kullan\u0131n (16-32) <pre><code >Robocopy \"C:\\K\u00fc\u00e7\u00fck_Dosyalar\" \"D:\\Hedef\" \/MT:32 <\/code><\/pre> <\/li> <li><strong>Az say\u0131da b\u00fcy\u00fck dosya<\/strong>: Daha d\u00fc\u015f\u00fck i\u015f par\u00e7ac\u0131\u011f\u0131 say\u0131s\u0131 kullan\u0131n (4-8) <pre><code >Robocopy \"C:\\B\u00fcy\u00fck_Dosyalar\" \"D:\\Hedef\" \/MT:4 \/J <\/code><\/pre> <\/li> <\/ul> <h3>2. Kopyalama \u00d6nceli\u011fini Ayarlama<\/h3> Robocopy'nin sistem kaynaklar\u0131n\u0131 kullanma \u00f6nceli\u011fini ayarlayabilirsiniz: <pre><code >Start-Process -FilePath \"Robocopy\" -ArgumentList \"C:\\Kaynak D:\\Hedef \/E\" -Priority BelowNormal <\/code><\/pre> \u00d6ncelik de\u011ferleri: Normal, AboveNormal, BelowNormal, High, RealTime <h3>3. A\u011f Optimizasyonlar\u0131<\/h3> A\u011f \u00fczerinden b\u00fcy\u00fck veri transferleri i\u00e7in: <pre><code >Robocopy \"\\\\SunucuA\\Payla\u015f\u0131m\" \"\\\\SunucuB\\Payla\u015f\u0131m\" \/E \/Z \/MT:8 \/IPG:1000 <\/code><\/pre> <code>\/IPG:1000<\/code> parametresi, paketler aras\u0131nda 1000 milisaniye (1 saniye) gecikme ekleyerek a\u011f \u00fczerindeki y\u00fck\u00fc azalt\u0131r. Robocopy, \u00f6zellikle b\u00fcy\u00fck veri transferleri, sunucular aras\u0131 kopyalama ve otomatik yedekleme i\u015flemleri i\u00e7in Windows ortam\u0131nda mevcut en g\u00fc\u00e7l\u00fc dosya kopyalama arac\u0131d\u0131r. Geli\u015fmi\u015f parametreleri ve esnekli\u011fi sayesinde, basit kopyalama komutlar\u0131n\u0131n yetersiz kald\u0131\u011f\u0131 senaryolarda m\u00fckemmel bir \u00e7\u00f6z\u00fcm sunar. Do\u011fru parametrelerle kullan\u0131ld\u0131\u011f\u0131nda, Robocopy: <ul> <li>Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flar<\/li> <li>Sistem ve a\u011f kaynaklar\u0131n\u0131 verimli kullan\u0131r<\/li> <li>B\u00fcy\u00fck ve karma\u015f\u0131k dosya yap\u0131lar\u0131n\u0131 g\u00fcvenilir \u015fekilde kopyalar<\/li> <li>BT y\u00f6neticileri ve sistem uzmanlar\u0131 i\u00e7in otomasyona uygun bir ara\u00e7 olarak hizmet eder<\/li> <\/ul> PowerShell ile entegre edildi\u011finde, Robocopy'nin yetenekleri daha da g\u00fc\u00e7lenir ve kurumsal d\u00fczeyde veri y\u00f6netimi i\u00e7in ideal bir \u00e7\u00f6z\u00fcm haline gelir.","excerpt":"Robocopy (Robust File Copy), Microsoft Windows i\u015fletim sistemlerinde bulunan, g\u00fc\u00e7l\u00fc ve esnek bir komut sat\u0131r\u0131 dosya kopyalama arac\u0131d\u0131r. \u0130lk...","created_at":"2025-04-05 12:08:31","updated_at":"2026-09-23 13:43:17","category_id":6,"view_count":637,"reading_time":10,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-04-05 12:08:31","featured_image":"resimyok.jpg","slug":"robocopy-windowsun-guclu-dosya-kopyalama-araci","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":144,"title":"Windows Server'da T\u00fcm Kullan\u0131c\u0131lara Masa\u00fcst\u00fc K\u0131sayolu Ekleme","content":"Bir a\u011f ortam\u0131nda y\u00f6netici olarak \u00e7al\u0131\u015f\u0131yorsan\u0131z, kullan\u0131c\u0131lar\u0131n\u0131z\u0131n \u00f6nemli uygulamalara h\u0131zl\u0131 eri\u015fim sa\u011flamas\u0131n\u0131 isteyebilirsiniz. Bu yaz\u0131mda, Windows Server ortam\u0131nda t\u00fcm kullan\u0131c\u0131lar\u0131n masa\u00fcst\u00fcne otomatik olarak k\u0131sayol eklemenin birka\u00e7 farkl\u0131 yolunu inceleyece\u011fiz. <h2>Neden Public Desktop?<\/h2> Bir Windows sunucusunda birden fazla kullan\u0131c\u0131 hesab\u0131 bulunabilir. Her kullan\u0131c\u0131 i\u00e7in ayr\u0131 ayr\u0131 k\u0131sayol olu\u015fturmak yerine, <strong>Public Desktop<\/strong> klas\u00f6r\u00fcn\u00fc kullanarak tek bir k\u0131sayol ile t\u00fcm kullan\u0131c\u0131lar\u0131n eri\u015fimini sa\u011flayabilirsiniz. Bu yakla\u015f\u0131m, \u00f6zellikle Remote Desktop Services (Terminal Sunucular\u0131) gibi payla\u015f\u0131ml\u0131 ortamlarda \u00e7ok i\u015fe yarar. Public Desktop klas\u00f6r\u00fc genellikle \u015fu konumda bulunur: <code>C:\\Users\\Public\\Desktop<\/code> <h2>PowerShell ile K\u0131sayol Olu\u015fturma<\/h2> PowerShell, k\u0131sayol olu\u015fturma i\u015flemini otomatikle\u015ftirmek i\u00e7in harika bir ara\u00e7t\u0131r. \u0130\u015fte, istedi\u011finiz bir uygulaman\u0131n k\u0131sayolunu t\u00fcm kullan\u0131c\u0131lar i\u00e7in olu\u015fturan basit bir PowerShell beti\u011fi: <pre><code ># Y\u00f6netici haklar\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131lmal\u0131d\u0131r #Requires -RunAsAdministrator $shortcutName = \"Uygulama Ad\u0131.lnk\" $targetPath = \"C:\\Program\\Uygulama.exe\" $iconLocation = \"$targetPath,0\" # Public Desktop konumunu al $publicDesktop = ::GetFolderPath(\"CommonDesktopDirectory\") $shortcutPath = Join-Path -Path $publicDesktop -ChildPath $shortcutName try { # K\u0131sayol olu\u015ftur $WshShell = New-Object -ComObject WScript.Shell $Shortcut = $WshShell.CreateShortcut($shortcutPath) $Shortcut.TargetPath = $targetPath $Shortcut.IconLocation = $iconLocation $Shortcut.Description = \"Uygulama A\u00e7\u0131klamas\u0131\" $Shortcut.WorkingDirectory = Split-Path $targetPath -Parent $Shortcut.Save() Write-Host \"K\u0131sayol ba\u015far\u0131yla olu\u015fturuldu: $shortcutPath\" -ForegroundColor Green } catch { Write-Host \"K\u0131sayol olu\u015fturma hatas\u0131: $_\" -ForegroundColor Red } <\/code><\/pre> <h2>Yayg\u0131n Hata: Yetkisiz Eri\u015fim (Unauthorized Access)<\/h2> Beti\u011fi \u00e7al\u0131\u015ft\u0131r\u0131rken en s\u0131k kar\u015f\u0131la\u015f\u0131lan sorun \"Unauthorized Access Exception\" hatas\u0131d\u0131r. Beti\u011fin \u00e7\u0131kt\u0131s\u0131 \u015f\u00f6yle g\u00f6r\u00fcnebilir: <pre><code>Unable to save shortcut \"C:\\Users\\Public\\Desktop\\Uygulama Ad\u0131.lnk\". At line:17 char:1 + $Shortcut.Save() + ~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) , UnauthorizedAccessException + FullyQualifiedErrorId : System.UnauthorizedAccessException <\/code><\/pre> <h3>\u00c7\u00f6z\u00fcm 1: Y\u00f6netici Olarak \u00c7al\u0131\u015ft\u0131rma<\/h3> Bu hatan\u0131n en yayg\u0131n \u00e7\u00f6z\u00fcm\u00fc, PowerShell'i Y\u00f6netici olarak \u00e7al\u0131\u015ft\u0131rmakt\u0131r: <ol> <li>PowerShell k\u0131sayoluna sa\u011f t\u0131klay\u0131n<\/li> <li>\"Y\u00f6netici olarak \u00e7al\u0131\u015ft\u0131r\" se\u00e7ene\u011fini se\u00e7in<\/li> <li>Beti\u011fi \u00e7al\u0131\u015ft\u0131r\u0131n<\/li> <\/ol> <h3>\u00c7\u00f6z\u00fcm 2: Beti\u011fi G\u00fc\u00e7lendirme<\/h3> Betik i\u00e7inde y\u00f6netici kontrol\u00fc ekleyerek hata mesajlar\u0131n\u0131 daha a\u00e7\u0131klay\u0131c\u0131 hale getirebilirsiniz: <pre><code >#Requires -RunAsAdministrator # Veya \u015fu kontrol\u00fc ekleyin if (-NOT (::GetCurrent()).IsInRole( \"Administrator\")) { Write-Warning \"Bu betik y\u00f6netici izinleri gerektirir. L\u00fctfen PowerShell'i 'Y\u00f6netici olarak \u00e7al\u0131\u015ft\u0131r' se\u00e7ene\u011fi ile ba\u015flat\u0131n.\" Break } <\/code><\/pre> <h2>Ger\u00e7ek D\u00fcnya \u00d6rne\u011fi: Edge uygulamas\u0131<\/h2> \u00d6rnek olarak, \"Edge\" adl\u0131 uygulaman\u0131n k\u0131sayolunu t\u00fcm kullan\u0131c\u0131lar i\u00e7in olu\u015fturmak istedi\u011fimizi d\u00fc\u015f\u00fcnelim. \u0130\u015fte tam betik: <pre><code >#Requires -RunAsAdministrator $shortcutName = \"Edge.lnk\" $targetPath = \"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe\" $iconLocation = \"$targetPath,0\" # Uygulaman\u0131n kendi ikonunu kullan\u0131r # Y\u00f6netici haklar\u0131n\u0131 kontrol et if (-NOT (::GetCurrent()).IsInRole( \"Administrator\")) { Write-Warning \"Bu betik y\u00f6netici izinleri gerektirir. L\u00fctfen PowerShell'i 'Y\u00f6netici olarak \u00e7al\u0131\u015ft\u0131r' se\u00e7ene\u011fi ile ba\u015flat\u0131n.\" Break } # Public Desktop konumunu al $publicDesktop = ::GetFolderPath(\"CommonDesktopDirectory\") $shortcutPath = Join-Path -Path $publicDesktop -ChildPath $shortcutName try { # K\u0131sayol olu\u015ftur $WshShell = New-Object -ComObject WScript.Shell $Shortcut = $WshShell.CreateShortcut($shortcutPath) $Shortcut.TargetPath = $targetPath $Shortcut.IconLocation = $iconLocation $Shortcut.Description = \"Edge\" $Shortcut.WorkingDirectory = Split-Path $targetPath -Parent $Shortcut.Save() Write-Host \"K\u0131sayol ba\u015far\u0131yla olu\u015fturuldu: $shortcutPath\" -ForegroundColor Green } catch { Write-Host \"K\u0131sayol olu\u015fturma hatas\u0131: $_\" -ForegroundColor Red } <\/code><\/pre> <h2>Alternatif Y\u00f6ntemler<\/h2> <h3>Group Policy Kullan\u0131m\u0131<\/h3> Daha b\u00fcy\u00fck ortamlarda, k\u0131sayollar\u0131 Group Policy ile da\u011f\u0131tmak daha verimli olabilir: <ol> <li>Group Policy Management konsolunu a\u00e7\u0131n<\/li> <li>Bir GPO olu\u015fturun veya d\u00fczenleyin<\/li> <li>\"User Configuration\" &gt; \"Preferences\" &gt; \"Windows Settings\" &gt; \"Shortcuts\" b\u00f6l\u00fcm\u00fcne gidin<\/li> <li>Sa\u011f t\u0131klay\u0131p \"New\" &gt; \"Shortcut\" se\u00e7in<\/li> <li>K\u0131sayol \u00f6zelliklerini ayarlay\u0131n<\/li> <\/ol> <h3>Oturum A\u00e7ma Beti\u011fi Kullan\u0131m\u0131<\/h3> Kullan\u0131c\u0131lar oturum a\u00e7t\u0131\u011f\u0131nda \u00e7al\u0131\u015facak bir betik haz\u0131rlayabilirsiniz: <ol> <li>Beti\u011fi bir a\u011f payla\u015f\u0131m\u0131nda saklay\u0131n<\/li> <li>Group Policy ile oturum a\u00e7ma beti\u011fi olarak ayarlay\u0131n (User Configuration &gt; Windows Settings &gt; Scripts &gt; Logon)<\/li> <\/ol> <h2>Bilgisayar Ba\u015flang\u0131c\u0131nda \u00c7al\u0131\u015ft\u0131rma<\/h2> K\u0131sayol olu\u015fturma beti\u011finizi bilgisayar ba\u015flang\u0131c\u0131nda otomatik olarak \u00e7al\u0131\u015ft\u0131rmak i\u00e7in G\u00f6rev Zamanlay\u0131c\u0131 kullanabilirsiniz: <ol> <li>G\u00f6rev Zamanlay\u0131c\u0131'y\u0131 a\u00e7\u0131n (taskschd.msc)<\/li> <li>\"Temel G\u00f6rev Olu\u015ftur\" t\u0131klay\u0131n<\/li> <li>G\u00f6reve bir isim verin, \u00f6rn: \"PublicDesktopKisayolOlustur\"<\/li> <li>Tetikleyici olarak \"Ba\u015flang\u0131\u00e7ta\" se\u00e7in<\/li> <li>Eylem olarak \"Program ba\u015flat\" se\u00e7in<\/li> <li>Program\/betik alan\u0131na: <code>powershell.exe<\/code><\/li> <li>Parametreler alan\u0131na: <code>-ExecutionPolicy Bypass -File \"C:\\Scripts\\KisayolOlustur.ps1\"<\/code><\/li> <li>\"Son\" d\u00fc\u011fmesine t\u0131klay\u0131n<\/li> <\/ol> <h2><\/h2> Windows Server ortam\u0131nda t\u00fcm kullan\u0131c\u0131lar\u0131n masa\u00fcst\u00fcne k\u0131sayol eklemek, Public Desktop klas\u00f6r\u00fcn\u00fc kullanarak olduk\u00e7a kolayd\u0131r. Bu y\u00f6ntem, \u00f6zellikle Remote Desktop Services ortamlar\u0131nda kullan\u0131c\u0131lara \u00f6nemli uygulamalara h\u0131zl\u0131 eri\u015fim sa\u011flar. Kar\u015f\u0131la\u015fabilece\u011finiz en yayg\u0131n sorun yetkilendirme hatas\u0131 olacakt\u0131r, bu nedenle beti\u011fi her zaman y\u00f6netici olarak \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun. Daha b\u00fcy\u00fck a\u011flarda ise Group Policy kullan\u0131m\u0131 daha verimli bir \u00e7\u00f6z\u00fcm sunabilir. <hr \/> <em>Bu yaz\u0131y\u0131 faydal\u0131 buldunuz mu? Yorumlar\u0131n\u0131z\u0131 a\u015fa\u011f\u0131da payla\u015f\u0131n ve di\u011fer Windows Server y\u00f6netim ipu\u00e7lar\u0131 i\u00e7in blogumuzu takip etmeyi unutmay\u0131n!<\/em>","excerpt":"Bir a\u011f ortam\u0131nda y\u00f6netici olarak \u00e7al\u0131\u015f\u0131yorsan\u0131z, kullan\u0131c\u0131lar\u0131n\u0131z\u0131n \u00f6nemli uygulamalara h\u0131zl\u0131 eri\u015fim sa\u011flamas\u0131n\u0131...","created_at":"2025-03-28 15:42:17","updated_at":"2026-09-23 12:28:56","category_id":8,"view_count":843,"reading_time":5,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-03-28 15:42:17","featured_image":"resimyok.jpg","slug":"756-2","category_name":"Active Directory \/Azure","category_slug":"active-directory-azure","category_color":"#f59e0b"},{"id":265,"title":"Exchange Online PowerShell\u2019e Nas\u0131l Ba\u011flan\u0131l\u0131r?","content":"<p>Exchange Online, Microsoft 365'in g&uuml;&ccedil;l&uuml; e-posta ve i\u015fbirli\u011fi &ccedil;&ouml;z&uuml;m&uuml;d&uuml;r. Y&ouml;neticiler i&ccedil;in PowerShell &uuml;zerinden y&ouml;netim kritik &ouml;nem ta\u015f\u0131r. Bu rehberde, Exchange Online PowerShell'e nas\u0131l ba\u011flanaca\u011f\u0131n\u0131z\u0131 ve temel y&ouml;netim i\u015flemlerini nas\u0131l ger&ccedil;ekle\u015ftirece\u011finizi &ouml;\u011freneceksiniz. &Ouml;n Gereksinimler Exchange Online PowerShell'i kullanmaya ba\u015flamadan &ouml;nce \u015funlara ihtiyac\u0131n\u0131z olacak: - Windows PowerShell 5.1 veya &uuml;zeri (ISE dahil) - Exchange Online y&ouml;netici hesab\u0131 (Global Admin veya Exchange Admin rol&uuml;) - Stabil internet ba\u011flant\u0131s\u0131 - Y&ouml;netici (Administrator) yetkileri (mod&uuml;l y&uuml;klemek i&ccedil;in) - Modern Authentication deste\u011fi (MFA gerekiyorsa) Exchange Online Management Mod&uuml;l&uuml;n&uuml;n Kurulumu 1. PowerShell'i Y&ouml;netici Olarak A&ccedil;\u0131n - Windows arama &ccedil;ubu\u011funa \"PowerShell\" yaz\u0131n - \"Windows PowerShell\"e sa\u011f t\u0131klay\u0131n - \"Y&ouml;netici olarak &ccedil;al\u0131\u015ft\u0131r\"\u0131 se&ccedil;in 2. Exchange Online Mod&uuml;l&uuml;n&uuml; Y&uuml;kleyin powershell<\/p>\r\n<pre data-enlighter-language=\"generic\">Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber<\/pre>\r\n<p>&nbsp; G&uuml;venilmeyen depo uyar\u0131s\u0131 al\u0131rsan\u0131z, mod&uuml;l y&uuml;klemek i&ccedil;in A tu\u015funa bas\u0131n. 3. Mod&uuml;l&uuml;n Kurulumunu Do\u011frulay\u0131n powershell<\/p>\r\n<pre data-enlighter-language=\"generic\">Get-Module ExchangeOnlineManagement -ListAvailable | Select Name,Version<\/pre>\r\n<p>&nbsp; Exchange Online'a Ba\u011flanma Temel Ba\u011flant\u0131 Y&ouml;ntemi (Modern Auth) powershell<\/p>\r\n<pre data-enlighter-language=\"generic\">Connect-ExchangeOnline -UserPrincipalName admin@firma.com -ShowProgress $true<\/pre>\r\n<p>&nbsp; Bu komut sizi MFA do\u011frulama ekran\u0131na y&ouml;nlendirecektir. Alternatif Ba\u011flant\u0131 Se&ccedil;enekleri Kimlik bilgileriyle ba\u011flant\u0131: powershell<\/p>\r\n<pre data-enlighter-language=\"generic\">$cred = Get-Credential Connect-ExchangeOnline -Credential $cred<\/pre>\r\n<p>&nbsp; Belirli bir ortam i&ccedil;in ba\u011flant\u0131: powershell<\/p>\r\n<pre data-enlighter-language=\"generic\">Connect-ExchangeOnline -UserPrincipalName admin@firma.com -ExchangeEnvironmentName O365WorldWide<\/pre>\r\n<p>&nbsp; Ba\u011flant\u0131y\u0131 Do\u011frulama Ba\u011flant\u0131n\u0131n ba\u015far\u0131l\u0131 oldu\u011funu kontrol etmek i&ccedil;in: powershell<\/p>\r\n<pre data-enlighter-language=\"generic\">Get-EXOMailbox -ResultSize 1<\/pre>\r\n<p>&nbsp; S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve &Ccedil;&ouml;z&uuml;mleri 1. Kimlik Do\u011frulama Hatas\u0131 powershell &Ouml;nbelle\u011fi temizleme<\/p>\r\n<pre data-enlighter-language=\"generic\">Remove-Item \"$env:USERPROFILE\\AppData\\Local\\Microsoft\\Windows\\PowerShell\\ModuleAnalysisCache\" -Recurse -Force<\/pre>\r\n<p>&nbsp; Yeni bir PowerShell oturumu a&ccedil;\u0131n 2. Mod&uuml;l Y&uuml;kleme Hatas\u0131 powershell &Ouml;nceki s&uuml;r&uuml;mleri kald\u0131rma<\/p>\r\n<pre data-enlighter-language=\"generic\">Uninstall-Module -Name ExchangeOnlineManagement -AllVersions -Force<\/pre>\r\n<p>&nbsp; En son s&uuml;r&uuml;m&uuml; y&uuml;kleme<\/p>\r\n<pre data-enlighter-language=\"generic\">Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber<\/pre>\r\n<p>&nbsp; 3. Ba\u011flant\u0131 Zaman A\u015f\u0131m\u0131 - PowerShell oturumunu kapat\u0131p yeniden a&ccedil;\u0131n - -ShowProgress $true parametresiyle ba\u011flant\u0131 kurun - \u0130nternet ba\u011flant\u0131n\u0131z\u0131 kontrol edin En \u0130yi Uygulamalar G&uuml;venlik - MFA kullan\u0131n: Her zaman Multi-Factor Authentication etkin olsun - Oturumlar\u0131 kapat\u0131n: \u0130\u015finiz bitti\u011finde Disconnect-ExchangeOnline komutunu &ccedil;al\u0131\u015ft\u0131r\u0131n - Hassas bilgileri koruyun: Script'lerde do\u011frudan kimlik bilgisi g&ouml;m&uuml;l&uuml; olmas\u0131n Performans - Filtreleme kullan\u0131n: B&uuml;y&uuml;k veri setlerinde -Filter parametresini kullan\u0131n - Sayfalama yap\u0131n: -ResultSize parametresiyle b&uuml;y&uuml;k sonu&ccedil;lar\u0131 y&ouml;netin - Oturum s&uuml;relerine dikkat edin: Uzun s&uuml;reli ba\u011flant\u0131larda yeniden ba\u011flant\u0131 yap\u0131n Bak\u0131m - Mod&uuml;lleri g&uuml;ncel tutun: powershell<\/p>\r\n<pre data-enlighter-language=\"generic\">Update-Module -Name ExchangeOnlineManagement<\/pre>\r\n<p>&nbsp; - PowerShell'i g&uuml;ncelleyin: En son PowerShell s&uuml;r&uuml;m&uuml;n&uuml; kullan\u0131n - Script'leri yedekleyin: &Ouml;nemli script'lerin yedeklerini al\u0131n &Ouml;rnek Kullan\u0131m Senaryolar\u0131 1. Kullan\u0131c\u0131 Posta Kutusu Listesi Alma powershell<\/p>\r\n<pre data-enlighter-language=\"generic\">Get-EXOMailbox -ResultSize Unlimited | Select-Object DisplayName,UserPrincipalName,PrimarySmtpAddress<\/pre>\r\n<p>&nbsp; 2. Belirli Bir Kullan\u0131c\u0131n\u0131n Posta Kutusu Ayarlar\u0131 powershell<\/p>\r\n<pre data-enlighter-language=\"generic\">Get-EXOMailbox -Identity kullanici@firma.com | Format-List<\/pre>\r\n<p>&nbsp; 3. Posta Kutusu Kotalar\u0131n\u0131 G&ouml;r&uuml;nt&uuml;leme powershell<\/p>\r\n<pre data-enlighter-language=\"generic\">Get-EXOMailbox -ResultSize 10 | Get-EXOMailboxStatistics | Select-Object DisplayName,ItemCount,TotalItemSize<\/pre>\r\n<p>&nbsp; Oturumu Kapatma \u0130\u015finiz bitti\u011finde mutlaka oturumu kapat\u0131n: powershell<\/p>\r\n<pre data-enlighter-language=\"generic\">Disconnect-ExchangeOnline -Confirm:$false<\/pre>\r\n<p>&nbsp; &nbsp; Exchange Online PowerShell, Microsoft 365 ortam\u0131n\u0131z\u0131 etkili bir \u015fekilde y&ouml;netmek i&ccedil;in g&uuml;&ccedil;l&uuml; bir ara&ccedil;t\u0131r. Bu rehberde &ouml;\u011frendi\u011finiz ad\u0131mlarla g&uuml;venli ba\u011flant\u0131lar kurabilir, temel y&ouml;netim i\u015flemlerini ger&ccedil;ekle\u015ftirebilir ve kar\u015f\u0131la\u015fabilece\u011finiz sorunlar\u0131 &ccedil;&ouml;zebilirsiniz. Faydal\u0131 Kaynaklar - (https:\/\/docs.microsoft.com\/exchange\/exchange-online-powershell) - (https:\/\/docs.microsoft.com\/powershell\/module\/exchange) - (https:\/\/www.powershellgallery.com\/packages\/ExchangeOnlineManagement) &nbsp;<\/p>","excerpt":"Exchange Online, Microsoft 365'in g\u00fc\u00e7l\u00fc e-posta ve i\u015fbirli\u011fi \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Y\u00f6neticiler i\u00e7in PowerShell \u00fczerinden y\u00f6netim kritik \u00f6nem ta\u015f\u0131r. Bu rehberde, Exchange Online PowerShell\u2019e nas\u0131l ba\u011flanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.","created_at":"2024-12-29 11:32:21","updated_at":"2026-09-23 14:33:28","category_id":6,"view_count":1089,"reading_time":4,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2024-12-29 11:32:21","featured_image":"resimyok.jpg","slug":"exchange-online-powershell-e-nasil-baglanilir","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":271,"title":"PowerShell kullanarak Active Directory gruplar\u0131na CSV dosyas\u0131ndan kullan\u0131c\u0131 import i\u015flemi","content":"<p>Tabii \ud83d\udc4d Senin verdi\u011fin scripti ve a&ccedil;\u0131klamalar\u0131 derli toplu bir <strong>blog yaz\u0131s\u0131<\/strong> haline getirdim. Hem giri\u015f hem de ad\u0131m ad\u0131m anlat\u0131m olacak \u015fekilde d&uuml;zenledim:<\/p>\r\n<hr>\r\n<h1>PowerShell ile CSV Dosyas\u0131ndan Active Directory Gruplar\u0131na Kullan\u0131c\u0131 Ekleme<\/h1>\r\n<p>Active Directory ortam\u0131nda &ccedil;ok say\u0131da kullan\u0131c\u0131y\u0131 farkl\u0131 gruplara eklemek manuel olarak olduk&ccedil;a zaman al\u0131c\u0131 olabilir. &Ouml;zellikle y&uuml;zlerce kullan\u0131c\u0131y\u0131 birden gruplara dahil etmeniz gerekti\u011finde, <strong>PowerShell<\/strong> kullanarak bu i\u015flemi otomatikle\u015ftirmek hem zaman kazand\u0131r\u0131r hem de hata pay\u0131n\u0131 en aza indirir.<\/p>\r\n<p>Bu yaz\u0131da, <strong>CSV dosyas\u0131ndan kullan\u0131c\u0131lar\u0131 Active Directory gruplar\u0131na ekleyen<\/strong> bir PowerShell scriptini inceleyece\u011fiz.<\/p>\r\n<hr>\r\n<h2>1. CSV Dosyas\u0131n\u0131n Haz\u0131rlanmas\u0131<\/h2>\r\n<p>\u0130lk olarak bir CSV dosyas\u0131 olu\u015fturman\u0131z gerekiyor. Dosya iki s&uuml;tundan olu\u015fmal\u0131:<\/p>\r\n<ul>\r\n<li>\r\n<p><strong>SamAccountName<\/strong> &rarr; AD kullan\u0131c\u0131 ad\u0131<\/p>\r\n<\/li>\r\n<li>\r\n<p><strong>GroupName<\/strong> &rarr; Eklenecek grup ad\u0131<\/p>\r\n<\/li>\r\n<\/ul>\r\n<p>&Ouml;rnek CSV i&ccedil;eri\u011fi \u015fu \u015fekilde olabilir:<\/p>\r\n<pre><code class=\"language-csv\">SamAccountName,GroupName\r\njohn.doe,IT_Department\r\njane.smith,HR_Department\r\nmike.wilson,Finance_Group\r\nsarah.jones,Marketing_Team\r\nrobert.brown,Sales_Department\r\n<\/code><\/pre>\r\n<p>\ud83d\udccc CSV dosyan\u0131z\u0131 &ouml;rne\u011fin <code>C:\\bulk_group\\test_bulk.csv<\/code> yoluna kaydedebilirsiniz.<\/p>\r\n<hr>\r\n<h2>2. PowerShell Scripti<\/h2>\r\n<p>A\u015fa\u011f\u0131daki script CSV dosyas\u0131n\u0131 okur, her kullan\u0131c\u0131y\u0131 ilgili gruba eklemeye &ccedil;al\u0131\u015f\u0131r ve i\u015flemlerin sonucunu renkli mesajlarla raporlar:<\/p>\r\n<pre><code class=\"language-powershell\"># ============================\r\n# AD Kullan\u0131c\u0131lar\u0131n\u0131 Gruplara CSV'den Import Etme Scripti\r\n# ============================\r\n\r\n# CSV dosya yolu\r\n$CSVPath = \"C:\\bulk_group\\test_bulk.csv\"\r\n\r\n# CSV'yi import et\r\n$Users = Import-Csv -Path $CSVPath\r\n\r\nforeach ($User in $Users) {\r\n    # Bo\u015f de\u011fer kontrol&uuml;\r\n    if ([string]::IsNullOrEmpty($User.SamAccountName) -or [string]::IsNullOrEmpty($User.GroupName)) {\r\n        Write-Host \"Hata: Bo\u015f kullan\u0131c\u0131 ad\u0131 veya grup ad\u0131 tespit edildi.\" -ForegroundColor Red\r\n        continue\r\n    }\r\n\r\n    try {\r\n        # Kullan\u0131c\u0131 var m\u0131?\r\n        $ADUser = Get-ADUser -Identity $User.SamAccountName -ErrorAction Stop\r\n\r\n        # Grup var m\u0131?\r\n        $ADGroup = Get-ADGroup -Identity $User.GroupName -ErrorAction Stop\r\n\r\n        # Kullan\u0131c\u0131 grupta m\u0131?\r\n        $IsMember = Get-ADGroupMember -Identity $ADGroup | Where-Object { $_.SamAccountName -eq $User.SamAccountName }\r\n\r\n        if (-not $IsMember) {\r\n            # Kullan\u0131c\u0131y\u0131 gruba ekle\r\n            Add-ADGroupMember -Identity $ADGroup -Members $ADUser -ErrorAction Stop\r\n            Write-Host \"Ba\u015far\u0131l\u0131: $($User.SamAccountName) kullan\u0131c\u0131s\u0131 $($User.GroupName) grubuna eklendi.\" -ForegroundColor Green\r\n        }\r\n        else {\r\n            Write-Host \"Bilgi: $($User.SamAccountName) kullan\u0131c\u0131s\u0131 zaten $($User.GroupName) grubunda mevcut.\" -ForegroundColor Yellow\r\n        }\r\n    }\r\n    catch {\r\n        Write-Host \"Hata: $($User.SamAccountName) i&ccedil;in i\u015flem ba\u015far\u0131s\u0131z -&gt; $($_.Exception.Message)\" -ForegroundColor Red\r\n    }\r\n}\r\n<\/code><\/pre>\r\n<hr>\r\n<h2>3. Scriptin &Ouml;zellikleri<\/h2>\r\n<p>\u2705 <strong>Hata kontrol&uuml; yapar<\/strong> &rarr; Bo\u015f kullan\u0131c\u0131\/grup sat\u0131rlar\u0131n\u0131 atlar<br>\u2705 <strong>Kullan\u0131c\u0131y\u0131 do\u011frular<\/strong> &rarr; AD&rsquo;de ger&ccedil;ekten var m\u0131 kontrol eder<br>\u2705 <strong>Grubu do\u011frular<\/strong> &rarr; Belirtilen grup mevcut mu bakar<br>\u2705 <strong>&Uuml;yelik kontrol&uuml; yapar<\/strong> &rarr; Kullan\u0131c\u0131 zaten grupta m\u0131 kontrol eder<br>\u2705 <strong>Renkli raporlama<\/strong> &rarr;<\/p>\r\n<ul>\r\n<li>\r\n<p>Ye\u015fil &rarr; Ba\u015far\u0131l\u0131 ekleme<\/p>\r\n<\/li>\r\n<li>\r\n<p>Sar\u0131 &rarr; Zaten grupta<\/p>\r\n<\/li>\r\n<li>\r\n<p>K\u0131rm\u0131z\u0131 &rarr; Hata<\/p>\r\n<\/li>\r\n<\/ul>\r\n<hr>\r\n<h2>4. Scripti &Ccedil;al\u0131\u015ft\u0131rmadan &Ouml;nce<\/h2>\r\n<ul>\r\n<li>\r\n<p>PowerShell&rsquo;i <strong>y&ouml;netici olarak &ccedil;al\u0131\u015ft\u0131r\u0131n<\/strong><\/p>\r\n<\/li>\r\n<li>\r\n<p><code>Import-Module ActiveDirectory<\/code> komutu ile <strong>AD mod&uuml;l&uuml;n&uuml; y&uuml;kleyin<\/strong><\/p>\r\n<\/li>\r\n<li>\r\n<p>CSV dosyan\u0131z\u0131n <strong>do\u011fru formatta<\/strong> oldu\u011fundan emin olun<\/p>\r\n<\/li>\r\n<\/ul>\r\n<p>Harika \ud83d\udc4d O zaman blog yaz\u0131s\u0131na ek bir b&ouml;l&uuml;m olarak <strong>loglama<\/strong> k\u0131sm\u0131n\u0131 da dahil edelim. B&ouml;ylece i\u015flemleri yaln\u0131zca ekranda de\u011fil, dosyalarda da saklayabileceksin.<\/p>\r\n<p>A\u015fa\u011f\u0131da g&uuml;ncellenmi\u015f script var \ud83d\udc47<\/p>\r\n<hr>\r\n<h2>5. \u0130\u015flemleri Log Dosyalar\u0131na Kaydetme<\/h2>\r\n<p>Raporlar\u0131 yaln\u0131zca ekranda g&ouml;rmek yeterli olmayabilir. Ba\u015far\u0131l\u0131 ve ba\u015far\u0131s\u0131z i\u015flemleri daha sonra incelemek i&ccedil;in ayr\u0131 log dosyalar\u0131na yazd\u0131rmak &ccedil;ok faydal\u0131d\u0131r.<\/p>\r\n<p>A\u015fa\u011f\u0131daki script, <code>C:\\bulk_group\\logs\\<\/code> klas&ouml;r&uuml;ne iki dosya olu\u015fturur:<\/p>\r\n<ul>\r\n<li>\r\n<p><strong>success.log<\/strong> &rarr; ba\u015far\u0131l\u0131 eklemeler<\/p>\r\n<\/li>\r\n<li>\r\n<p><strong>error.log<\/strong> &rarr; hatalar<\/p>\r\n<\/li>\r\n<\/ul>\r\n<pre><code class=\"language-powershell\"># ============================\r\n# AD Kullan\u0131c\u0131lar\u0131n\u0131 Gruplara CSV'den Import Etme + Loglama\r\n# ============================\r\n\r\n# CSV dosya yolu\r\n$CSVPath = \"C:\\bulk_group\\test_bulk.csv\"\r\n\r\n# Log dosya yollar\u0131\r\n$LogPath = \"C:\\bulk_group\\logs\"\r\n$SuccessLog = Join-Path $LogPath \"success.log\"\r\n$ErrorLog   = Join-Path $LogPath \"error.log\"\r\n\r\n# Log klas&ouml;r&uuml; yoksa olu\u015ftur\r\nif (-not (Test-Path $LogPath)) {\r\n    New-Item -ItemType Directory -Path $LogPath | Out-Null\r\n}\r\n\r\n# CSV'yi import et\r\n$Users = Import-Csv -Path $CSVPath\r\n\r\nforeach ($User in $Users) {\r\n    if ([string]::IsNullOrEmpty($User.SamAccountName) -or [string]::IsNullOrEmpty($User.GroupName)) {\r\n        $msg = \"Hata: Bo\u015f kullan\u0131c\u0131 ad\u0131 veya grup ad\u0131 tespit edildi.\"\r\n        Write-Host $msg -ForegroundColor Red\r\n        Add-Content -Path $ErrorLog -Value \"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') | $msg\"\r\n        continue\r\n    }\r\n\r\n    try {\r\n        # Kullan\u0131c\u0131 ve grup kontrol&uuml;\r\n        $ADUser = Get-ADUser -Identity $User.SamAccountName -ErrorAction Stop\r\n        $ADGroup = Get-ADGroup -Identity $User.GroupName -ErrorAction Stop\r\n\r\n        # Kullan\u0131c\u0131 grupta m\u0131?\r\n        $IsMember = Get-ADGroupMember -Identity $ADGroup | Where-Object { $_.SamAccountName -eq $User.SamAccountName }\r\n\r\n        if (-not $IsMember) {\r\n            Add-ADGroupMember -Identity $ADGroup -Members $ADUser -ErrorAction Stop\r\n            $msg = \"Ba\u015far\u0131l\u0131: $($User.SamAccountName) kullan\u0131c\u0131s\u0131 $($User.GroupName) grubuna eklendi.\"\r\n            Write-Host $msg -ForegroundColor Green\r\n            Add-Content -Path $SuccessLog -Value \"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') | $msg\"\r\n        }\r\n        else {\r\n            $msg = \"Bilgi: $($User.SamAccountName) kullan\u0131c\u0131s\u0131 zaten $($User.GroupName) grubunda mevcut.\"\r\n            Write-Host $msg -ForegroundColor Yellow\r\n            # \u0130ste\u011fe ba\u011fl\u0131: bilgi mesajlar\u0131n\u0131 loglamak i&ccedil;in a\u015fa\u011f\u0131daki sat\u0131r\u0131 a&ccedil;abilirsiniz\r\n            # Add-Content -Path $SuccessLog -Value \"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') | $msg\"\r\n        }\r\n    }\r\n    catch {\r\n        $msg = \"Hata: $($User.SamAccountName) i&ccedil;in i\u015flem ba\u015far\u0131s\u0131z -&gt; $($_.Exception.Message)\"\r\n        Write-Host $msg -ForegroundColor Red\r\n        Add-Content -Path $ErrorLog -Value \"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') | $msg\"\r\n    }\r\n}\r\n<\/code><\/pre>\r\n<hr>\r\n<h3>Log Dosyalar\u0131n\u0131n &Ouml;rnek &Ccedil;\u0131kt\u0131s\u0131<\/h3>\r\n<p>\ud83d\udcc2 <strong>success.log<\/strong><\/p>\r\n<pre><code>2025-10-03 10:45:12 | Ba\u015far\u0131l\u0131: john.doe kullan\u0131c\u0131s\u0131 IT_Department grubuna eklendi.\r\n2025-10-03 10:45:15 | Ba\u015far\u0131l\u0131: jane.smith kullan\u0131c\u0131s\u0131 HR_Department grubuna eklendi.\r\n<\/code><\/pre>\r\n<p>\ud83d\udcc2 <strong>error.log<\/strong><\/p>\r\n<pre><code>2025-10-03 10:46:02 | Hata: mike.wilson i&ccedil;in i\u015flem ba\u015far\u0131s\u0131z -&gt; Cannot find an object with identity: 'mike.wilson'\r\n2025-10-03 10:46:10 | Hata: Bo\u015f kullan\u0131c\u0131 ad\u0131 veya grup ad\u0131 tespit edildi.\r\n<\/code><\/pre>\r\n<hr>\r\n<p>S&uuml;per \ud83d\udc4d O zaman blog yaz\u0131s\u0131n\u0131 geni\u015fletip <strong>CSV&rsquo;den kullan\u0131c\u0131lar\u0131 gruptan &ccedil;\u0131karma<\/strong> k\u0131sm\u0131n\u0131 da ekleyelim. Bu sayede tek CSV dosyas\u0131yla hem kullan\u0131c\u0131 ekleme hem de &ccedil;\u0131karma i\u015flemlerini y&ouml;netebilirsin.<\/p>\r\n<hr>\r\n<h2>6. CSV&rsquo;den Kullan\u0131c\u0131lar\u0131 Gruptan &Ccedil;\u0131karma<\/h2>\r\n<p>Bazen ihtiya&ccedil;, kullan\u0131c\u0131lar\u0131 gruplara eklemek yerine gruplardan &ccedil;\u0131karmak olabilir. Bunun i&ccedil;in <code>Remove-ADGroupMember<\/code> cmdlet&rsquo;i kullan\u0131l\u0131r. Mant\u0131k neredeyse ayn\u0131, sadece ekleme yerine &ccedil;\u0131karma yap\u0131l\u0131r.<\/p>\r\n<h3>&Ouml;rnek Script:<\/h3>\r\n<pre><code class=\"language-powershell\"># ============================\r\n# AD Kullan\u0131c\u0131lar\u0131n\u0131 Gruplardan CSV ile &Ccedil;\u0131karma\r\n# ============================\r\n\r\n# CSV dosya yolu\r\n$CSVPath = \"C:\\bulk_group\\remove_users.csv\"\r\n\r\n# Log dosya yollar\u0131\r\n$LogPath = \"C:\\bulk_group\\logs\"\r\n$SuccessLog = Join-Path $LogPath \"removed_success.log\"\r\n$ErrorLog   = Join-Path $LogPath \"removed_error.log\"\r\n\r\n# Log klas&ouml;r&uuml; yoksa olu\u015ftur\r\nif (-not (Test-Path $LogPath)) {\r\n    New-Item -ItemType Directory -Path $LogPath | Out-Null\r\n}\r\n\r\n# CSV'yi import et\r\n$Users = Import-Csv -Path $CSVPath\r\n\r\nforeach ($User in $Users) {\r\n    if ([string]::IsNullOrEmpty($User.SamAccountName) -or [string]::IsNullOrEmpty($User.GroupName)) {\r\n        $msg = \"Hata: Bo\u015f kullan\u0131c\u0131 ad\u0131 veya grup ad\u0131 tespit edildi.\"\r\n        Write-Host $msg -ForegroundColor Red\r\n        Add-Content -Path $ErrorLog -Value \"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') | $msg\"\r\n        continue\r\n    }\r\n\r\n    try {\r\n        # Kullan\u0131c\u0131 ve grup kontrol&uuml;\r\n        $ADUser = Get-ADUser -Identity $User.SamAccountName -ErrorAction Stop\r\n        $ADGroup = Get-ADGroup -Identity $User.GroupName -ErrorAction Stop\r\n\r\n        # Kullan\u0131c\u0131 ger&ccedil;ekten grupta m\u0131?\r\n        $IsMember = Get-ADGroupMember -Identity $ADGroup | Where-Object { $_.SamAccountName -eq $User.SamAccountName }\r\n\r\n        if ($IsMember) {\r\n            # Kullan\u0131c\u0131y\u0131 gruptan &ccedil;\u0131kar\r\n            Remove-ADGroupMember -Identity $ADGroup -Members $ADUser -Confirm:$false -ErrorAction Stop\r\n            $msg = \"Ba\u015far\u0131l\u0131: $($User.SamAccountName) kullan\u0131c\u0131s\u0131 $($User.GroupName) grubundan &ccedil;\u0131kar\u0131ld\u0131.\"\r\n            Write-Host $msg -ForegroundColor Green\r\n            Add-Content -Path $SuccessLog -Value \"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') | $msg\"\r\n        }\r\n        else {\r\n            $msg = \"Bilgi: $($User.SamAccountName) kullan\u0131c\u0131s\u0131 $($User.GroupName) grubunda bulunmuyor.\"\r\n            Write-Host $msg -ForegroundColor Yellow\r\n        }\r\n    }\r\n    catch {\r\n        $msg = \"Hata: $($User.SamAccountName) i&ccedil;in &ccedil;\u0131karma i\u015flemi ba\u015far\u0131s\u0131z -&gt; $($_.Exception.Message)\"\r\n        Write-Host $msg -ForegroundColor Red\r\n        Add-Content -Path $ErrorLog -Value \"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') | $msg\"\r\n    }\r\n}\r\n<\/code><\/pre>\r\n<hr>\r\n<h3>CSV &Ouml;rne\u011fi<\/h3>\r\n<p>Kullan\u0131c\u0131lar\u0131 gruptan &ccedil;\u0131karmak i&ccedil;in CSV dosyan\u0131z \u015fu formatta olmal\u0131:<\/p>\r\n<pre><code class=\"language-csv\">SamAccountName,GroupName\r\njohn.doe,IT_Department\r\njane.smith,HR_Department\r\nmike.wilson,Finance_Group\r\n<\/code><\/pre>\r\n<hr>\r\n<h3>Log &Ccedil;\u0131kt\u0131s\u0131<\/h3>\r\n<p>\ud83d\udcc2 <strong>removed_success.log<\/strong><\/p>\r\n<pre><code>2025-10-03 12:15:05 | Ba\u015far\u0131l\u0131: john.doe kullan\u0131c\u0131s\u0131 IT_Department grubundan &ccedil;\u0131kar\u0131ld\u0131.\r\n<\/code><\/pre>\r\n<p>\ud83d\udcc2 <strong>removed_error.log<\/strong><\/p>\r\n<pre><code>2025-10-03 12:16:10 | Hata: mike.wilson i&ccedil;in &ccedil;\u0131karma i\u015flemi ba\u015far\u0131s\u0131z -&gt; Cannot find an object with identity: 'mike.wilson'\r\n<\/code><\/pre>\r\n<hr>\r\n<p>&nbsp;<\/p>\r\n<p>&nbsp;<\/p>\r\n<p>Bu y&ouml;ntemle y&uuml;zlerce kullan\u0131c\u0131y\u0131 tek seferde gruplara ekleyebilir, AD y&ouml;netim i\u015flerinizi &ccedil;ok daha h\u0131zl\u0131 ve pratik hale getirebilirsiniz. &Ouml;zellikle b&uuml;y&uuml;k organizasyonlarda, toplu i\u015flem yapmak i&ccedil;in bu tarz PowerShell scriptleri b&uuml;y&uuml;k kolayl\u0131k sa\u011flar.<\/p>\r\n<hr>\r\n<p>&nbsp;<\/p>","excerpt":"PowerShell kullanarak Active Directory gruplar\u0131na CSV dosyas\u0131ndan kullan\u0131c\u0131 import i\u015flemini kolayca yapabilirsiniz.","created_at":"2024-12-29 11:24:22","updated_at":"2026-09-23 13:08:30","category_id":8,"view_count":746,"reading_time":7,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2024-12-29 11:24:22","featured_image":"resimyok.jpg","slug":"powershell-kullanarak-active-directory-gruplarina-csv-dosyasindan-kullanici-import-islemi","category_name":"Active Directory \/Azure","category_slug":"active-directory-azure","category_color":"#f59e0b"}]