2016-09-23 1 views
0

PowerShell v2에서 드라이브 문자를 매핑하는 데 사용하고 드라이브 문자가 나타나고 Explorer에서 사용할 수 있다는 점에서 작동합니다. 그때 PowerShell에서 아무것도 할 해당 드라이브 문자를 사용하려고하면매핑 된 드라이브 문자를 즉시 ​​사용할 수 있습니까?

$Network = New-Object -ComObject "Wscript.Network" 
$Network.MapNetworkDrive($drive.name, $drive.value, $true) 

그러나, 나는 DriveNotFoundException을받을 폴더를 만들 말한다. 하지만 제가 말했듯이 드라이브는 수동으로 사용할 수 있습니다. 잠깐 기다려야하거나 탐색기를 새로 고쳐야 할 필요가 있다고 생각했는데 그렇게하면 아무 것도 영향을 미치지 않는 것 같습니다. 그러나 미리 돌아가서 드라이브가 있는지 확인하고 그렇지 않은 경우에만 스크립트를 다시 실행하면 드라이브가 표시되고 다시 생성되지 않으며 다음 작업이 정상적으로 작동합니다. 마치 드라이브 문자가 세션 기반인지? 나는이 세션 기반의 드라이브를 제공 할 것을 희망,하지만 좋은에서뿐만 아니라

New-PSDrive -name:($drive.name -replace ':', '') -psProvider:FileSystem -root:$drive.value -scope:Global 

를 추가했습니다.

추가 주름은 스크립트를 관리자 권한으로 실행해야한다는 것입니다.하지만 두 개의 다른 스크립트 (드라이브를 만들 스크립트와 스크립트를 사용하는 스크립트)로 실행하면 관리자 권한으로 실행될 때 스크립트가 작동합니다. 두 작업이 하나의 스크립트에서 완료 될 때만 실패합니다.

마지막으로, PS 3은 매핑 된 드라이브를 처리하는 더 좋은 방법을 알고 있지만 내 제어 할 수없는 것들 때문에 PS v2로 제한됩니다.

+0

가 공백이나 콜론, 중 작동, 그리고 내가 할 수 콜론이 매개 변수와 값을 시각적으로 연결한다는 것을 알게되면 코드가 나를 더 읽기 쉽게 만듭니다. 편집 : 콜론에 대한 의견을 삭제 했습니까? – Gordon

답변

0

PowerShell v2에서 원하는 것이 무엇인지 생각하지 않습니다. New-PSDrive Windows 드라이브를 만들려면 PowerShell v2에서 사용할 수없는 -Persist 매개 변수를 추가해야합니다. documentation에서

:

-Persist

는 윈도우 네트워크 드라이브를 맵핑 작성합니다. 매핑 된 네트워크 드라이브는 로컬 컴퓨터의 Windows에 저장됩니다. 세션 고유가 아닌 영구적이며 File Explorer 및 기타 도구에서보고 관리 할 수 ​​있습니다.

내가 (PowerShell을 V3 이상으로 업그레이드 제외) 당신의 최선의 선택을 말하고 싶지만하면 net 명령을 사용하는 것입니다 :

& net use $drive.name $drive.value /persistent:yes 
+0

흠, 이전 DOS 명령에 VB 스크립트 접근 방식의 문제가 없을 수도 있습니까? 내일 그렇게해야 할거야! – Gordon

+0

이 명령은 Windows NT에서 제공되며 DOS와는 아무런 관련이 없습니다. –

+0

아, 예, DOS와 "명령 줄"을 통합하는 것은 좋지 않습니다. 다른 동물들. 즉, 동일한 결과로 Net Use 방식을 시도했습니다. 익스플로러에서 드라이브 문자를 얻지 만 나중에 코드에서 드라이브 문자를 사용하여 폴더를 만들려고하면 DriveNotFoundException 오류가 발생합니다. :(하지만, 내가 두 줄의 테스트를 만들었을 때, 실제로는 여러 기능을 가지고 있다는 사실을 테스트했습니다. – Gordon

관련 문제