ค้นหาเว็บไซต์

รับไดรฟ์ที่แมปสำหรับผู้ใช้ทั้งหมดใน 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:        False

Get-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:        False

Get-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  Disconnected

Get-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 Share

Get-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

บทความที่เกี่ยวข้อง