共用方式為


適用於 Windows 的命令行和 PowerShell 參考 (本機) 模擬器

適用於:NoSQL MongoDB Cassandra Gremlin 桌子

Azure Cosmos DB 模擬器提供本機環境,以模擬 Azure Cosmos DB 服務進行本機開發。 安裝模擬器之後,您可以使用命令行和 PowerShell 命令來控制模擬器。 本文說明如何使用命令行和 PowerShell 命令來啟動和停止模擬器、設定選項,以及執行其他作業。 您必須從安裝位置執行命令。

重要

本文只包含 Windows 本機模擬器的命令行自變數。

使用命令行語法管理模擬器

Microsoft.Azure.Cosmos.Emulator.exe 
    [/Shutdown] [/DataPath] [/Port] [/MongoPort] 
    [/DirectPorts] [/Key] [/EnableRateLimiting] 
    [/DisableRateLimiting] [/NoUI] [/NoExplorer] 
    [/EnableMongoDbEndpoint] 
    [/?]

若要檢視參數清單,請在命令提示字元輸入 Microsoft.Azure.Cosmos.Emulator.exe /?

參數 描述 範例命令
[無自變數] 使用預設設定啟動模擬器。 Microsoft.Azure.Cosmos.Emulator.exe
[說明] 顯示支援的命令行自變數清單。 Microsoft.Azure.Cosmos.Emulator.exe /?
GetStatus 取得模擬器的狀態。 每個結束代碼都會指出狀態:1 = [啟動]、2 = [執行中] 和3 = [已停止]。 負結束代碼表示發生錯誤。 不會產生其他輸出。 Microsoft.Azure.Cosmos.Emulator.exe /GetStatus
Shutdown 關閉模擬器。 Microsoft.Azure.Cosmos.Emulator.exe /Shutdown
DataPath 指定要在其中儲存資料檔的路徑。 預設值是 %LocalAppdata%\CosmosDBEmulator Microsoft.Azure.Cosmos.Emulator.exe /DataPath=E:\SomeDataFolder
Port 指定要用於模擬器的埠號碼。 預設值是 8081 Microsoft.Azure.Cosmos.Emulator.exe /Port=65000
ComputePort 指定要用於計算 Interop 閘道服務的埠號碼。 閘道的 HTTP 連接點探查埠會計算為 ComputePort + 79。 因此, ComputePortComputePort + 79 必須開啟且可供使用。 預設值是 8900 Microsoft.Azure.Cosmos.Emulator.exe /ComputePort=65100
EnableMongoDbEndpoint=3.2 啟用適用於 MongoDB 3.2 版的 API。 Microsoft.Azure.Cosmos.Emulator.exe /EnableMongoDbEndpoint=3.2
EnableMongoDbEndpoint=3.6 啟用適用於 MongoDB 3.6 版的 API。 Microsoft.Azure.Cosmos.Emulator.exe /EnableMongoDbEndpoint=3.6
EnableMongoDbEndpoint=4.0 啟用適用於 MongoDB 4.0 版的 API。 Microsoft.Azure.Cosmos.Emulator.exe /EnableMongoDbEndpoint=4.0
MongoPort 指定要用於 MongoDB API 的埠號碼。 預設值為 10255 Microsoft.Azure.Cosmos.Emulator.exe /MongoPort=65200
EnableCassandraEndpoint 啟用適用於 Apache Cassandra 的 API。 Microsoft.Azure.Cosmos.Emulator.exe /EnableCassandraEndpoint
CassandraPort 指定要用於 Cassandra 端點之 API 的埠號碼。 預設值為 10350 Microsoft.Azure.Cosmos.Emulator.exe /CassandraPort=65300
EnableGremlinEndpoint 啟用適用於 Apache Gremlin 的 API。 Microsoft.Azure.Cosmos.Emulator.exe /EnableGremlinEndpoint
GremlinPort 要用於 Apache Gremlin 連接點 API 的埠號碼。 預設值為 8901 Microsoft.Azure.Cosmos.Emulator.exe /GremlinPort=65400
EnableTableEndpoint 啟用資料表的 API。 Microsoft.Azure.Cosmos.Emulator.exe /EnableTableEndpoint
TablePort 要用於數據表端點 API 的埠號碼。 預設值為 8902 Microsoft.Azure.Cosmos.Emulator.exe /TablePort=65500
KeyFile 從指定的檔案讀取授權金鑰。 /GenKeyFile使用 選項來產生索引鍵檔。 Microsoft.Azure.Cosmos.Emulator.exe /KeyFile=D:\Keys\keyfile
ResetDataPath 遞歸移除指定路徑中的所有檔案。 如果您未指定路徑,則預設為 %LOCALAPPDATA%\CosmosDbEmulator Microsoft.Azure.Cosmos.Emulator.exe /ResetDataPath
StartTraces 開始使用 LOGMAN 收集偵錯追蹤記錄。 Microsoft.Azure.Cosmos.Emulator.exe /StartTraces
StopTraces 使用 LOGMAN 停止收集偵錯追蹤記錄。 Microsoft.Azure.Cosmos.Emulator.exe /StopTraces
StartWprTraces 使用 Windows 效能錄製工具開始收集偵錯追蹤記錄 Microsoft.Azure.Cosmos.Emulator.exe /StartWprTraces
StopWprTraces 使用 Windows 效能錄製工具停止收集偵錯追蹤記錄 Microsoft.Azure.Cosmos.Emulator.exe /StopWprTraces
FailOnSslCertificateNameMismatch 根據預設,如果憑證的SAN不包含模擬器主機的功能變數名稱、本機IP位址 (v4localhost127.0.0.1,則模擬器會重新產生其自我簽署的TLS/SSL 憑證。 使用此選項時,模擬器會在啟動時失敗。 然後,您應該使用 /GenCert 選項來建立並安裝新的自我簽署 TLS/SSL 憑證。 Microsoft.Azure.Cosmos.Emulator.exe /FailOnSslCertificateNameMismatch
GenCert 產生並安裝新的自我簽署 TLS/SSL 憑證。 選擇性地包含額外的功能變數名稱系統 (DNS) 名稱逗號分隔清單,以透過網路存取模擬器。 Microsoft.Azure.Cosmos.Emulator.exe /GenCert
DirectPorts 指定要用於直接連線的埠。 預設值為 10251102521025310254 Microsoft.Azure.Cosmos.Emulator.exe /DirectPorts:65600,65700
Key 模擬器的授權金鑰。 索引鍵必須是64位元組向量的base-64編碼。 Microsoft.Azure.Cosmos.Emulator.exe /Key:D67PoU0bcK/kgPKFHu4W+3SUY9LNcwcFLIUHnwrkA==
EnableRateLimiting 指定啟用要求速率限制行為。 Microsoft.Azure.Cosmos.Emulator.exe /EnableRateLimiting
DisableRateLimiting 指定已停用要求速率限制行為。 Microsoft.Azure.Cosmos.Emulator.exe /DisableRateLimiting
NoUI 不要顯示模擬器用戶介面。 Microsoft.Azure.Cosmos.Emulator.exe /NoUI
NoExplorer 啟動時不要顯示數據總管。 Microsoft.Azure.Cosmos.Emulator.exe /NoExplorer
PartitionCount 指定分割容器的最大數目。 如需詳細資訊,請參閱 變更容器數目。 預設值是 25。 允許的最大值為 250 Microsoft.Azure.Cosmos.Emulator.exe /PartitionCount=15
DefaultPartitionCount 指定分割容器的預設分割區數目。 預設值是 25 Microsoft.Azure.Cosmos.Emulator.exe /DefaultPartitionCount=50
AllowNetworkAccess 允許透過網路存取模擬器。 您也必須傳遞 /Key=<key_string> 或 /KeyFile=<file_name> ,才能啟用網路存取。 Microsoft.Azure.Cosmos.Emulator.exe /AllowNetworkAccess /Key=D67PoU0bcK/kgPKFHu4W+3SUY9LNcwcFLIUHnwrkA==
NoFirewall 使用 選項時 /AllowNetworkAccess ,請勿調整防火牆規則。 Microsoft.Azure.Cosmos.Emulator.exe /NoFirewall
GenKeyFile 產生新的授權金鑰,並儲存至指定的檔案。 產生的金鑰可以搭配 /Key/KeyFile 選項使用。 Microsoft.Azure.Cosmos.Emulator.exe /GenKeyFile=D:\Keys\keyfile
Consistency 設定帳戶的預設一致性層級。 預設值為 Session Microsoft.Azure.Cosmos.Emulator.exe /Consistency=Strong
? 顯示說明訊息。

使用 PowerShell Cmdlet 管理模擬器

模擬器隨附 PowerShell 模組,可啟動、停止、卸載及擷取服務的狀態。 執行下列 Cmdlet 以使用 PowerShell 模組:

Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"

或將 PSModules 目錄放在您的 PSModulePath 上,然後匯入它,如下列命令所示:

$env:PSModulePath += ";$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules"
Import-Module Microsoft.Azure.CosmosDB.Emulator

以下是從 PowerShell 控制模擬器的命令摘要:

Get-CosmosDbEmulatorStatus

取得模擬器的狀態。 傳回下列 ServiceControllerStatus 其中一個值:

  • ServiceControllerStatus.StartPending
  • ServiceControllerStatus.Running
  • ServiceControllerStatus.Stopped

如果發生錯誤,則不會傳回任何值。

語法

Get-CosmosDbEmulatorStatus 
    [[-AlternativeInstallLocation] <String>] 
    [<CommonParameters>]

參數

姓名 類型​​ 描述
AlternativeInstallLocation String

範例

  • 取得資料夾中所安裝 D:\SomeFolder\AzureCosmosDBEmulator 模擬器的狀態。

    @parameters = {
        AlternativeInstallLocation = "D:\SomeFolder\AzureCosmosDBEmulator"
    }
    Get-CosmosDbEmulatorStatus @parameters
    

Start-CosmosDbEmulator

在本機電腦上啟動模擬器。 根據預設,命令會等候模擬器準備好接受要求。 -NoWait如果您想要 Cmdlet 在啟動模擬器時立即傳回 ,請使用 選項。 使用 的參數 Start-CosmosDbEmulator 來指定選項,例如 NoSQL 連接埠、直接埠和 MongoDB 埠號碼。

語法

Start-CosmosDbEmulator [-AllowNetworkAccess]
    [-AlternativeInstallLocation <String>] [-CassandraPort <UInt16>]
    [-ComputePort <UInt16>] [-Consistency <String>] [-Credential
    <PSCredential>] [-DataPath <String>] [-DefaultPartitionCount
    <UInt16>] [-DirectPort <UInt16[]>] [-EnableMongoDb]
    [-EnableCassandra] [-EnableGremlin] [-EnableTable]
    [-EnableSqlCompute] [-EnablePreview]
    [-FailOnSslCertificateNameMismatch] [-GremlinPort <UInt16>]
    [-TablePort <UInt16>] [-SqlComputePort <UInt16>] [-Key <String>]
    [-MongoPort <UInt16>] [-MongoApiVersion <String>] [-NoFirewall]
    [-NoTelemetry] [-NoUI] [-NoWait] [-PartitionCount <UInt16>] [-Port
    <UInt16>] [-SimulateRateLimiting] [-Timeout <UInt32>] [-Trace]
    [<CommonParameters>]

參數

姓名 類型​​ 描述
AllowNetworkAccess SwitchParameter 允許從指派給模擬器主機的所有IP位址進行存取。 您也必須指定 Key 或 KeyFile 的值,以允許網路存取。
AlternativeInstallLocation String 模擬器可執行檔的替代位置路徑。
CassandraPort UInt16 用於 Cassandra API 的埠號碼。 預設連接埠為 10350
ComputePort UInt16 要用於計算 Interop 閘道服務的埠。 閘道的 HTTP 連接點探查埠會計算為 ComputePort + 79。 因此, ComputePortComputePort + 79 必須開啟且可供使用。 預設連接埠為 89008979
Consistency String 將模擬器的預設一致性層級設定為 SessionStrongEventualBoundedStaleness。 默認層級為 Session。
Credential PSCredential 指定具有執行此動作許可權的用戶帳戶。 使用使用者名稱,例如 User01Domain01\User01,或輸入 PSCredential 物件,例如 Cmdlet 中的 Get-Credential 用戶名稱。 根據預設,Cmdlet 會使用目前用戶的認證。
DataPath String 儲存資料文件的路徑。 資料檔案的預設位置為 $env:LocalAppData\CosmosDbEmulator
DefaultPartitionCount UInt16 要保留每個數據分割集合的數據分割數目。 預設值為 25,與資料分割計數總計的預設值相同。
DirectPort UInt16 四個埠的清單,用於直接連線到模擬器的後端。 預設清單為 10251102521025310254
EnableMongoDb SwitchParameter 指定已啟用 MongoDB 端點的 API。 預設值為 false
EnableCassandra SwitchParameter 指定已啟用 Apache Cassandra 端點的 API。 預設值為 false
EnableGremlin SwitchParameter 指定已啟用 Apache Gremlin 端點的 API。 預設值為 false
EnableTable SwitchParameter 指定已啟用資料表端點的 API。 預設值為 false
EnableSqlCompute SwitchParameter 指定已啟用 NoSQL 端點的 API。 預設值為 false
EnablePreview SwitchParameter 啟用處於預覽狀態且未完全成熟且預設為開啟的模擬器功能。
FailOnSslCertificateNameMismatch SwitchParameter 根據預設,如果憑證的SAN不包含模擬器主機的功能變數名稱、本機IP位址 (v4localhost127.0.0.1,則模擬器會重新產生其自我簽署的TLS/SSL 憑證。 此選項會導致模擬器在啟動時失敗。 然後,您應該使用 New-CosmosDbEmulatorCertificate 選項來建立並安裝新的自我簽署 TLS/SSL 憑證。
GremlinPort UInt16 要用於 Apache Gremlin 之 API 的埠號碼。 預設連接埠號碼為 8901
TablePort UInt16 要用於數據表 API 的埠號碼。 預設連接埠號碼為 8902
SqlComputePort UInt16 要用於 NoSQL 之 API 的埠號碼。 預設連接埠號碼為 8903
Key String 模擬器的授權金鑰。 此值必須是64位元組向量的基底64編碼。
MongoPort UInt16 要用於 MongoDB API 的埠號碼。 預設連接埠號碼為 10250
MongoApiVersion String 指定要用於 MongoDB API 的版本。 預設版本為 4.0
NoFirewall SwitchParameter 指定不應將輸入埠規則新增至模擬器主機的防火牆。
NoTelemetry SwitchParameter 指定 Cmdlet 不應該收集目前模擬器會話的數據。
NoUI SwitchParameter 指定 Cmdlet 不應該顯示使用者介面或任務列圖示。
NoWait SwitchParameter 指定在模擬器開始啟動時,Cmdlet 應該會立即傳回。 根據預設,Cmdlet 會等候啟動完成,而模擬器已準備好在傳回之前接收要求。
PartitionCount UInt16 模擬器所配置的分割區總數。
Port UInt16 模擬器閘道服務和 Web UI 的埠號碼。 預設連接埠號碼為 8081
SimulateRateLimiting SwitchParameter
Timeout UInt32
Trace SwitchParameter

範例

  • 啟動模擬器,並等到它準備好接受要求為止。

    Start-CosmosDbEmulator
    
  • 啟動模擬器,並 針對每個分割集合保留 5 個分割區。 分割區的總數設定為預設值: 25。 因此,可以建立的分割集合總數為 5 = 25 partitions / 5 partitions/collection。 每個資料分割集合的上限為 50 GB = 5 partitions * 10 GB / partiton

    @parameters = {
        DefaultPartitionCount = 5
    }
    Start-CosmosDbEmulator @parameters
    
  • 使用替代埠號碼啟動模擬器。

    @parameters = {
        Port = 443 
        MongoPort = 27017 
        DirectPort = 20001,20002,20003,20004
    }
    Start-CosmosDbEmulator @parameters
    

Stop-CosmosDbEmulator

停止模擬器。 根據預設,此命令會等到模擬器完全關閉為止。 如果您想要在模擬器開始關閉時立即傳回 Cmdlet,請使用 -NoWait 選項。

語法

Stop-CosmosDbEmulator 
    [[-AlternativeInstallLocation] <String>]
    [-NoWait] [[-Timeout] <UInt32>] [-Trace] 
    [<CommonParameters>]

參數

姓名 類型​​ 描述
AlternativeInstallLocation String
Timeout UInt32
NoWait SwitchParameter 指定 Cmdlet 應該在關機開始時立即傳回。
Trace SwitchParameter

範例

@parameters = {
    NoWait = $true
}
Stop-CosmosDbEmulator @parameters

Uninstall-CosmosDbEmulator

卸載模擬器,並選擇性地移除的完整內容 $env:LOCALAPPDATA\CosmosDbEmulator。 Cmdlet 可確保模擬器在卸載之前已停止。

語法

Uninstall-CosmosDbEmulator 
    [-RemoveData] 
    [<CommonParameters>]

參數

姓名 類型​​ 描述
RemoveData SwitchParameter 指定 Cmdlet 在移除模擬器之後,應該刪除所有數據。

範例

@parameters = {
    RemoveData = $false
}
Uninstall-CosmosDbEmulator @parameters

變更預設容器的數目

根據預設,您最多可以建立 25 個固定大小的容器(僅使用 Azure Cosmos DB 軟體開發工具包 (SDK) 支援),或使用模擬器建立 5 個無限制的容器。 藉由修改 PartitionCount 值,您可以建立最多 250 個固定大小的容器或 50 個無限制的容器,或兩者的任何組合,這些容器不超過 250 個固定大小容器(其中一個無限制的容器 = 5 個固定大小容器)。 不過,我們不建議您將模擬器設定為使用超過 200 個固定大小的容器執行。 由於它新增至磁碟 IO 作業的額外負荷,因此在使用端點 API 時會導致無法預測的逾時。

如果您嘗試在超過目前的分割區計數之後建立容器,模擬器會擲回 ServiceUnavailable 例外狀況,並顯示下列訊息。

Sorry, we are currently experiencing high demand in this region, and cannot fulfill your request at this time. We work continuously to bring more and more capacity online, and encourage you to try again.
ActivityId: 12345678-1234-1234-1234-123456789abc

若要變更模擬器中可用的容器數目,請執行下列步驟:

  1. 以滑鼠右鍵按兩下系統匣上的模擬器圖示,然後按兩下 [重設數據...],以刪除所有本機模擬器數據。

  2. 刪除此資料夾中 %LOCALAPPDATA%\CosmosDBEmulator的所有模擬器數據。

  3. 以滑鼠右鍵按兩下 系統匣上的模擬器 圖示,然後按兩下 [ 結束],以結束所有開啟的實例。 所有實例可能需要一分鐘的時間才能結束。

  4. 安裝最新版本的 模擬器

  5. 藉由設定值 <= 250,以 PartitionCount 旗標啟動模擬器。 例如: C:\Program Files\emulator> Microsoft.Azure.Cosmos.Emulator.exe /PartitionCount=100

下一步