

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Server Message Block(SMB) 네트워크 드라이브 매핑
<a name="map-smb-network-drives"></a>

SMB의 대상 네트워크에 있는 모든 머신을 사용할 수 있습니다. 세션 스크립트를 통해 설정을 구성하려는 경우 세션 스크립트는 이미지별로 구성되므로 사용자가 로그온할 때 호출되는 스크립트를 먼저 생성해야 합니다.

Server Message Block(SMB) 네트워크 드라이브를 매핑하려면 다음 단계를 수행합니다.

## 1단계: 서비스가 실행 중인지 확인
<a name="smb-start"></a>

시작 메뉴에서 **services.msc**를 열고 다음 서비스가 모두 실행 중인지 확인합니다.
+ DNS 클라이언트
+ 기능 검색 리소스 게시
+ SSDP 검색
+ UPnP 디바이스 호스트

## 2단계: SMB 폴더 생성
<a name="create-smb-server-manager"></a>

파일 탐색기를 사용하여 SMB를 생성할 수 있습니다.

**파일 탐색기를 사용하여 SMB 공유 폴더를 구성하려면**

1. SMB 폴더를 마우스 오른쪽 버튼으로 클릭하고 **속성**, **공유**를 선택합니다.

1. **고급 공유**를 선택합니다.

1. **고급 공유**에서 **이 폴더 공유**를 선택한 다음 **권한**을 선택합니다.

1. 모든 사용자에게 권한을 제공하려면 기본 설정을 그대로 둡니다.

   특정 사용자를 추가하려면 **권한 공유**에서 **모든 사람**, **제거**를 선택합니다. 그런 다음 **추가**를 선택하고 파일 공유에 액세스하려는 사용자 또는 그룹을 입력합니다.

   추가하는 각 사용자 또는 그룹에 대해 **전체 제어**, **변경** 또는 **읽기 권한**을 할당하려면 **허용**을 선택합니다.

1. **적용**, **확인**, **확인**, **닫기**를 선택합니다.

## 3단계: 도메인에서 SMB에 액세스할 수 있는지 확인
<a name="verify-smb"></a>

동일한 보안 그룹을 사용하고 동일한 도메인에 조인하는 다른 서버에서 파일 탐색기를 엽니다. 네트워크 경로 폴더로 이동하여 제공된 네트워크 경로를 통해 네트워크 공유에 액세스합니다. **속성**, **공유**, **네트워크 경로**를 선택합니다.

## 4단계: 사용자가 로컬/도메인 그룹 정책에서 심볼 링크를 생성할 수 있도록 허용
<a name="enable-smlink-smb"></a>

사용자가 그룹 정책에 정의된 세션 스크립트 또는 로그인 스크립트를 적용할 수 있도록 로컬/도메인 그룹 정책에서 심볼 링크 생성 기능을 활성화합니다. 이렇게 하면 5단계에서 사용자 권한으로 스크립트를 생성할 수 있습니다.

**사용자가 로컬/도메인 그룹 정책에서 심볼 링크를 생성할 수 있도록 하려면**

1. 이 정책을 정의하는 데 사용할 GPO에서 **컴퓨터 구성**, **Windows 설정**, **보안 설정**, **사용자 권한 할당**, **정책**, **심볼 링크 생성**을 선택합니다. 그런 다음 사용자가 포함할 수 있는 권한을 업데이트합니다. 심볼 링크 생성에 대한 자세한 내용은 [심볼 링크 생성](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/security-policy-settings/create-symbolic-links)을 참조하세요.

1. 기본적으로 원격-원격(예: 다른 유사한 심볼 링크 내의 네트워크 공유에 매핑된 심볼 링크) 및 원격-로컬(예: 네트워크 공유에 매핑된 심볼 링크 내의 로컬 공유에 매핑된 심볼 링크) 액세스는 비활성화되어 있습니다. 심볼 링크 매핑이 필요한 경우 아래 명령을 실행합니다.
   + 원격-원격 액세스 활성화 - `fsutil behavior set SymlinkEvaluation R2R:1`
   + 원격-로컬 액세스 활성화 - `fsutil behavior set SymlinkEvaluation R2L:1 `

## 5단계: 사용자가 로그온할 때 호출되는 스크립트 생성
<a name="create-script-smb"></a>

WorkSpaces 애플리케이션 세션 스크립트 또는 GPO 로그온 스크립트를 사용하여 사용자가 로그온할 때 호출되는 스크립트를 생성합니다. WorkSpaces 애플리케이션 세션 스크립트를 사용하도록 선택하면 세션 스크립트는 해당 특정 WorkSpaces 애플리케이션 이미지에만 적용됩니다. GPO 로그인 스크립트를 사용하는 경우, GPO는 도메인/OU에 적용되며, 이는 플릿에 구성할 수 있습니다. 이렇게 하면 소유한 모든 이미지에 대해 스크립트를 구성할 필요가 없습니다.

### 옵션 1: 세션 스크립트를 사용하여 내 파일 아래에 SMB 공유 폴더 탑재(Powershell 사용)
<a name="powershell-smb"></a>

**세션 스크립트를 사용하여 내 파일 아래에 SMB 공유 폴더를 탑재하려면(Powershell 사용)**

1. 사용자 권한을 성공적으로 정의한 후 사용자 컨텍스트 또는 시스템 컨텍스트를 사용하여 다음 예제 스크립트를 구성합니다.

   다음은 사용자 컨텍스트를 사용하는 config.json 스크립트의 예입니다.

   ```
   "SessionStart": {
       "executables": [
       {
           "context": "system",
           "filename": "",
           "arguments": "",
           "s3LogEnabled": true
       },
       {
           "context": "user",
           "filename": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
           "arguments": "-File \"C:\\AppStream\\SessionScripts\\userStart.ps1\"",
           "s3LogEnabled": true
       }
    ],
   "waitingTime": 30
   ```

   다음은 시스템 컨텍스트를 사용하는 예제 스크립트입니다.

   ```
   "SessionStart": {
       "executables": [
       {
           "context": "system",
           "filename": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
           "arguments": "-File \"C:\\AppStream\\SessionScripts\\systemStart.ps1\"",
           "s3LogEnabled": true
       },
       {
           "context": "user",
           "filename": "",
           "arguments": "",
           "s3LogEnabled": true
       }
    ],
   "waitingTime": 30
   ```

1. 다중 세션 플릿을 사용하는 경우 시스템 환경 변수 `$env:AppStream_Session_UserName`을 사용하여 사용자의 내 파일 폴더로 이동할 수 있습니다. 이렇게 하면 시스템 컨텍스트 `$env:USERNAME`를 사용할 때 사용자 이름 대신 `Admin`에 매핑할 수 있습니다.

   ```
   # Define the target application path
   $targetPathes = "<SMB-PATH>"
   
   # Define the shortcut location
   $symlinkLocation = "C:\Users\$Env:AppStream_Session_UserName\My Files\Custom Folder"
   
   # Create the junction for Custom Home Folder under MyFiles
   New-Item -ItemType SymbolicLink -Path $symlinkLocation -Target $targetPaths
   ```

### 옵션 2: GPO 로그온 스크립트를 사용하여 SMB 공유 폴더를 내 파일 아래에 탑재
<a name="powershell-gpo-logon"></a>

1. 파일 또는 폴더에 대한 심볼 핑크를 생성하여 SMB 공유 폴더를 탑재합니다. 자세한 내용은 [예제 7: 파일 또는 폴더에 대한 심볼 링크 생성](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.                                         management/new-item?view=powershell-7.4#example-7-create-a-symbolic-link-to-a-file-or-folder)을 참조하세요.

1. [사용자 로그온 스크립트를 할당합니다.](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-                                 2012-r2-and-2012/dn789196(v=ws.11)#how-to-assign-user-logon-scripts)

1. 다음 스크립트를 추가하여 내 파일 아래에 사용자 지정 홈 폴더에 대한 정션을 생성합니다.

   ```
   # Define the target application path
   $targetPathes = "<SMB-PATH>"
   
   # Define the shortcut location
   $symlinkLocation = "C:\Users\$env:Username\My Files\Custom Folder"
   
   # Create the junction for Custom Home Folder under MyFiles
   New-Item -ItemType SymbolicLink -Path $symlinkLocation -Target $targetPaths
   ```

   Windows Server 2022 이미지를 사용하는 경우 로그온 스크립트가 성공적으로 완료될 때까지 내 파일 폴더가 생성되지 않는 문제가 발생할 수 있습니다. 이로 인해 로그온 스크립트를 통해 SMB 탑재 작업을 수행할 때 제한 시간이 초과될 수 있습니다. 이 문제를 해결하려면 SMB를 탑재하는 동안 다음을 수행하여 로그온 스크립트를 사용하여 독립 프로세스(`Start-Process`)를 트리거합니다.

   1. 로그온 스크립트를 생성합니다.

      ```
      # Define the log file path
      $logFilePath = "<This-is-where-your-log-files-are-saved>"
      
      # Function to write log messages
      function Write-Log {
          param (
              [string]$message
          )
          $timestamp = get-date -format "yyyy-MM-dd HH:mm:ss"
          $logMessage = "$timestamp - $message"
          $logMessage | Out-File -FilePath $logFilePath -Append -Encoding UTF8
      }
      
      try {
          Write-Log "Setting execution policy..."
          Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
          Write-Log "Unblocking logon script file..."
          $filePath = "<This-is-where-your-actual-logon-script-is-linked>"
          Unblock-File -Path $filePath
          Write-Log "Running actual logon script..."
          Start-Process -FilePath 'Powershell.exe' -ArgumentList "-File `"$filePath`""
      } catch {
          Write-Log "An error occurred: $_" "ERROR"
      }
      ```

   1. 필요한 경우 그룹 정책을 사용하여 이 로그온 스크립트 지연 구성을 업데이트합니다. 자세한 내용은 [로그온 스크립트 지연 구성](https://admx.help/?Category=Windows_8.1_2012R2&Policy=Microsoft.Policies.GroupPolicy::LogonScriptDelay)을 참조하세요. 로그온 스크립트 지연은 비동기 로그온 스크립트를 트리거하기 전에 지연되는 시간입니다. 기본값은 5분입니다.

   1. 플릿을 다시 시작하여 로그온 스크립트 지연을 적용합니다.