다음을 통해 공유


PowerShell Cmdlet 웹 배포

작성자: 오와이스 샤이크

웹 배포 V3.0은 웹 배포 API [Microsoft.Web.Deployment]에서 지원하는 대부분의 작업을 수행하기 위해 PowerShell cmdlet과 함께 제공됩니다. 이 API 에 대한 자세한 내용은 여기를 참조하세요. 이러한 cmdlet은 웹 배포의 일반적인 이상 설치에 스냅인으로 설치되고 등록된 WDeploySnapin3.0이라는 스냅인에 있습니다. 이러한 cmdlet을 사용하려면 PowerShell 콘솔이 시작될 때마다 스냅인을 추가하거나 모든 콘솔이 스냅인을 자동으로 로드하도록 하는 스냅인을 PowerShell 프로필에 추가합니다.

PowerShell 콘솔이 로드될 때 추가하려면 콘솔 창에서 다음 명령을 실행합니다.

Add-PSSnapin WDeploySnapin3.0

PowerShell 프로필에 추가하려면 다음을 수행합니다.

  1. PowerShell 프로필이 이미 있는 경우 4단계로 이동합니다.
  2. 내 문서> 아래에 <WindowsPowerShell 폴더를 만듭니다.
  3. Microsoft.PowerShell_profile.ps1이라는 파일 만들기
  4. PowerShell 프로필 파일에 'Add-PSSnapin WDeploySnapin3.0' 줄을 추가합니다.

주의해야 할 몇 가지 사항은 다음과 같습니다.

  1. PowerShell 콘솔은 64비트 시스템에서 64비트에서 실행되며 Windows8까지를 제외하고 .Net 2.0에서 실행됩니다. 둘 중 하나 또는 둘 다로 인해 문제가 발생하는 경우 솔루션에 대한 문제 해결 섹션을 참조하세요.
  2. 웹 배포 패키지를 만드는 모든 cmdlet은 가장 일반적인 작업에 대한 매개 변수를 만들고 이를 사용하는 cmdlet은 매개 변수 값을 허용합니다.
  3. 사이트 또는 그 아래에 있는 앱을 삭제하기 위한 제거 cmdlet은 하나뿐입니다.
  4. 웹 배포에는 매개 변수가 있지만 PowerShell cmdlet 매개 변수에 직교됩니다. 이 문서에서 매개 변수를 참조하는 경우 cmdlet 매개 변수를 의미합니다. 웹 배포 매개 변수는 특히 웹 배포 매개 변수로 호출되었습니다.

9\. 설정 파일 게시

아래에 제공된 모든 cmdlet에는 원격 서버 또는 원격 데이터베이스와 같은 원격 아티팩트에 대해 실행할 수 있는 기능이 있습니다. 자격 증명 이상이 필요합니다. 예를 들어 원격 서버 이름, 원격 데이터베이스 연결 문자열, 테스트 인증서 등으로 서버에 게시를 허용할지 여부가 필요합니다. 쉽게 사용할 수 있도록 서버 관리자에서 소비자로 자격 증명 정보를 전송합니다. 이러한 설정을 함께 그룹화할 새 파일 형식이 시작되었습니다. 이 파일을 .publishsettings로 끝나는 게시 설정 파일이라고 합니다. Visual Studio에서 게시 및 WebMatrix에 사용됩니다.

다른 cmdlet에서 사용할 수 있도록 이러한 파일을 만들고 편집하려면 New-WDPublish설정 cmdlet을 사용할 수 있습니다. 파일 이름을 지정하지 않으면 새 guid.publishsettings> 이름으로 <문서 디렉터리에 새 파일을 만듭니다. 이 경로는 파일을 만들 때 표시됩니다. 파일 이름을 지정하고 파일이 없으면 경로에 지정된 폴더에 위에서 설명한 대로 만들어지게 되지만 파일 경로는 유효해야 합니다. 파일이 있는 경우 명령을 실행하는 동안 지정한 특성에 대한 값만 수정됩니다. 단, 알 수 없는 파일의 특성을 제외하고 제거됩니다.

예: 이 예제에서는 자격 증명 개체를 가져오고 다른 매개 변수와 함께 새 게시 설정 파일 cmdlet에 전달합니다.

$cred = Get-Credential
New-WDPublishSettings -ComputerName owais-1 -Site Site1 -Credentials $cred -AllowUntrusted -SiteUrl "https://www.mywebsite.com" -FileName C:\pprofiles\mywebsite.publishsettings -AgentType wmsvc
Get-WDPublishSettings cmdlet allows to load values from a publish setting file into PublishSettings object.
$publishsettings=Get-WDPublishSettings C:\pprofiles\mywebsite.publishsettings

II. Backup

모든 백업 cmdlet에는 출력이라는 위치 매개 변수(첫 번째 위치 매개 변수인 backup-wdserver를 제외한 두 번째 매개 변수)가 있습니다. 백업을 만들 폴더의 경로를 사용합니다. 백업은 항상 웹 배포 zip 패키지입니다. 패키지 공급자에서 웹 배포 패키지에 대해 자세히 읽을 수 있습니다. 경로가 지정되지 않은 경우 사용자의 문서 폴더 아래에 있는 '웹 배포 백업'이라는 폴더에 백업이 만들어집니다. 백업 이름은 machinename_nameofproviderused_[Siteorapporfoldername(선택 사항)]_timestamp.zip.

이러한 모든 cmdlet은 SourcePublish설정 매개 변수에 대한 게시 설정 파일을 전달하여 원격 서버 정보를 제공하지 않는 한 기본적으로 로컬에서 작동합니다.

A. IIS

모든 IIS cmdlet은 설치된 IIS 버전 7 이상에서 작동합니다.

1. 서버

Backup-WDServer

설명: 인수가 없으면 이 명령이 실행되는 현재 서버를 백업합니다. 이 작업에는 잘 알려진 웹 서버 공급자를 사용합니다. 따라서 만든 패키지에는 웹 서버 패키지에 포함될 모든 아티팩트가 포함됩니다. 이 공급자 에 대한 자세한 내용은 여기를 참조하세요.

Cmdlet 매개 변수: ConfigOnly 매개 변수를 사용하면 모든 콘텐츠를 제외할 수 있으며 SkipFileList 및 SkipFolderList 매개 변수를 사용하면 패키지에서 하나 이상의 파일 또는 폴더를 선택적으로 제외할 수 있습니다.

예:

그러면 콘텐츠를 제외한 웹 서버의 모든 항목이 백업됩니다.

Backup-WDServer -SourcePublishSettings c:\profiles\myserver.publishsettings -ConfigOnly

건너뛸 파일 목록을 만듭니다. 표준 정규식입니다.

$list = @('\\site2\\iisstart.htm','\\site2\\welcome.png')
Backup-WDServer –SkipFileList $list

목록을 $list=@('\site2\')로 변경하여 site2의 모든 파일을 건너뛰도록 변경할 수도 있습니다.

2. 사이트

Backup-WDSite

설명: apphostconfig 공급자를 사용하여 IIS 사이트를 설정 및 콘텐츠와 함께 백업합니다. 이 공급자 에 대한 자세한 내용은 여기를 참조하세요.

Cmdlet 매개 변수: 사이트 매개 변수 또는 게시 설정 파일에서 지정한 사이트의 이름이 백업됩니다. 사이트 매개 변수 값은 사이트 이름에 대한 게시 설정 사양을 재정의합니다.

ConfigOnly를 사용하여 콘텐츠 없이 백업을 만들 수 있습니다. 사이트에서 기본이 아닌 앱 풀을 사용하는 경우 이 패키지가 동일한 애플리케이션 풀이 없을 수 있는 다른 서버에서 작동하도록 하려면 switch 매개 변수 includeAppPool을 사용합니다. 그러면 애플리케이션 풀이 패키지에 번들로 제공됩니다.

자동 생성된 웹 배포 매개 변수: 두 가지 유형의 매개 변수가 만들어집니다.

  1. 사용자가 사이트 백업을 적용할 사이트의 이름을 변경할 수 있도록 하는 매개 변수입니다.
  2. 사용자가 사이트 및 해당 사이트의 모든 웹 애플리케이션의 실제 경로를 변경할 수 있도록 하는 또 다른 매개 변수입니다.

따라서 아래에 3개의 앱이 있는 사이트가 있는 경우 4개의 실제 경로 매개 변수와 하나의 사이트 이름 매개 변수를 가져옵니다.

예:

Backup-WDSite "Default Web Site" -ConfigOnly
Backup-WDSite MySite –IncludeAppPool
Backup-WDSite MySite -SkipFileList $list

3. 웹 애플리케이션

Backup-WDApp

설명: iisApp 공급자를 사용하여 웹 애플리케이션을 백업합니다. 이 공급자 에 대한 자세한 내용은 여기를 참조하세요. 다음은 웹 애플리케이션이 무엇이며 IIS의 사이트, 앱 및 가상 디렉터리의 차이점을 설명하는 좋은 문서 입니다.

Cmdlet 매개 변수: 애플리케이션 매개 변수 또는 게시 설정 파일에 의해 지정된 앱의 이름이 백업됩니다. 지정하지 않으면 오류가 발생합니다. 애플리케이션 매개 변수 값은 사이트 이름에 대한 게시 설정 사양을 재정의합니다. SkipFileList 및 SkipFolderList 매개 변수를 사용하면 패키지에서 하나 이상의 파일 또는 폴더를 선택적으로 제외할 수 있습니다.

자동 생성된 웹 배포 매개 변수: 복원 또는 설치 중에 앱 또는 사이트의 이름을 변경하는 매개 변수가 만들어집니다.

$list = @('\\iisstart\.htm')
Backup-WDApp "Default web site/app" -SkipFileList $list

B. 데이터베이스

1. MSSql

Backup-WDSqlDatabase

설명: dbfullsql 공급자를 사용하여 Microsoft SQL Server 데이터베이스를 백업합니다. 이 공급자는 SMO를 사용하여 데이터베이스를 스크립팅하고 100개 이상의 공급자 설정을 노출하여 데이터베이스가 스크립팅되는 방식을 제어합니다. 여기서 자세히 설명 합니다.

Cmdlet 매개 변수: 데이터베이스 매개 변수 또는 게시 설정 파일의 SQLServerDB커넥트ionString에서 지정한 연결 문자열 백업됩니다. 데이터베이스 매개 변수 값은 SQLServerDB커넥트ionString에 대한 게시 설정 사양을 재정의합니다. 이 dbfullsql 공급자가 노출하는 공급자 설정은 Source설정 매개 변수를 사용하여 전달할 수 있습니다. 매우 일반적으로 사용되는 설정 중 하나는 개체가 있는 경우 스크립트가 개체 스크립트를 삭제하는 scriptdropsfirst입니다. SMO 스크립팅 옵션의 또 다른 공급자 설정은 스키마를 추출하기 위해 scriptdata를 false로 설정하는 것입니다.

자동 생성된 웹 배포 매개 변수: 복원 또는 설치 중에 데이터베이스 연결 문자열 변경하기 위한 매개 변수가 생성됩니다.

예:

New-WDPublishSettings -ComputerName serverName -MSSqlConnectionString "Data Source=localhost;Initial Catalog=MyDb;User id=MyDbUser;Password=MyPassword" -FileName d:\SQLdb.PublishSettings -Credential serverName\Administrator
Backup-WDSQLDatabase -SourcePublishSettings D:\SQLdb.PublishSettings
Backup-WDSQLDatabase -Database "Data Source=localhost;Initial Catalog=MyDb;User id=MyDBUser;Password=MyPassword" -SourceSettings @{ copyAllUsers='false'; scriptDropsFirst='true'; }

2. MySql

Backup-WDMySQLDatabase

설명: dbmysql 공급자를 사용하여 MySql 서버 데이터베이스를 백업합니다. 이 공급자는 mysqldump를 사용하여 데이터베이스를 스크립트합니다. 여기서 자세히 설명 합니다.

Cmdlet 매개 변수: 데이터베이스 매개 변수 또는 게시 설정 파일의 mySQLDB커넥트ionString에서 지정한 연결 문자열 백업됩니다. 데이터베이스 매개 변수 값은 mySQLDB커넥트ionString에 대한 게시 설정 사양을 재정의합니다. 공급자 설정은 Source설정 매개 변수를 사용하여 전달할 수 있습니다. 일반적으로 사용되는 설정은 includeData 및 includeSchema입니다. 기본적으로 true로 설정됩니다.

자동 생성된 웹 배포 매개 변수: 복원 또는 설치 중에 데이터베이스 연결 문자열 변경하기 위한 매개 변수가 생성됩니다.

New-WDPublishSettings -ComputerName serverName -MySqlConnectionString "Data Source=localhost;database=MyDb;Uid=MyDbUser;pwd=MyPassword" -FileName d:\MySQLdb.PublishSettings -Credential serverName\Administrator
Backup-WDMySQLDatabase -Database 'Server=localhost;Database=MyDb;Uid=MyDbUser;pwd=MyPassword’
Backup-WDMySqlDatabase –SourcePublishSettings d:\mysqldb.publishsettings

III. 복원

모든 복원 cmdlet은 웹 배포 패키지를 사용하여 첫 번째 위치 매개 변수로 복원합니다.

WebDeploy는 패키지를 수정하지 않고 복원하는 동안 몇 가지 측면을 변경할 수 있는 패키지의 매개 변수화 개념을 지원합니다. 예를 들어 복원하는 동안 WebDeploy 매개 변수를 사용하여 패키지 내의 값과 다른 데이터베이스 연결 문자열 값을 지정할 수 있습니다(패키지에 연결 문자열 매개 변수가 있어야 함).

패키지를 빌드하는 방법에 따라 웹 배포 패키지에는 하나 이상의 매개 변수가 있을 수 있습니다. 이러한 복원 cmdlet은 패키지를 검사하고 컬렉션에 동적 PowerShell 매개 변수를 추가합니다. 따라서 패키지에 "Parameter1"이라는 웹 배포 매개 변수가 있는 경우 이름이 "Parameter1"인 PowerShell 매개 변수를 찾습니다. 그러나 동적 매개 변수에는 PowerShell에서 고유한 문제가 있으며 패키지에 이름이나 파일 경로에 공백이 없는 경우에만 작동합니다.

또는 이러한 모든 복원 cmdlet에는 복원 중에 새 매개 변수 값을 수동으로 지정할 수 있는 "매개 변수" 매개 변수도 있습니다. 이 "Parameters" 매개 변수는 웹 배포 매개 변수의 이름 값 쌍에 대한 PowerShell Dictionary 개체를 사용합니다.

웹 배포 패키지에 정의된 웹 배포 매개 변수를 확인하려면 Windows 탐색기에서 zip 파일을 열고 패키지의 루트에 있는 parameters.xml 파일을 검사하면 됩니다. 기본값이나 값이 없는 Web Deploy 매개 변수는 값을 지정해야 합니다. xml 파일에 이러한 매개 변수를 모두 추가하고 ParameterValuesFile 매개 변수의 값으로 전달합니다. 여기에 제공된 대로 또는 수동으로 이 파일을 생성할 수 있습니다. 형식은 다음과 같습니다.

<parameters>
  <setParameter name="name1" value="value1" />
  <setParameter name="name2" value="value2" />
</parameters>

Get-WDParameters cmdlet은 이 파일을 읽고 모든 복원 cmdlet에서 허용하는 WebDeploy 매개 변수 개체(사전)로 변환할 수 있습니다.

내 매개 변수에 대한 값을 지정하지 않고 패키지를 복원하는 경우 기본 동작은 패키지가 원래 만들어진 리소스를 덮어씁니다. 예를 들어 backup-wdsite site1을 사용하여 site1에서 패키지를 만드는 경우 이 패키지의 매개 변수에 값을 제공하지 않고 복원 cmdlet을 사용하여 이 패키지를 복원하면 site1은 패키지에 포함된 모든 항목, 콘텐츠 및 구성으로 덮어씁니다. 모든 복원 cmdlet도 마찬가지입니다.

이러한 모든 cmdlet은 대상 게시 설정 파일이 지정된 경우를 제외하고 로컬로 복원되며, 이 경우 WMSvc(웹 관리 서비스) 또는 웹 배포 에이전트 서비스를 통해 원격 서버에 대해 동일한 정확한 작업이 발생합니다.

A. IIS

1. 서버

Restore-WDServer

설명: 웹 서버 패키지를 복원합니다. 일반적으로 변경하기 전에 서버를 백업하고 오류가 발생하는 경우 변경하기 전에 만든 웹 배포 백업 패키지를 적용하여 서버를 되돌리기 수 있습니다.

$folderList = @(‘\\app_data’)
Restore-WDServer D:\OWAIS-1_WebServer_20120419121214.zip -DestinationPublishSettings c:\destinationServer.publishSettings –SkipFolderList $folderList

2. 사이트

Restore-WDSite

설명: IIS 사이트 패키지를 복원합니다. 패키지에 "사이트 물리적 경로" 및 "사이트 이름"이라는 두 개의 매개 변수가 있는 경우 SitePhysicalPath 및 SiteName 동적 powershell 매개 변수로 노출됩니다. 이 명령은 실제 경로를 c:\site1사용하여 새 site site1을 만듭니다. 이러한 매개 변수에 대해 값이 지정되지 않은 경우 복원은 동일한 사이트 및 콘텐츠에 적용되며 사이트에 있을 수 있는 변경 내용을 덮어씁니다.

매개 변수: skipfolderlist 및 skipfilelist를 사용하여 일부 폴더 및/또는 파일이 사이트 콘텐츠에 복사되지 않도록 제외할 수 있습니다.

Restore-WDSite C:\defaultsite.zip -SitePhysicalPath c:\site1 -SiteName site1
Restore-WDSite -Package 'D:\Users\Administrator\Documents\Web Deploy Backups\IIS-Server_AppHostConfig_Default Web Site_20120417100827.zip' -skipFolderList @('App_Data')  -verbose

3. 앱

Restore-WDApp

설명: 웹 애플리케이션을 복원합니다. Backup-WDApp은 설치 시 앱의 이름을 변경하는 하나의 매개 변수가 있는 패키지를 만듭니다. 복원하는 동안 앱을 다른 앱으로 복원하는 데 사용할 수 있습니다. 사이트 아래에 앱을 배포할 때 사이트가 있어야 합니다. 이 패키지에서 앱을 만들지만 사이트는 만들어지지 않습니다.

예:

Restore-WDApp C:\myappbackup.zip -ApplicationPathParam1 "Default web site\app1"

B. 데이터베이스

Restore-WDDatabase

설명: 데이터베이스가 없는 경우 현재 사용자에게 이 작업에 대한 권한이 있는 한 고객이라는 새 데이터베이스를 만들고 스크립트를 실행합니다. 동적 웹 배포 매개 변수에 대한 값 없이 실행되는 경우 이 패키지를 만든 원래 데이터베이스를 덮어씁니다. 패키지를 만들 때 scriptDropsFirst 설정을 사용하지 않은 경우 기존 콘텐츠가 충돌하는 데이터베이스에 적용하지 않습니다. 이 cmdlet은 MSSql 또는 MySQL 백업을 복원하는 데 사용할 수 있습니다. Backup-WDSQLDatabase를 사용하여 만든 백업과 Backup-WDMySqlDatabase를 사용하여 만든 백업으로만 MS SQL 데이터베이스를 복원할 수 있습니다.

예:

Backup-WDSqlDatabase "server=.\sqlexpress;integrated security=SSPI;database=customers" "C:\dbbackup.zip"
Restore-WDDatabase c:\dbbackup.zip –DatabaseConnectionStringParam1 "server=.\sqlexpress;integrated security=SSPI;database=customers_copy"
Backup-WDMySqlDatabase "server=localhost;uid=someuser;pwd=somepwd;database=coolDb" "C:\dbbackup.zip"
Restore-WDDatabase c:\dbbackup.zip –DatabaseConnectionStringParam1 "server=localhost;uid=someuser;pwd=somepwd;database=coolDb_copy"

C. 일반 패키지

Restore-WDPackage

설명: 이 cmdlet을 사용하여 웹 배포 패키지를 적용할 수 있습니다. 오픈 소스 애플리케이션 갤러리 패키지를 다운로드하거나, Visual Studio에서 패키지를 만들거나, msdeploy.exe 명령줄 도구(자세한 정보)를 사용하거나, 문서의 앞부분에서 설명한 Backup-WD* cmdlet을 사용하는 등 웹 배포 패키지를 만들거나 가져오는 여러 가지 방법이 있습니다. 예를 들어 wordpress라는 앱으로 IIS 서버 기본 웹 사이트에 wordpress를 설치하는 경우 앱 갤러리wordpress 패키지를 패키지라는 폴더로 다운로드합니다. wordpress 패키지 매개 변수의 모든 기본값은 그대로 작동하지만 두 개의 필수 매개 변수인 관리자 및 비관리자 mysql 암호에 대한 값을 지정하기만 하면 됩니다.

매개 변수:

Restore-WDPackage c:\Packages\wordpress.zip -DBAdminPassword mysecretserverpassword –DBPassword mysqllocalpassword

IV. Remove

Remove-WDSite -Site NonWorkingSite

이 명령은 applicationHost.config에서 nonworkingsite의 정의라는 사이트와 사이트의 디렉터리 콘텐츠를 삭제합니다.

V. 앱 풀 프레임워크 가져오기 및 설정

이러한 cmdlet을 사용하면 apppool .net framework 버전을 읽고 변경할 수 있습니다.

Get-WDAppPoolFx "default web site"
managedRuntimeVersion
---------------------
v2.0
Set-WDAppPoolFx "default web site" -AppPoolFrameworkVersion v4.0
Get-WDAppPoolFx "default web site"
managedRuntimeVersion
---------------------
v4.0

VI. WDACL 설정

이 cmdlet은 사이트 콘텐츠에 대한 acls를 설정하는 데 사용할 수 있습니다. 예를 들어 사이트, site1이 있고 사용자 u1 읽기 권한을 부여하려고 한다고 가정해 보겠습니다.

먼저 현재 사용 권한을 검사.

$ret = Get-Acl C:\site1
$ret.Access
I don’t see u1 in the list. Let me give the user u1 access as follows
Set-WDAcl "site1" -SetAclUser u1
Check whether this worked
$ret = Get-Acl C:\site1
$ret.Access
I see that u1 has been given read access as below. [I have not pasted the other permissions on this folder. Just the u1 part]
FileSystemRights  : Read, Synchronize
AccessControlType : Allow
IdentityReference : MOSHAIKH1\u1
IsInherited       : False
InheritanceFlags  : ContainerInherit, ObjectInherit
PropagationFlags  : None

VII. Invoke

destinationpublishsettings를 사용하여 원격 시스템에서 명령 또는 스크립트를 호출하고 원격 실행 결과를 실시간으로 확인할 수 있습니다. 원격으로 runcommand 공급자를 실행할 수 있도록 원격 시스템의 관리자여야 합니다. 이 공급자 에 대한 자세한 내용은 여기를 참조하세요. 지정된 스크립트 또는 명령이 완료될 때까지 MWD Api가 대기하는 기본 최대 시간은 5초입니다. 이 실행 시간을 늘리려면 아래 예제와 같이 waitInterval 및 waitAttempts에 대해 더 높은 값을 지정할 수 있습니다.

A. 스크립트

Invoke-WDScript C:\my.cmd –Verbose

이렇게 하면 스크립트가 실행되고 자세한 정보로 실행하면 명령의 출력을 볼 수 있습니다.

B. 명령

$settings = @ { waitInterval = 3000; waitAttempts = 25;}
Invoke-WDCommand "dir c:\mydirectory /s/b" -DestinationSettings $settings

이렇게 하면 명령이 실행되고 자세한 정보가 지정되지 않았기 때문에 출력이 표시되지 않습니다. 그러나 이 작업은 경과할 때마다 3초 동안 대기하고 25회 반복 대기를 수행합니다. 전체적으로 프로세스 실행은 최대 75초 동안 계속됩니다.

VIII. 동기화

이러한 cmdlet은 원본과 대상을 가져와서 동기화합니다. 원본은 수정되지 않습니다. 클라이언트 대신 단어 원본을 사용하는 이유는 클라이언트와 서버가 동기화에서 매우 혼동되는 용어이기 때문입니다. 로컬 서버를 원격 서버와 동기화할 수 있습니다. 이 경우 원격 서버는 원본이고 로컬 서버는 대상입니다. 또는 컴퓨터 1에서 PowerShell cmdlet을 실행하고 컴퓨터 2와 3을 동기화할 수 있습니다. 원격 원본 및/또는 대상을 사용하려면 이 문서에 멘션 첫 번째 cmdlet을 사용하여 만들 수 있는 게시 설정 파일을 제공해야 합니다. 모든 동기화 cmdlet은 원본 또는 대상 또는 둘 다에 대한 공급자 설정을 선택적으로 설정할 수 있도록 원본설정 및 대상설정 매개 변수도 지원합니다.

A. IIS

1. 서버

두 개의 IIS 7.5 서버, Owais-1 및 Owais-2를 동기화하려고 합니다. 먼저 각각에 대한 publishsettings 파일을 만든 다음 서버를 동기화합니다. 자격 증명을 지정하지 않았으므로 이 두 시스템의 관리자인 경우 성공합니다.

New-WDPublishSettings -ComputerName owais-1 -AgentType MSDepSvc -FileName c:\owais1.publishsettings
Publish settings file created at: 'c:\owais1.publishsettings'.
New-WDPublishSettings -ComputerName owais-2 -AgentType MSDepSvc -FileName c:\owais2.publishsettings
Publish settings file created at: 'c:\owais2.publishsettings'.
Sync-WDServer -SourcePublishSettings c:\owais1.publishSettings -DestinationPublishSettings c:\owais2.publishSettings

2. 사이트

다음 명령에서 site2가 존재하지 않는 경우 만들어지고 실제 경로(콘텐츠가 새 폴더 c:\site2에 복사됨) 및 사이트의 바인딩도 변경했습니다.

Sync-WDSite site1 Site2 -SitePhysicalPath c:\site2 -SiteBinding "*:8078:" -IncludeAppPool

3. 앱

기본 웹 사이트에서 실행되는 애플리케이션이 있습니다. Site1에서 이 작업을 이동하려고 합니다. 다음 명령을 실행합니다.

Sync-WDApp "Default Web Site/drupal" "site1/drupal"

이제 새 drupal 앱이 작동하는지 테스트했으므로 기본 웹 사이트에서 원래 drupal 앱을 삭제합니다.

Remove-WDSite "Default Web Site/drupal"

B. 데이터베이스

이전 cmdlet에서는 웹 배포 패키지를 사용하여 데이터베이스를 백업 및 복원하는 방법을 보여 주긴 하지만, Sync-WDSQLDatabase 및 Sync-WDMySQLDatabase cmdlet을 사용하여 데이터베이스를 .sql 스크립트와 동기화하거나 다른 데이터베이스 인스턴스와 직접 동기화할 수도 있습니다.

1. MSSql

Sync-WDSQLDatabase "server=.\sqlexpress;uid=sa;pwd=********;database=umbracodb" "server=.\sqlexpress;uid=sa;pwd=************;database=sometestdb"

이렇게 하면 sometestdb라는 새 데이터베이스(아직 없는 경우)가 만들어지고 스키마와 데이터가 동기화됩니다.

Sync-"server=.\sqlexpress;uid=sa;pwd=********;database=umbracodb"  c:\umbraco.sql

이렇게 하면 위에 지정된 경로에서 umbracodb 데이터베이스를 umbraco.sql 스크립깅합니다.

2. MySql

Sync-WDMySQLDatabase "server=localhost;uid=root;pwd=********;database=wordpress265" "server=localhost;uid=root;pwd=************;database=wordpress265_new"

이렇게 하면 wordpress265_new(아직 없는 경우)라는 새 데이터베이스가 만들어지고 스키마와 데이터가 동기화됩니다.

Sync-WDMySQLDatabase "server=localhost;uid=root;pwd=***************;database=wordpress265" c:\wordpress.sql

그러면 wordpress265 데이터베이스가 위에 지정된 경로의 wordpress.sql 스크립아웃됩니다.

C. 기타 등등

위에서 제공된 다른 cmdlet에서 다루지 않는 범용 동기화의 경우 Sync-WDManifest cmdlet을 사용할 수 있습니다. MWD API에서 지원하는 일반 매니페스트 공급자 동기화입니다. 해당 서비스에 대한 자세한 내용은 여기에서 확인할 수 있습니다. 매니페스트는 xml 파일의 공급자, 공급자 경로 및 공급자 설정의 컬렉션입니다. 구조는 xml 파일의 루트 노드가 현재 동기화를 위해 공급자의 이름으로 간주된다는 것입니다. 따라서 여기에 나열된 대로 잘 알려진 공급자의 이름이 될 수 없습니다. 그런 다음 동기화에 포함하려는 공급자와 일치하는 요소 이름을 가진 자식 노드를 가질 수 있습니다. 경로 특성은 해당 공급자의 경로를 나타내며 필수입니다. 그런 다음 현재 동기화 작업에 활용하려는 각 공급자 설정에 대한 특성 값 쌍을 추가합니다.

이 cmdlet에는 두 개의 매니페스트가 필요합니다. 하나는 원본용이고 다른 하나는 대상용입니다. 매니페스트는 항상 지정된 순서대로 실행됩니다. 공급자가 IIS 사이트에서 작동하는 apphostconfig 공급자와 같은 커밋 작업을 지원하는 경우 동기화가 완료되지 않으면 커밋이 호출되지 않습니다. 따라서 사이트를 만든 공급자 후에 사이트가 존재할 것으로 예상하는 공급자가 있는 경우 사이트가 아직 커밋되지 않았기 때문에 실패합니다. 다음 예제에서는 앱을 동기화하고 앱이 매니페스트에 함께 사용하는 데이터베이스를 포함합니다.

원본 매니페스트:

<demoManifest>
  <iisApp path="Site1" />
  <dbfullsql path="server=.\sqlexpress;integrated security=SSPI;database=customers" />
</demoManifest>

대상 매니페스트:

<demoManifest>  <iisApp path="Site2" />  <dbfullsql path="server=.\sqlexpress;integrated security=SSPI;database=customers_demo_cpy" /></demoManifest>Sync-WDManifest C:\sourceManifest.xml C:\destManifest.xmlWARNING: Cannot connect to the database 'customers_demo_cpy'.Retrying operation 'Add' on object dbFullSql (server=.\sqlexpress;uid=sa;database=customers_demo_cpy). Attempt 1 of 5.Manifest         : C:\sourceManifest.xmlManifest-Dest    : C:\destManifest.xmlTimeTaken        : 0:10Errors           : 0Warnings         : 0BytesCopied      : 0ObjectsDeleted   : 0ObjectsUpdated   : 0ObjectsAdded     : 3TotalChanges     : 3ParameterChanges : 0