PowerShell에서는 현재 드라이브가 네트워크 드라이브인지 아닌지를 어떻게 결정할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/158359

문제

현재 드라이브가 매핑 된 드라이브인지 아닌지 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- 램 디스크

다음은 내가 한 블로그 게시물에 대한 링크입니다. 주제에

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top