PowerShell에서는 현재 드라이브가 네트워크 드라이브인지 아닌지를 어떻게 결정할 수 있습니까?
-
03-07-2019 - |
문제
현재 드라이브가 매핑 된 드라이브인지 아닌지 PowerShell 내에서 알아야합니다.
불행히도 Get-PSDrive는 "예상대로"작동하지 않습니다.
PS:24 H:\temp
>get-psdrive h
Name Provider Root CurrentLocation
---- -------- ---- ---------------
H FileSystem H:\ temp
그러나 MS-DOS에서 "NET 사용"은 H : 실제로 매핑 된 네트워크 드라이브임을 보여줍니다.
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
OK H: \\spma1fp1\JARAVJ$ Microsoft Windows Network
The command completed successfully.
내가하고 싶은 것은 드라이브의 루트를 얻고 프롬프트에 표시하는 것입니다 (참조 : 참조 : 참조 : PowerShell 프롬프트 사용자 정의 - CMD의 $ m $ p $ _ $+$ g에 해당합니까?)
해결책
.NET 프레임 워크 사용 :
PS H:\> $x = new-object system.io.driveinfo("h:\")
PS H:\> $x.drivetype
Network
다른 팁
WMI를 시도해보십시오 :
Get-WMI -query "Select ProviderName From Win32_LogicalDisk Where DeviceID='H:'"
WMI를 사용하는 다른 방법 :
get-wmiobject Win32_LogicalDisk | ? {$_.deviceid -eq "s:"} | % {$_.providername}
모든 네트워크 드라이브를 가져옵니다.
get-wmiobject Win32_LogicalDisk | ? {$_.drivetype -eq 4} | % {$_.providername}
허용 된 답변에 약간 더 컴팩트 한 변화 :
[System.IO.DriveInfo]("C")
아래와 같이 한 단계 더 나아가십시오.
([System.IO.DriveInfo]("C")).Drivetype
이것은 로컬 시스템에만 작동합니다. 원격 컴퓨터에는 WMI를 사용하십시오.
가장 신뢰할 수있는 방법은 WMI를 사용하는 것입니다
get-wmiobject win32_volume | ? { $_.DriveType -eq 4 } | % { get-psdrive $_.DriveLetter[0] }
드라이브 타입은 다음 값과의 열거입니다
0- 알 수없는 1- 루트 디렉토리 없음 2- 탈착식 디스크 3- 로컬 디스크 4- 네트워크 드라이브 5- 소형 디스크 6- 램 디스크
다음은 내가 한 블로그 게시물에 대한 링크입니다. 주제에
제휴하지 않습니다 StackOverflow