UFO ET IT

관리자로 실행중인 PowerShell에서 네트워크 드라이브에 액세스 할 수 없습니다.

ufoet 2020. 12. 30. 08:32
반응형

관리자로 실행중인 PowerShell에서 네트워크 드라이브에 액세스 할 수 없습니다.


Windows 7 x64 가상 머신에서 PowerShell을 실행하고 있습니다. 네트워크 드라이브 (Z :)로 매핑 된 호스트에 공유 폴더가 있습니다. PS를 정상적으로 실행하면 해당 드라이브에 제대로 액세스 할 수 있지만 "관리자 권한"으로 실행하면 다음과 같이 표시됩니다.

Set-Location : Cannot find drive. A drive with the name 'Z' does not exist.
At line:1 char:13
+ Set-Location <<<<  Z:
    + CategoryInfo          : ObjectNotFound: (Z:String) [Set-Location], DriveNotFoundException
    + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.SetLocationCommand

관리자로 네트워크 드라이브에 액세스하려면 어떻게합니까?


결국 수정은 관리자로 실행하는 동안 드라이브 문자를 다시 매핑하는 것입니다 .

net use Z: "\\vmware-host\Shared Folders"

동일한 PowerShell 인스턴스 (또는 PowerShell에서)에서 수행 할 필요가 없습니다. 전체 로그온 세션에 대해 한 번만 수행하면됩니다.


제 경우에는 드라이브 매핑 대신 UNC 경로를 간단히 사용할 수 있었고 제대로 작동했습니다.

따라서 예에 따라 매핑 된 드라이브 Z : \를 사용하는 대신 "\\ vmware-host \ Shared Folder"를 경로로 사용했습니다.


나에게했다 또 다른 해결 방법 나이를 찾기 위해 실행하는 net use예약 된 작업에서 신약 AUTHORITY \ SYSTEM에 같은 계정. 분명히 이 계정으로 매핑 된 드라이브는 모든 사용자와 모든 고도 수준 표시 .

나는 이것을 테스트했으며 NFS 공유에서도 작동합니다 (조금 까다로울 수 있음). 시스템 시작시 실행되도록 예약 된 작업 세트를 만들고 일반적인 명령을 지정하기 만하면됩니다.

net use Z: \\server\share /persistent:no

을 사용하여 한 번만 실행해도 될 수 /persistent:yes있지만 시도하지 않았습니다. 물론 "다시 매핑"도 작동하지만 다른 컨텍스트에서 실행되는 예약 된 작업에는 해당 드라이브가 여전히 표시되지 않습니다. 단점은 모든 실제 사용자도 볼 수 있으므로 다중 사용자 설정에는 좋지 않습니다.


Powershell이 ​​관리자 모드에서 실행될 때 profile.ps1에서 "누락 된"PSDrive를 다시 만드는 다음 해키 솔루션을 사용하고 있습니다.

요점

# Reconnect PSDrives for network connections when running with elevated privileges
$elevated = (([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
if( $elevated ) {
    net use | ?{ $_ -match ":\s+\\\\"  -and !$_.StartsWith("Unavailable") } | %{
        $tokens = $_.split(":")
        $psdrivename = $tokens[0][$tokens[0].length-1]
        $path = $tokens[1].trim().split(" ")[0].trim()

        if( !(get-psdrive | ?{ $_.Name -eq $psdrivename } )) {
            write-host ( "Restoring PSDrive for {0}: {1}" -f $psdrivename, $path )
            new-psdrive $psdrivename FileSystem $path | out-null
        }
    }
}  

psdrive 를 해당 데이터에 액세스하는 것은 어떻습니까? PSDrive는 스크립트를 작성하거나 powershell에서 네트워크 데이터 저장소에 액세스 할 때 시스템 매핑 된 드라이브보다 낫지는 않지만 잘 작동합니다.

New-PSDrive cmdlet 사용 지침 은 다음과 같습니다. Technet : New-PSDrive

관리자와 사용자 계정 모두에 대한 프로필에 새 psdrive를 추가 할 때마다 새 psdrive를 만들 필요가없는 경우 powershell을 열 때마다 자동으로 사용할 수 있습니다.

~ 댄


Vista 이후로 Microsoft에 알려진 문제인 것 같습니다.
마이크로 소프트 Knowled 자료 문서안전하지 않은 레지스트리 수정.

우리 직원 중 일부는이 후에 기계가 시작되지 않을 수도 있다는 느낌을 가지고 있기 때문에 현재이 접근법을 평가하고 있습니다 ;-)


다른 답변 중 어느 것도 나를 위해 일하지 않았습니다. 그러나 @TimothyLeeRussell의 대답 은 나를 올바른 방향으로 가리 켰습니다.

제 경우 .bat에는 네트워크 드라이브에 파일이 있습니다. 관리자 권한으로 실행하면 명령 프롬프트 창만 깜박이고 즉시 사라집니다. 관리자 권한 명령 프롬프트에서 파일의 내용을 실행하면 제대로 작동했습니다.

마지막으로 .bat매핑 된 네트워크 드라이브에서 파일을 실행 해 보았습니다 . UNC 경로를 사용하도록 파일 실행을 변경했는데 제대로 작동했습니다.

참조 URL : https://stackoverflow.com/questions/4742992/cannot-access-network-drive-in-powershell-running-as-administrator

반응형