รับไดรฟ์ที่แมปสำหรับผู้ใช้ทั้งหมดใน PowerShell [4 วิธี]
การใช้คำสั่ง net use
ใช้คำสั่ง net use เพื่อรับไดรฟ์ที่แมปสำหรับผู้ใช้ทั้งหมดใน PowerShell
ใช้คำสั่งการใช้งานเน็ต:
net useเอาท์พุท :
New connections will be remembered.
Status Local Remote Network
------------------------------------------------------------------------------
OK K: \\DESKTOP-NKK10JM\JavaProject Microsoft Windows Network
OK Z: \\DESKTOP-NKK10JM\Share Microsoft Windows Network
The command completed successfully.ในตัวอย่างข้างต้น เราใช้คำสั่ง net use เพื่อแสดงรายการไดรฟ์ที่แมปทั้งหมดสำหรับผู้ใช้ทั้งหมดบนเครื่องภายในเครื่อง ทั้งอักษรระบุไดรฟ์ (K: และ Z:) ถูกแมปกับผู้ใช้คนเดียวกัน
มาแมปไดรฟ์อื่นกับผู้ใช้รายอื่นแล้วรันคำสั่ง net use อีกครั้งเพื่อดูว่าไดรฟ์ที่แมปล่าสุดปรากฏขึ้นด้วยหรือไม่ ดูตัวอย่างต่อไปนี้
ใช้คำสั่งการใช้งานเน็ต:
net use M: \\DESKTOP-NKK10JM\AnotherFolder
net useเอาท์พุท :
New connections will be remembered.
Status Local Remote Network
------------------------------------------------------------------------------
OK K: \\DESKTOP-NKK10JM\JavaProject Microsoft Windows Network
OK M: \\DESKTOP-NKK10JM\AnotherFolder Microsoft Windows Network
OK Z: \\DESKTOP-NKK10JM\Share Microsoft Windows Network
The command completed successfully.ขั้นแรก เราระบุอักษรระบุไดรฟ์ (M:) ที่เราต้องการแมปไดรฟ์เครือข่าย ตามด้วยเส้นทาง UNC ของทรัพยากรที่เราต้องการแชร์ โปรดจำไว้ว่าเราสามารถใช้ตัวอักษรใดก็ได้เพื่อแมปไดรฟ์เครือข่าย มันจะสำเร็จได้ถ้ายังไม่ได้ใช้ อย่าลืมใส่ไฟล์ที่ใช้ร่วมกันไว้ในเครื่องหมายคำพูดหากมีช่องว่าง เช่น \\DESKTOP-NKK10J\"Another Folder"
หากคุณไม่ต้องการลำบากใจกับอุปกรณ์ที่จะแมปไดรฟ์ คุณสามารถใช้เครื่องหมายดอกจันสำหรับอุปกรณ์ได้ (ในที่นี้ อุปกรณ์ หมายถึง อักษรระบุไดรฟ์< /แข็งแกร่ง>)
ใช้ * แทนอักษรระบุไดรฟ์:
net use * \\DESKTOP-NKK10JM\Share
net useเอาท์พุท :
Drive Y: is now connected to \\DESKTOP-NKK10JM\Share.
The command completed successfully.
New connections will be remembered.
Status Local Remote Network
------------------------------------------------------------------------------
OK K: \\DESKTOP-NKK10JM\JavaProject Microsoft Windows Network
OK M: \\DESKTOP-NKK10JM\AnotherFolder Microsoft Windows Network
OK Y: \\DESKTOP-NKK10JM\Share Microsoft Windows Network
OK Z: \\DESKTOP-NKK10JM\Share Microsoft Windows Network
The command completed successfully.เมื่อใช้ * เราบอกให้ Windows ค้นหาและแมปอุปกรณ์ถัดไปที่มีอยู่ (อักษรระบุไดรฟ์) ดูผลลัพธ์ด้านบน นอกจากนี้ยังแจ้งด้วยว่าไดรฟ์ Y: เชื่อมต่อกับ \\DESKTOP-NKK10JM\Share
จนถึงขณะนี้ เราใช้ การใช้เน็ต เพื่อรับรองความถูกต้องของไดรฟ์ที่แมปเป็นผู้ใช้ที่เข้าสู่ระบบ จะเกิดอะไรขึ้นหากเราต้องการรับรองความถูกต้องของทรัพยากรที่ใช้ร่วมกันผ่านข้อมูลประจำตัวสำรองซึ่งหมายถึงด้วยชื่อผู้ใช้และรหัสผ่านเฉพาะ หรือจะเกิดอะไรขึ้นถ้าเราจะสร้างการเชื่อมต่อแบบไม่ใช้อุปกรณ์ (ไม่มีอักษรระบุไดรฟ์)? คำสั่ง net use จะสามารถดึงข้อมูลไดรฟ์เหล่านี้ได้หรือไม่ มาดูกันในตัวอย่างต่อไปนี้
ใช้คำสั่งการใช้งานเน็ต:
net use \\DESKTOP-NKK10JM\"Script Files" /u:Domain\Mehvish 12345
net use
เอาท์พุท :
New connections will be remembered.
Status Local Remote Network
------------------------------------------------------------------------------
OK K: \\DESKTOP-NKK10JM\JavaProject Microsoft Windows Network
OK M: \\DESKTOP-NKK10JM\AnotherFolder Microsoft Windows Network
OK Y: \\DESKTOP-NKK10JM\Share Microsoft Windows Network
OK Z: \\DESKTOP-NKK10JM\Share Microsoft Windows Network
OK \\DESKTOP-NKK10JM\Script Files Microsoft Windows Network
The command completed successfully.ในตัวอย่างข้างต้น เราใช้พารามิเตอร์ /u เพื่อระบุชื่อผู้ใช้ (Mehvish) ตามด้วยรหัสผ่าน (12345) สำหรับการตรวจสอบสิทธิ์ และได้ดำเนินการ ไม่ได้กล่าวถึงอักษรระบุไดรฟ์ แต่คำสั่ง net use แสดงรายการไดรฟ์ที่แมปนี้ด้วย ด้วยเหตุนี้ การใช้เน็ต จึงสามารถดึงข้อมูลไดรฟ์ที่แมปสำหรับผู้ใช้ทั้งหมด ไม่ว่าไดรฟ์เหล่านั้นจะใช้อุปกรณ์น้อยหรือไม่ก็ตาม หรือได้รับการรับรองความถูกต้องหรือไม่ก็ตาม
เราไม่เพียงสามารถสร้างหรือดูไดรฟ์ที่แมปสำหรับผู้ใช้ทั้งหมดเท่านั้น แต่ยังสามารถลบได้อีกด้วย ดำเนินการคำสั่ง
net use /?เพื่อดูตัวเลือกทั้งหมดที่สามารถใช้กับคำสั่งนี้ได้
เป็นไปได้หรือไม่ที่จะดึงคุณสมบัติบางอย่างของไดรฟ์ที่แมปไว้? ใช่ มันเป็นอย่างนั้น; ดำเนินการต่อกับเราเพื่อสำรวจด้านล่าง
การใช้ Get-WmiObject/Get-CimInstace Cmdlets
ใช้ Get-WmiObject cmdlet เพื่อรับคุณสมบัติเฉพาะสำหรับไดรฟ์ที่แมปทั้งหมดสำหรับผู้ใช้ทั้งหมดใน PowerShell แนะนำให้ใช้โซลูชันนี้หากคุณใช้ PowerShell เวอร์ชันก่อนหน้า 3.0
ใช้ Get-WmiObject Cmdlet:
Get-WmiObject -Class Win32_MappedLogicalDisk |
Select-Object Name, Compressedเอาท์พุท :
Name Compressed
---- ----------
K: False
M: False
Y: False
Z: FalseGet-WmiObject cmdlet ใช้เพื่อรับอินสแตนซ์ของคลาส WMI (Windows Management Instrumentation) หรือรายละเอียดเกี่ยวกับคลาสที่มีอยู่ เราใช้ cmdlet นี้กับคลาส Win32_MappedLogicalDisk เพื่อดึงข้อมูลอินสแตนซ์และเข้าถึงคุณสมบัติทั้งหมดที่เกี่ยวข้องกับแต่ละไดรฟ์ที่แมป
คุณสมบัติเหล่านี้ได้แก่ DeviceID, ProviderName, SessionID, FileSystem, Name และ บีบอัด เราระบุคลาส Win32_MappedLogicalDis โดยใช้พารามิเตอร์ -Class ซึ่งเราสามารถละเว้นได้เช่นกัน แต่การใช้พารามิเตอร์นี้ทำให้โค้ดเข้าใจง่าย
จากนั้น เราส่งเอาต์พุตของ Get-WmiObject cmdlet ไปที่ Select-Object cmdlet ซึ่งใช้เพื่อเลือกวัตถุหรือคุณสมบัติของวัตถุที่ระบุ เราใช้ Select-Object cmdlet เพื่อเลือกคุณสมบัติ Name และ Compressed ของแต่ละอ็อบเจ็กต์ ชื่อ แสดงอักษรระบุไดรฟ์ในขณะที่ บีบอัด แสดงค่าบูลีน (True: ไดรฟ์ถูกบีบอัด False: ไดรฟ์ ไม่ถูกบีบอัด)
นอกจากนี้เรายังสามารถใช้นามแฝงของ
Get-WmiObjectได้โดยการแทนที่ด้วยgwmi
ใช้ Get-CimInstance cmdlet เพื่อรับคุณสมบัติเฉพาะสำหรับไดรฟ์ที่แมปทั้งหมดสำหรับผู้ใช้ทั้งหมดใน PowerShell หากคุณใช้ PowerShell 3.0 หรือสูงกว่า คุณสามารถดำเนินการต่อโดยใช้โซลูชันนี้แทนการใช้ cmdlet Get-WmiObject เนื่องจาก Get-WmiObject ถูกแทนที่ด้วย Get-CimInstance cmdlet ตั้งแต่ PowerShell 3.0
ใช้ Get-CimInstance Cmdlet:
Get-CimInstance -Class Win32_MappedLogicalDisk |
Select-Object Name, Compressedเอาท์พุท :
Name Compressed
---- ----------
K: False
M: False
Y: False
Z: FalseGet-CimInstance cmdlet ให้ผลลัพธ์เหมือนกับที่เราได้รับในตัวอย่างก่อนหน้านี้ cmdlet นี้ดึงข้อมูลอินสแตนซ์ CIM (Common Information Model) ของคลาสจากเซิร์ฟเวอร์ CIM โปรดจำไว้ว่า เราสามารถใช้ได้เฉพาะ cmdlet Get-CimInstance บนแพลตฟอร์ม Windows เท่านั้น
เรามีบรรทัดว่างหนึ่งบรรทัดที่ส่วนท้ายของเอาต์พุตที่สร้างโดย
Get-WmiObjectและGet-CimInstanceเนื่องจาก cmdlet เหล่านี้ไม่ได้แสดงรายละเอียดใดๆ เกี่ยวกับการเชื่อมต่อแบบไม่ใช้อุปกรณ์ที่ ก่อนหน้านี้เราสร้างสำหรับผู้ใช้ชื่อMehvish; ดูตัวอย่างสุดท้ายใน Use net use Command การเชื่อมต่อแบบไม่ใช้อุปกรณ์เหล่านี้จะไม่สามารถมองเห็นได้ในFile Explorer
ใช้คำสั่ง Get-SmbMapping
ใช้ Get-SmbMapping cmdlet เพื่อรับคุณสมบัติเฉพาะสำหรับไดรฟ์ที่แมปทั้งหมดสำหรับผู้ใช้ทั้งหมดใน PowerShell
ใช้ Get-SmbMapping Cmdlet:
Get-SmbMapping |
Select-Object LocalPath, RemotePath, Statusเอาท์พุท :
LocalPath RemotePath Status
--------- ---------- ------
Z: \\DESKTOP-NKK10JM\Share OK
K: \\DESKTOP-NKK10JM\JavaProject OK
M: \\DESKTOP-NKK10JM\AnotherFolder OK
Y: \\DESKTOP-NKK10JM\Share OK
\\DESKTOP-NKK10JM\Script Files DisconnectedGet-SmbMapping cmdlet ใช้เพื่อรับการแมปไดเรกทอรีไคลเอ็นต์ Server Message Block (SMB) ที่สร้างขึ้นสำหรับเซิร์ฟเวอร์ เราใช้ cmdlet นี้เพื่อดึงรายการการแมป SMB และคุณสมบัติที่เกี่ยวข้องสำหรับไดรฟ์ที่แมปแต่ละรายการ
จากนั้น เราส่งเอาต์พุตของ Get-SmbMapping cmdlet ไปที่ Select-Object cmdlet เพื่อเลือก LocalPath, RemotePath และคุณสมบัติ Status สำหรับไดรฟ์ที่แมปทั้งหมด รวมถึงการเชื่อมต่อแบบไม่มีอุปกรณ์
ในผลลัพธ์ด้านบน LocalPath แสดงเส้นทางในเครื่องซึ่งใช้ในการแมปเส้นทางระยะไกลบนคอมพิวเตอร์เครื่องนี้ (คอมพิวเตอร์เครื่องนี้หมายถึงตำแหน่งที่คุณรันคำสั่ง) RemotePath แสดงเส้นทางที่เข้าถึงได้จากคอมพิวเตอร์เครื่องนี้ สุดท้าย คุณสมบัติ สถานะ จะระบุว่ามีการเชื่อมต่ออยู่หรือไม่ เราจะเห็นสถานะ OK หากมีการเชื่อมต่ออยู่ มิฉะนั้น ตัดการเชื่อมต่อ
ไดรฟ์ที่แมปจะไม่คงอยู่ตามค่าเริ่มต้น คุณต้องทำให้มันคงอยู่ถ้าคุณต้องการ ยังไง? ตั้งค่าพารามิเตอร์
/persistentเป็นyesโดยใช้คำสั่งnet useการตั้งค่า/persistent:yesช่วยให้มั่นใจได้ว่าการเชื่อมต่อจะคงอยู่แม้หลังจากรีบูตแล้วประเด็นที่น่าสังเกตอีกประการหนึ่งคือ Windows จดจำการตั้งค่าถาวรของการเชื่อมต่อที่สร้างขึ้นครั้งล่าสุด หากคุณจะตั้งค่า
/persistentเป็นyesสำหรับการเชื่อมต่อหนึ่งครั้ง การเชื่อมต่อที่ตามมาทั้งหมดจะคงอยู่จนกว่าคุณจะตั้งค่า/persistentเป็นไม่เป็น/persistent:noสงสัยว่าจะทำให้การเชื่อมต่อที่สร้างไว้ก่อนหน้านี้ทั้งหมดคงอยู่ได้อย่างไร เราสามารถใช้คำสั่ง
net useเป็นnet use /persistent:yesเพื่อทำให้การเชื่อมต่อทั้งหมดคงอยู่ในเซสชันปัจจุบัน
เราจะรู้จักเจ้าของที่แมปไดรฟ์สำหรับผู้ใช้ทั้งหมดได้หรือไม่ เราขอชื่อหุ้นด้วยได้ไหม? ใช่ ดูตัวอย่างต่อไปนี้
ใช้ Get-SmbConnection Cmdlet:
Get-SmbConnection |
Select-Object UserName, ShareNameเอาท์พุท :
UserName ShareName
-------- ---------
DESKTOP-NKK10JM\Mehvish AnotherFolder
DESKTOP-NKK10JM\Mehvish JavaProject
DESKTOP-NKK10JM\Mehvish ShareGet-SmbConnection cmdlet สร้างการเชื่อมต่อจากไคลเอ็นต์ SMB ไปยังเซิร์ฟเวอร์ SMB เราใช้ cmdlet นี้เพื่อรับ ชื่อผู้ใช้ และ ShareName ของเจ้าของ โปรดจำไว้ว่า Share เชื่อมต่อสองครั้ง โดยมีอักษรระบุไดรฟ์ Z: และ Y: แต่จะแสดงรายการเพียงครั้งเดียวในตัวอย่างข้างต้น คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับ cmdlet นี้ได้ที่นี่
ใช้ Get-PSDrive Cmdlet
ใช้ Get-PSDrive cmdlet เพื่อรับไดรฟ์ที่แมปสำหรับผู้ใช้ทั้งหมดใน PowerShell
ใช้ Get-PSDrive Cmdlet:
Get-PSDrive -PSProvider FileSystemเอาท์พุท :
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
C 35.34 82.59 FileSystem C:\ Users\Mehvish
D 19.92 468.36 FileSystem D:\
E 3.82 439.41 FileSystem E:\
K 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\JavaProject
M 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\AnotherFolder
Y 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\Share
Z 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\Shareที่นี่ เราใช้ Get-PSDrive เพื่อรับไดรฟ์ทั้งหมดในเซสชันปัจจุบันที่มาจาก FileSystem ซึ่งเราระบุโดยใช้พารามิเตอร์ -PSProvider . หากเราไม่ระบุพารามิเตอร์นี้ Get-PSDrive จะดึงข้อมูลไดรฟ์แบบลอจิคัลของ Windows, ไดรฟ์ชั่วคราวที่ระบุเซสชัน, ไดรฟ์ที่เปิดเผยโดย PowerShell และไดรฟ์เครือข่ายที่แมปถาวร
เรียนรู้ความแตกต่างระหว่างไดรฟ์ชั่วคราวและไดรฟ์ถาวรได้ที่นี่
มาดูตัวอย่างต่อไปนี้เพื่อทำความเข้าใจสิ่งที่เราพูดในย่อหน้าสุดท้ายให้ชัดเจน
ใช้ Get-PSDrive Cmdlet:
Get-PSDrive เอาท์พุท :
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
Alias Alias
C 35.38 82.56 FileSystem C:\ Users\Mehvish
Cert Certificate \
D 19.92 468.36 FileSystem D:\
E 3.82 439.41 FileSystem E:\
Env Environment
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
K 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\JavaProject
M 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\AnotherFolder
Variable Variable
WSMan WSMan
Y 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\Share
Z 3.82 439.41 FileSystem \\DESKTOP-NKK10JM\Shareเราสำรวจวิธีแก้ปัญหาต่างๆ คุณสามารถเลือกได้ตามความต้องการของโครงการของคุณ
นั่นคือทั้งหมดที่เกี่ยวกับวิธีรับไดรฟ์ที่แมปสำหรับผู้ใช้ทั้งหมดใน PowerShell
