כיצד לנהל שיתופי קבצים של Windows באמצעות PowerShell


מודול SMBShare PowerShell המובנה מאפשר לך ליצור, להגדיר ולנהל תיקיות רשת משותפות ב- Windows. במאמר זה, נבחן כיצד לנהל שיתופי קבצים (תיקיות רשת SMB) באמצעות PowerShell. תוכל להשתמש בדוגמאות אלה כדי לנהל במהירות ובקלות את שרתי הקבצים והתיקיות המשותפות שלך בתרחישי אוטומציה שונים.

מודול SMBShare מכיל 42 רכיבי cmdlet של PowerShell לניהול תיקיות רשת משותפות. באפשרותך להציג את הרשימה המלאה של רכיבי cmdlet במודול:

Get-Command -Module SMBShare

כדי להציג את התצורה הנוכחית של שרת Windows SMB:

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

באפשרותך לשנות אפשרויות שרת SMB באמצעות cmdlet Set-SmbServerConfiguration.

לדוגמה, כדי להשבית את פרוטוקול SMB 1 מדור קודם, הפעל את הפקודה הבאה:

Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force

כדי להציג רשימה של גירסאות פרוטוקול SMB המשמשות לקוחות פעילים כדי להתחבר לשיתופי קבצים בשרת הקבצים הנוכחי של SMB:

Get-SmbConnection

כדי להגדיר מגבלות רוחב פס עבור תעבורת קבצים קטנים ובינוניים, באפשרותך להגדיר את מדיניות QoS עבור שרת SMB שלך (כיצד להגדיר מגבלות רוחב פס של SMB?). לדוגמה, הפקודה הבאה תגביל את רוחב הפס המרבי עבור תעבורת SMB ל- 10 MB:

Set-SmbBandwidthLimit -Category Default -BytesPerSecond 10MB

יצירת תיקיה משותפת ב- Windows באמצעות PowerShell

כדי להציג רשימה של תיקיות משותפות הזמינות במחשב, הפעל פקודה זו:

Get-SmbShare

באפשרותך לראות מספר מיקומים משותפים ניהוליים ואת התיקיה המשותפת Distr במחשב זה.

כדי ליצור תיקיה משותפת חדשה, הפעל את הפקודה הבאה:

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"

בדוגמה זו, יצרנו תיקיה משותפת והענקנו גישה לקבוצות תחומים ולחשבון מחשב אחד.

בנוסף, בעת יצירת תיקיה משותפת, באפשרותך להשתמש באפשרויות הבאות:

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

    -הגדרת מצב אחסון במטמון לגישה לא מקוונת (קבצים לא מקוונים של Windows);

  • -EncryptData $True

    - כדי לאפשר הצפנת תעבורה של עסקים קטנים ובינוניים;

  • -FolderEnumerationMode [AccessBased | Unrestricted]

    - כדי לאפשר ספירה מבוססת גישה. מאפשר להסתיר אובייקטים שלמשתמש אין הרשאה לגשת אליהם מהתיקיה המשותפת;

  • -CompressData $True

    - כדי לאפשר דחיסה בעת שליחת קבצים על SMB;

  • -ConcurrentUserLimit 50

    - כדי להגדיר מגבלה של חיבורים בו זמנית לתיקייה (0 כברירת מחדל, ללא הגבלה);

  • -Temporary

    - כדי ליצור תיקיה משותפת זמנית (נעלמת לאחר ההפעלה מחדש הבאה של Windows).

באפשרותך להציג רשימה מלאה של הגדרות תיקיה משותפת:

Get-SmbShare -Name scripts| select *

כדי להסיר תיקיה משותפת ברשת:

Remove-SmbShare Scripts

כדי להוסיף הרשאת כתיבה עבור משתמש לרשימת רשימות בקרת הגישה של התיקיה המשותפת:

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

הצג את רשימת הגישה הנוכחית לתיקיות משותפות:

Get-SmbShareAccess scripts

כדי להסיר קבוצת אבטחה מ-ACL של שיתוף:

Revoke-SmbShareAccess -Name Scripts -AccountName Everyone -Force

כדי לכפות חסימת גישה לתיקיה משותפת (להרשאת דחייה יש עדיפות גבוהה יותר):

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

ברוב המקרים, עליך להשתמש בהרשאות כולם -> RW בתיקיה משותפת. במקרה זה, הרשאות התיקיה נקבעות ברמת NTFS.

באפשרותך לקבל את מתאם בקרת הגישה הנוכחי של NTFS עבור תיקיה משותפת באמצעות פקודה זו:

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

כדי לשנות הרשאות NTFS, השתמש ב- cmdlet Set-Acl (למד עוד אודות אופן הניהול של הרשאות NTFS באמצעות PowerShell).

כיצד להציג ולנהל קבצים פתוחים במניות Windows?

באפשרותך להשתמש ברכיבי cmdlet של SMBShare כדי להציג רשימה של קבצים שנפתחו על-ידי משתמשים בתיקיה משותפת בשרת קבצים של Windows.

כדי להציג רשימה של קבצים שנפתחו עם שמות משתמש, שמות מחשבים (כתובות IP) ונתיבי קבצים:

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

כדי להציג רשימה של קבצים שנפתחו על-ידי משתמש ספציפי:

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

כדי לסגור קובץ שמשתמש פתח וננעל על-ידי משתמש מרוחק:

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

קבל מידע נוסף על ניהול קבצים פתוחים במיקומים משותפים של עסקים קטנים ובינוניים ב- Windows.

מיפוי כונני רשת SMB באמצעות רכיבי cmdlet של SmbMapping

רכיבי cmdlet של SmbMapping משמשים לניהול כונני רשת.

כדי למפות תיקיה משותפת ברשת לכונן הרשת U:, הפעל את הפקודה הבאה:

New-SmbMapping -LocalPath U: -RemotePath \\munfs01\scripts -UserName b.hoffmann -Password my22pass -Persistent $true -SaveCredential
  • ללא האפשרות מתמיד, כונן הרשת הממופה יהיה זמין רק עד להפעלה מחדש של המחשב;

  • האפשרות SaveCredential מאפשרת שמירת אישורי משתמש במנהל האישורים של Windows.

כדי להציג רשימה של תיקיות רשת ממופות:

Get-SmbMapping

כדי להסיר כונן רשת:

Remove-SmbMapping U: -force

באפשרותך להשתמש ב- GPO כדי למפות כונני רשת ב- Windows.