PowerShell Kullanarak Windows Dosya Paylaşımlarını Yönetme


Yerleşik SMBShare PowerShell modülü, Windows'ta paylaşılan ağ klasörleri oluşturmanıza, yapılandırmanıza ve yönetmenize olanak tanır. Bu yazıda, PowerShell kullanarak dosya paylaşımlarının (SMB ağ klasörleri) nasıl yönetileceğine bakacağız. SMB dosya sunucularınızı ve paylaşılan klasörlerinizi farklı otomasyon senaryolarında hızlı ve kolay bir şekilde yönetmek için bu örnekleri kullanabilirsiniz.

SMBShare modülü, paylaşılan ağ klasörlerini yönetmek için 42 PowerShell cmdlet içerir. Modüldeki cmdlet'lerin tam listesini görüntüleyebilirsiniz:

Get-Command -Module SMBShare

Windows SMB sunucunuzun geçerli yapılandırmasını görüntülemek için:

Get-SmbServerConfiguration
AnnounceComment :
AnnounceServer : False
AsynchronousCredits : 64
AuditSmb1Access : False
AutoDisconnectTimeout : 15
AutoShareServer : True
AutoShareWorkstation : True
CachedOpenLimit : 10
DurableHandleV2TimeoutInSeconds : 180
EnableAuthenticateUserSharing : False
EnableDownlevelTimewarp : False
EnableForcedLogoff : True
EnableLeasing : True
EnableMultiChannel : True
EnableOplocks : True
EnableSecuritySignature : False
EnableSMB1Protocol : True
EnableSMB2Protocol : True
EnableStrictNameChecking : True
EncryptData : False
IrpStackSize : 15
KeepAliveTime : 2
MaxChannelPerSession : 32
MaxMpxCount : 50
MaxSessionPerConnection : 16384
MaxThreadsPerQueue : 20
MaxWorkItems : 1
NullSessionPipes :
NullSessionShares :
OplockBreakWait : 35
PendingClientTimeoutInSeconds : 120
RejectUnencryptedAccess : True
RequireSecuritySignature : False
ServerHidden : True
Smb2CreditsMax : 2048
Smb2CreditsMin : 128
SmbServerNameHardeningLevel : 0
TreatHostAsStableStorage : False
ValidateAliasNotCircular : True
ValidateShareScope : True
ValidateShareScopeNotAliased : True
ValidateTargetName : True

Set-SmbServerConfiguration cmdlet'ini kullanarak SMB sunucusu seçeneklerini değiştirebilirsiniz.

Örneğin, eski SMB 1 protokolünü devre dışı bırakmak için aşağıdaki komutu çalıştırın:

Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force

Geçerli SMB dosya sunucusundaki dosya paylaşımlarına bağlanmak için etkin istemciler tarafından kullanılan SMB protokolü sürümlerinin bir listesini görüntülemek için:

Get-SmbConnection

SMB dosya trafiği için bant genişliği limitlerini ayarlamak üzere, SMB sunucunuz için QoS politikasını yapılandırabilirsiniz (SMB bant genişliği limitleri nasıl yapılandırılır?). Örneğin, aşağıdaki komut SMB trafiği için maksimum bant genişliğini 10 MB ile sınırlayacaktır:

Set-SmbBandwidthLimit -Category Default -BytesPerSecond 10MB

PowerShell ile Windows'ta Paylaşılan Klasör Oluşturma

Bir bilgisayarda bulunan paylaşılan klasörlerin listesini görüntülemek için şu komutu çalıştırın:

Get-SmbShare

Bu bilgisayarda birkaç yönetici paylaşımı ve Dağıtım paylaşılan klasörü görebilirsiniz.

Yeni bir paylaşılan klasör oluşturmak için aşağıdaki komutu çalıştırın:

New-SmbShare -Name Scripts -Path C:\PS -FullAccess a-d\mun_admins, a-d\mun-man01$ -ChangeAccess "a-d\mun-man01_scripts_rw" -ReadAccess "$env:USERDOMAIN\domain users" -description "PowerShell scripts for admin"

Bu örnekte, paylaşılan bir klasör oluşturduk ve etki alanı gruplarına ve bir bilgisayar hesabına erişim sağladık.

Ayrıca, bir paylaşımlı klasör oluştururken aşağıdaki seçenekleri kullanabilirsiniz:

  • -CachingMode [None|Manual|Programs|Documents|BranchCache]

    -çevrimdışı erişim için bir önbelleğe alma modu ayarlayın (Windows çevrimdışı dosyaları);

  • -EncryptData $True

    - SMB trafik şifrelemesini etkinleştirmek için;

  • -FolderEnumerationMode [AccessBased | Unrestricted]

    - Erişim Tabanlı Numaralandırmayı etkinleştirmek için. Bir kullanıcının paylaşılan klasörden erişim iznine sahip olmadığı nesneleri gizlemeye izin verir;

  • -CompressData $True

    - SMB üzerinden dosya gönderirken sıkıştırmayı etkinleştirmek için;

  • -ConcurrentUserLimit 50

    - klasöre eşzamanlı bağlantı limiti ayarlamak için (varsayılan olarak 0, sınırsız);

  • -Temporary

    - geçici bir paylaşılan klasör oluşturmak için (bir sonraki Windows yeniden başlatmasından sonra kaybolur).

Paylaşılan klasör ayarlarının tam listesini görüntüleyebilirsiniz:

Get-SmbShare -Name scripts| select *

Bir ağ paylaşımlı klasörünü kaldırmak için:

Remove-SmbShare Scripts

Paylaşılan klasörün EKL listesine bir kullanıcı için yazma izni eklemek için:

Grant-SmbShareAccess -Name Scripts -AccountName "a-d\b.hoffmann" -AccessRight Change -force

Geçerli paylaşılan klasör erişim listesini görüntüleyin:

Get-SmbShareAccess scripts

Bir paylaşımın EKL'sinden bir güvenlik grubunu kaldırmak için:

Revoke-SmbShareAccess -Name Scripts -AccountName Everyone -Force

Paylaşılan bir klasöre erişimi engellemeye zorlamak için (reddetme izninin önceliği daha yüksektir):

Block-SmbShareAccess -Name Scripts -AccountName a-d\ExternalGuests -Force

Çoğu durumda, paylaşılan bir klasörde Herkes -> RW izinlerini kullanmalısınız. Bu durumda, klasör izinleri NTFS düzeyinde belirlenir.

Bu komutu kullanarak paylaşılan bir klasör için geçerli NTFS ACL'sini alabilirsiniz:

(get-acl \\mun-man01\scripts).access

NTFS izinlerini değiştirmek için Set-Acl cmdlet'ini kullanın (PowerShell kullanarak NTFS izinlerinin nasıl yönetileceği hakkında daha fazla bilgi edinin).

Windows Paylaşımlarında Açık Dosyalar Nasıl Görüntülenir ve Yönetilir?

Kullanıcılar tarafından bir Windows dosya sunucusundaki paylaşılan bir klasörde açılan dosyaların listesini görüntülemek için SMBShare cmdlet'lerini kullanabilirsiniz.

Kullanıcı adları, bilgisayar adları (IP adresleri) ve dosya yollarıyla birlikte açık dosyaların bir listesini görüntülemek için:

Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID

Belirli bir kullanıcı tarafından açılan dosyaların listesini göstermek için:

Get-SMBOpenFile -ClientUserName "a-d\b.hoffmann" |select ClientComputerName,Path

Bir kullanıcının açtığı ve uzak bir kullanıcı tarafından kilitlenen bir dosyayı kapatmak için:

$sessn = New-CIMSession -Computername munfs01
Get-SMBOpenFile -CIMSession $sessn | where {$_.Path -like "*sale_report2022.docx"} | Close-SMBOpenFile -CIMSession $sessn

Windows'ta SMB paylaşımlarında açık dosyaların nasıl yönetileceği hakkında daha fazla bilgi edinin.

SmbMapping Cmdlet'leri ile SMB Ağ Sürücülerini Eşleyin

SmbMapping cmdlet'leri, ağ sürücülerini yönetmek için kullanılır.

Bir ağ paylaşımlı klasörünü U: ağ sürücüsüne eşlemek için aşağıdaki komutu çalıştırın:

New-SmbMapping -LocalPath U: -RemotePath \\munfs01\scripts -UserName b.hoffmann -Password my22pass -Persistent $true -SaveCredential
  • Kalıcı seçeneği olmadan, eşlenen ağ sürücüsü yalnızca bilgisayar yeniden başlatılana kadar kullanılabilir;

  • SaveCredential seçeneği, kullanıcı kimlik bilgilerinin Windows Kimlik Bilgileri Yöneticisine kaydedilmesine olanak tanır.

Eşlenen ağ klasörlerinin bir listesini görüntülemek için:

Get-SmbMapping

Bir ağ sürücüsünü kaldırmak için:

Remove-SmbMapping U: -force

Windows'ta ağ sürücülerini eşlemek için GPO'yu kullanabilirsiniz.

İlgili makaleler