스크립트를 사용하여 네트워크 드라이브 매핑

스크립트를 사용하여 네트워크 드라이브 매핑

스크립트를 사용하려고 합니다.

  1. 드라이브 매핑 해제
  2. 해당 드라이브를 매핑하는 데 사용된 캐시된 자격 증명을 지웁니다.
  3. 다른 사용자 자격 증명을 사용하여 드라이브를 다시 매핑하십시오.

Windows 7에서는 다음 스크립트가 저에게 효과적이었습니다.

@echo off
net use Z: /delete /y >nul
net stop LanmanWorkstation /y >nul
net start LanmanWorkstation >nul
timeout 1 >nul
net use Z: \\path\to\directory

이 스크립트는 Z에 매핑된 것을 마운트 해제하기 위한 것입니다. 그런 다음 z를 마운트하는 데 사용된 캐시된 자격 증명을 지웁니다. 그런 다음 다른 사용자의 자격 증명을 사용하여 드라이브를 다시 매핑합니다.

Windows 10에서 이것을 실행하면 net stop 및 net start에서 액세스 거부 오류가 발생합니다. 스크립트의 바로가기를 만들고 항상 관리자 권한으로 실행되도록 바로가기를 설정해 보았지만 그룹 정책 설정으로 인해 이 옵션이 내 상자에서 회색으로 표시되었습니다.

저는 이와 동일한 매핑 해제/매핑 솔루션을 달성하는 방법을 찾으려고 노력 중이며 현재 powershell을 통해 부여된 옵션을 탐색 중입니다. Powershell에서의 현재 시도는 다음을 사용하고 있습니다.

mount -Name "z" -PSProvider filesystem -Root "\\path\to\directory" -Persist

드라이브가 Windows 탐색기에 나타나도록 하려면 맵이 지속적이어야 합니다. 이 명령은 powershell에서 실행할 때 정상적으로 작동하지만 실행하기 위해 파일을 두 번 클릭하면 드라이브가 매핑되지 않습니다. 아마도 액세스 문제 때문일 것입니다. 저는 Powershell을 처음 접했고 아직 배우는 중이므로 사용 가능한 모든 옵션을 알지 못합니다. 내가 원하는 효과를 얻을 수 있는 방법을 아는 사람이 있나요?

답변1

아래를 참조하세요 ---

Windows 자격 증명 캐시 지우기

캐시된 자격 증명을 삭제하는 유틸리티는 찾기 어렵습니다. 인증서 데이터와 사용자 비밀번호를 모두 저장합니다.

명령 프롬프트를 열거나 실행 명령에 다음을 입력합니다.

 rundll32.exe keymgr.dll,KRShowKeyMgr

명령줄 유틸리티도 있습니다:

C:\> cmdkey /?

저장된 사용자 이름과 비밀번호를 생성, 표시 및 삭제합니다.

드라이브 매핑은 역사적으로 고통스러운 일입니다. 너도 알듯이... ;-}

VBS 또는 WMIC에서 WScript를 사용하여 이 작업을 수행할 수도 있으므로 Net 사용이 유일한 옵션은 아닙니다. 따라서 PowerShell은 이를 위해 WMI를 수행할 수 있습니다.

#PSTip WScript.Network를 사용하여 매핑된 네트워크 드라이브 만들기

드라이브를 매핑하는 방법의 예는 다음에서 볼 수 있습니다.

(New-Object -ComObject WScript.Network).MapNetworkDrive('Z:','\\server\folder')

이렇게 하면 드라이브가 지속적으로 매핑되지 않습니다. 즉, 재부팅 후 또는 사용자가 로그아웃하면 드라이브가 사라집니다. 드라이브 매핑이 지속되도록 하려면 세 번째 인수를 추가해야 합니다. 부울 값은 true로 설정됩니다.

(New-Object -ComObject WScript.Network).MapNetworkDrive('Z:','\\server\folder',$true)

-persist 스위치를 사용하는 것은 드라이브 고정성을 위한 PowerShell 옵션이지만 v3부터 Smb cmdlet도 사용할 수 있습니다.

Get-Command -Name '*smb*'

CommandType     Name                   Version    Source
-----------     ----                   -------    ------
...         
Function        Get-SmbGlobalMapping   2.0.0.0    SmbShare
Function        Get-SmbMapping         2.0.0.0    SmbShare
...        
Function        Get-SmbShare           2.0.0.0    SmbShare
Function        Get-SmbShareAccess     2.0.0.0    SmbShare
....
Function        New-SmbMapping         2.0.0.0    SmbShare
...        
Function        New-SmbShare           2.0.0.0    SmbShare
...            
Function        Remove-SmbShare        2.0.0.0    SmbShare
...           
Function        Set-SmbShare           2.0.0.0    SmbShare
...

또한보십시오: Powershell: 원격 컴퓨터의 네트워크 드라이브 매핑/매핑 해제

이것에 관해서는...

powershell에서 실행했지만 실행하기 위해 파일을 두 번 클릭하면 액세스 문제로 인해 드라이브가 매핑되지 않습니다.

……별거 아닙니다. .ps1은 기본적으로 메모장이나 기타 텍스트 편집기와 연결되어 있습니다. 이것은 의도적으로 설계된 것입니다. 물론, 해당 연결을 변경할 수 있지만 그렇게 해서는 안 됩니다. 사용자는 무엇이든 두 번 클릭하면 귀하와 귀하의 조직에 보안/위험 관리/운영상 많은 실제 문제가 발생할 수 있습니다.

높은 권한을 사용하거나 사용하지 않고 두 번 클릭하여 실행하는 방법이 있습니다.

  1. 협회 전체의 일, 그런 짓은 하지 마세요.
  2. bat/cmd 파일에서 .ps1을 호출합니다.

나는 항상 이것을 느꼈지만 .bat, .vbs, .cmd에 대해서도 두 번 클릭하여 실행하면 PowerShell이 ​​사용되기 훨씬 전에 실행되는 것은 나쁜 일이었습니다. 그러나 업계는 이러한 습관에 빠져들었고 따라서 사람들을 그 습관에서 벗어나게 하기가 어렵습니다.

  1. 두 번 클릭하여 실행하도록 올바르게 구성된 사용자 정의 바로 가기를 만듭니다.

예:

# specify the path to your PowerShell script
$ScriptPath = "C:\test\test.ps1"

# create a lnk file
$shortcutPath = [System.IO.Path]::ChangeExtension($ScriptPath, "lnk")
$filename = [System.IO.Path]::GetFileName($ScriptPath)

# create a new shortcut
$shell = New-Object -ComObject WScript.Shell
$scut = $shell.CreateShortcut($shortcutPath)

# launch the script with powershell.exe:
$scut.TargetPath = "powershell.exe"

# skip profile scripts and enable execution policy for this one call
# IMPORTANT: specify only the script file name, not the complete path
$scut.Arguments = "-noprofile -executionpolicy bypass -file ""$filename"""

# IMPORTANT: leave the working directory empty. This way, the 
# shortcut uses relative paths 
$scut.WorkingDirectory = ""

# optinally specify a nice icon
$scut.IconLocation = "$env:windir\system32\shell32.dll,162"

# save shortcut file
$scut.Save()

# open shortcut file in File Explorer
explorer.exe /select, $ShortcutPath
  1. 이 MS PowerShellGallery.com 도구를 사용하여 스크립트를 .exe로 변환하세요.

PS2EXE-GUI: GUI를 사용하여 PowerShell 스크립트를 EXE 파일로 "변환"

따라서 옵션이 있습니다. 당신이 선택하는 것은 운영 수당 등의 문제입니다.

관련 정보