[譯] PowerShell Core 6.0 的新增特性

PowerShell Core 6.0 的新增特性

原文 What's New in PowerShell Core 6.0html

PowerShell Core 6.0 是開源的,支持跨平臺(Windows / macOS 和 Linux)的新版本,其構建目標即爲支持異構環境及混合雲。git

譯者注:異構環境 - 因爲 PowerShell 最先被設計爲運行在 Windows NT / .Net 平臺,這裏的異構指 *NIX 平臺github

從 .Net Framework 遷移到 .Net Core

PowerShell Core 使用 .Net Core 2.0 做爲其運行時平臺,.Net Core 2.0 使 PowerShell 能夠被運行於多個平臺(Windows / macOS 和 Linux)之上。PowerShell Core 同時向外暴露由 .Net Core 2.0 提供的 API 集合,用於 cmdlet 及腳本中。web

Windows PowerShell 使用 .Net Framework 託管 PowerShell 引擎,所以其向外暴露由 .Net Framework 提供的 API 集合。docker

.NET Core 與 .NET Framework 間 API 的區別被定義爲 .Net 標準 中的一部分shell

For more information on how this affects module/script compatibility between PowerShell Core and Windows PowerShell, see Backwards compatibility with Windows PowerShell.json

更多關於此對 PowerShell Core / Windows PowerShell 模塊或腳本的兼容性影響可參考 Windows PowerShell 向前兼容性windows

對 macOS 與 Linux 的支持性

PowerShell 現提供對以下 Linux / macOS 發行版的官方支持,支持範圍包含:數組

  • Windows 7, 8.1, and 10
  • Windows Server 2008 R2, 2012 R2, 2016
  • Windows Server Semi-Annual Channel
  • Ubuntu 14.04, 16.04, and 17.04
  • Debian 8.7+, and 9
  • CentOS 7
  • Red Hat Enterprise Linux 7
  • OpenSUSE 42.2
  • Fedora 25, 26
  • macOS 10.12+

咱們的社區同時也提供對以下平臺的 PowerShell 發行包,但它們並不是被官方支持:緩存

  • Arch Linux
  • Kali Linux
  • AppImage(可用於多個 Linux 平臺)

同時咱們提供一些實驗性的(非正式支持的)發行版用於下列平臺:

  • Windows on ARM32/ARM64
  • Raspbian (Stretch)

A number of changes were made to in PowerShell Core 6.0 to make it work better on non-Windows systems. Some of these are breaking changes, which also affect Windows. Others are only present or applicable in non-Windows installations of PowerShell Core.

PowerShell Core 6.0 包含了大量針對非 Windows 平臺的修正,其中的部分是斷裂性影響,甚至將同時影響 Windows 平臺,其他的只出現或被啓用在非 Windows 平臺的 PowerShell Core 上。

  • 提供對 UNIX 平臺的原生命令通配符支持。
  • more 功能採用 Linux 的默認分頁器策略,即 less。這表明用戶能夠在原生二進制/命令間使用通配符(例如,ls *.txt)。
  • 當處理原生命令參數時,行尾的反斜槓符號將被默認忽略。
  • 因爲腳本簽名功能如今還不能在非 Windows 平臺上使用,在非 Windows 平臺上 PowerShell 的 -ExecutionPolicy 開關被默認忽略。
  • 修復 ConsoleHost 以使能 UNIX 平臺的 NoEcho 功能。
  • 修復 Get-help 以支持 UNIX 平臺上非大小寫敏感的模式匹配。
  • powershell 於安裝包中添加幫助頁(man-page)。

日誌

於 macOS 中,PowerShell 使用原生的 os_log API 以記錄日誌於 Apple 統一日誌系統中。於 Linux 中,PowerShell 使用 Syslog 這個通用的日誌解決方案。

文件系統

一系列更新已被運用於 macOS 與 Linux 平臺以支持傳統意義上於 Windows 平臺上不支持的文件名內字符:

  • 對 cmdlet 輸入的路徑現已斜槓無感化(slash-agnostic)。即 /\ 都可被用作路徑分割符

  • XDG 基本路徑規範現已被採納並被默認開啓

    譯者注:XDG 基本路徑規範 - 即 XDG Base Directory Specification,用於規範操做系統與上層應用對路徑名的處理規範

    • Linux / macOS 平臺配置文件存在於 ~/.config/powershell/profile.ps1
    • 歷史文件存在於 ~/.local/share/powershell/PSReadline/ConsoleHost_history.txt
    • 用戶模塊路徑存在於 ~/.local/share/powershell/Modules
  • 於 UNIX 平臺支持包含冒號的文件 / 文件夾名

  • 支持包含逗號的腳本名或路徑(感謝 @TimCurwick!)

  • 路徑跳轉相關的 cmdlet 中支持 -LiteralPath 參數,該參數被聲明時,通配擴展將被禁用

  • 升級 Get-ChildItem 使得其工做模式更相似於 UNIX 平臺的 ls -R 及 Windows 平臺的 DIR /S 命令。Get-ChildItem 現返回遞歸搜索中遇到的符號連接且不搜索該符號連接對應的路徑。

大小寫敏感性

Linux 及 macOS 傾向於大小寫敏感而 Windows 平臺傾向於大小寫不敏感,總的來講,PowerShell 使大小寫不敏感的。

舉例來講,macOS 與 Linux 平臺上的環境變量是大小寫敏感的,所以 PSModulePath 這樣的環境變量已經被預先置爲了固定的大小寫組合形式。Import-Module 在經過文件路徑決定模塊名稱時,是大小寫不敏感的

支持共存(side-by-side)安裝

PowerShell Core 的安裝 / 配置及執行都與 Windows PowerShell 相隔離。PowerShell Core 存在便攜式 ZIP 包,經過該包,用戶能夠於磁盤上部署任意套 PowerShell Core 並將他們做爲其餘應用的依賴。共存(side-by-side)安裝方案使得對新 PowerShell 版本的測試及存量腳本的遷移更加容易。同時,該方案也可用於對運行於某特定版本的腳本作兼容性配置。

注:默認的,Windows 平臺基於 MSI 的安裝包將對系統現註冊 PowerShell 實例進行替換升級。

powershell(.exe) 重命名爲 pwsh(.exe)

PowerShell Core 的執行二進制文件由 powershell(.exe) 改名爲 pwsh(.exe)。這一改變使用戶能夠肯定性的運行共存(side-by-side)安裝模式下的 PowerShell Core。並且 pwsh 更短也更好記。

其餘從 powershell(.exe) 重命名爲 pwsh(.exe) 後的改變:

  • 更改第一個位置參數由 -Command-File。這一改變修復了 PowerShell 腳本中的 #! 的使用於非 Windows 平臺定向至非 PowerShell shell 的可能性。這也意味着用戶能夠直接運行腳本,而不用指明 -File 參數,如 pwsh foo.ps1 / pwsh fooScript。同時這也意味着,用戶但願運行某命令時必須聲明 -Command / -c 入口,如 pwsh.exe -Command Get-Command
  • PowerShell Core 接受 -i/ -Interactive 爲開關標識的交互式 shell 模式。這使得 PowerShell 能夠在 Unix 平臺上被做爲默認 shell。
  • pwsh.exe 中移除了 -importsystemmodules / -psconsoleFile 參數
  • 更改了 pwsh -version 以及 pwsh.exe 的內置幫助,以與其餘原生工具保持一致。(感謝 @iSazonov!)
  • -File / -Command 錯誤參數報錯信息及退出碼與 Unix 標準保持一致
  • 於 Windows 平臺增長 -WindowStyle 參數。類似的,非 Windows 平臺基於包的 PowerShell 安裝將升級已經安裝的實例。

於 Windows PowerShell 的向前兼容性

PowerShell 的設計目標之一即爲儘可能保持與 Windows PowerShell 的向前兼容性。PowerShell Core 使用 .Net Standard 2.0 版本與其餘現存 .Net 版本保持彙編兼容性。許多 PowerShell 模塊依賴這些 .Net 彙編(有時是 DLL),所以 .Net 標準使得這些模塊也能夠在 PowerShell Core 上工做。PowerShell Core 也包含自發現功能用以探測知名路徑,好比全局彙編緩存(Global Assembly Cache)路徑等,以尋找 .NET Framework DLL 依賴。

更多 .NET Standard 相關內容能夠經過 .NET Blog 或此 YouTube 視頻,或經過該託管於 GitHub 上的 FAQ 瞭解。

PowerShell Core 爲確保其內置模塊(如 Microsoft.PowerShell.ManagementMicrosoft.PowerShell.Utility 等)與 Windows PowerShell 保持一致已付出巨大努力。在不少狀況下,在社區的協助下,咱們已經爲這些 cmdlet 添加了新能力以及 Bug 修復。在某些狀況下,因爲部分 .Net 層次上的依賴缺失,受影響的功能是不可用的或已經被移除。

大部分做爲 Windows 組件分發的模塊(例如 DnsClient / Hyper-V / NetTCPIP / Storage 等)及其餘微軟產品,例如 Azure 與 Office 等還沒有明確的被移植到 .Net Core 中。PowerShell 團隊正在與這些產品的相關團隊一同驗證並移植這些現存模塊至 PowerShell Core With .NET Standard and CDXML,大部分現存的 Windows PowerShell 模塊看上去確實能夠在 PowerShell Core 中正確使用,但這仍然須要官方驗證,所以他們現今也未被徹底支持。

經過安裝 WindowsPSModulePath 模塊,用戶也能夠經過將 Windows PowerShell PSModulePath 填充至 PowerShell Core PSModulePath 的方式,使用這些模塊。

首先,從 PowerShell Gallery 安裝 WindowsPSModulePath 模塊:

# Add `-Scope CurrentUser` if you're installing as non-admin
Install-Module WindowsPSModulePath -Force
複製代碼

其後,運行 Add-WindowsPSModulePath cmdlet 將 Windows PowerShell 的 PSModulePath 加入到 PowerShell Core 中:

# Add this line to your profile if you always want Windows PowerShell PSModulePath
Add-WindowsPSModulePath
複製代碼

Docker 支持

PowerShell Core 爲全部其支持的主流平臺(包含多個 Linux 發行版,Windows Server Core 與 Nano Server 等)添加了 Docker 容器鏡像。

獲取完整列表,請嘗試訪問 microsoft/powershell on Docker Hub,更詳細信息,請查看 GitHub 上的 Docker 相關信息。

基於 SSH 的 PowerShell 遠程訪問

PowerShell Remoting Protocol(PSRP)除運行於傳統的 WinRM 外,現能夠工做於 Secure Shell Protocol(SSH)之上。

這表明用戶能夠經過 Enter-PSSession / New-PSSession 創建基於 SSH 的會話。全部用戶須要作的,僅僅是將 PowerShell 註冊爲基於 OpenSSH 的 SSH Server 的一個子系統,以後即可經過 PSSession 語義層使用傳統的 SSH 認證(如密碼或私鑰等)。

更多關於配置並使用 SSH 基礎的遠程鏈接的信息,請參考 PowerShell Remoting over SSH

默認編碼格式除 New-ModuleManifest 外設置爲沒有字節序標識的 UTF-8 編碼

在過往版本中,Windows PowerShell cmdlet 例如 Get-Content / Set-Content 使用不一樣的編碼規範,好比 ASCII 及 UTF-16。默認編碼上的不一樣將在混合使用未統一編碼格式的 cmdlet 時產生問題。

非 Windows 平臺傳統上使用沒有字節序標識(BOM)的 UTF-8 編碼格式做爲文本的默認編碼格式。更多的 Windows 程序和工具正在從 UTF-16 向沒有字節序標識的 UTF-8 編碼格式遷移。PowerShell Core 改變了默認的編碼格式以適應更普遍的平臺。

這表明全部可以使用 -Encoding 參數的內置 cmdlet 將默認取值爲 UTF8NoBOM。如下的 cmdlet 將被該改動所影響:

  • Add-Content
  • Export-Clixml
  • Export-Csv
  • Export-PSSession
  • Format-Hex
  • Get-Content
  • Import-Csv
  • Out-File
  • Select-String
  • Send-MailMessage
  • Set-Content

這些 cmdlet 也同時得到了升級,所以 -Encoding 參數全局上將採納 System.Text.Encoding

$OutputEncoding 的默認值也被轉變爲 UTF-8。

最爲最佳實踐,用戶應當於腳本中明確的經過 -Encoding 參數設置編碼類型,以在各個平臺上取得可預期的肯定性結果。

New-ModuleManifest cmdlet 不具有 -Encoding 參數。經過 New-ModuleManifest 建立的模塊配置文件(.psd1)的編碼類型由環境決定:若是 PowerShell Core 運行於 Linux 環境中時,那麼採用沒有字節序標識(BOM)的 UTF-8 編碼;不然採用有字節序標識(BOM)的 UTF-16 編碼。

支持將流水線經過 & 符號放置於後臺

放置 & 符號於一條流水線的尾部將使得該流水線被做爲一個 PowerShell Job 運行。當一個流水線被放置於後臺時,將返回一個 Job 對象。當一條流水線做爲 Job 運行時,全部的標準 *-Job cmdlet 能夠被用於管理 Job。變量(忽略進程相關變量)將自動被拷貝到 Job 中,所以 Copy-Item $foo $bar & 能夠工做。同時,Job 被運行於當前目錄而不是用戶的家目錄。更多關於 PowerShell Job 的信息請參考 about jobs

語義版本

  • SemanticVersion 兼容 SemVer 2.0。(感謝 @iSazonov!)
  • 改變 New-ModuleManifest 默認的 ModuleVersion0.0.1 以對齊 SemVer 版本。(感謝 @LDSpits!)
  • System.Management.Automation.SemanticVersion 增長 semver 類型加速器
  • 支持比較 SemanticVersion 實例與 Version 實例,當後者僅包含 Major / Minor 兩個值時

語言升級

  • 實現 Unicode 轉義字符解析,所以用戶可使用 Unicode 字符用於參數、字符串或變量名中。(感謝 @rkeithhill!)
  • 爲 ESC 增長新的轉義字符
  • 支持將枚舉轉爲字符串。(感謝 @KirkMunro!)
  • 修復轉換隻包含單個元素的數組至通用集合中出現的問題。
  • .. 運算符增長字符範圍重載,所以 'a'..'z' 返回從 az 的字符。(感謝 @IISResetMe!)
  • 修復變量賦值可能複寫只讀變量的問題
  • 當動態執行腳本中的 cmdlet 時,將本地自動變量做用於轉換至 'DottedScopes'
  • 分離運算符支持選擇單行、多行選項。(感謝 @iSazonov!)

引擎更新

  • $PSVersionTable 加入四個新屬性:
    • PSEdition:於 PowerShell 平臺返回 Core,Windows PowerShell 平臺返回 Desktop
    • GitCommitId:返回該 PowerShell 版本構建所採起的 git commit id
    • OS:標識操做系統類型,即 [System.Runtime.InteropServices.RuntimeInformation]::OSDescription 的字符串值
    • Platform:標識平臺類型,即 [System.Environment]::OSVersion.Platform 的字符串值,於 Windows 平臺爲 Win32NT,於 macOS / Linux 爲 Unix
  • $PSVersionTable 中移除 BuildVersion 屬性,該屬性強依賴於 Windows 版本,如今可使用 GitCommitId 以得到精確的 PowerShell Core 構建版本。(感謝 @iSazonov!)
  • $PSVersionTable 中移除 ClrVersion 屬性,該屬性與 .Net Core 無關,且其保留於 .Net Core 中僅僅做爲歷史遺留緣由且在 PowerShell Core 中不可用
  • 增長三個自動變量以檢查 PowerShell 是否運行於某肯定的操做系統之上:$IsWindows / $IsMacOs / $IsLinux
  • 增長 GitCommitId 至 PowerShell Core 提示條。如今再也不須要經過 $PSVersionTable 獲取,而在啓動時能夠直接獲得版本信息。(感謝 @iSazonov!)
  • $PSHome 路徑下新增名爲 powershell.config.json 的 JSON 格式的配置文件以存儲首次運行時的某些配置,如 ExecutionPolicy
  • 當運行 Windows EXE 程序時不阻塞管道
  • 支持枚舉 COM 集合

Cmdlet 更新

新 cmdlet

  • Microsoft.PowerShell.Utility 增長 Get-Uptime
  • 增長 Remove-Alias 命令。(感謝 @PowershellNinja!)
  • 增長 Remove-Service 命令用於管理模塊。(感謝 @joandrsn!)

Web 相關 cmdlet

  • 爲 web 相關 cmdlet 增長證書驗證功能。(感謝 @markekraus!)
  • 爲 web 相關 cmdlet 增長內容頭處理功能。(感謝 @markekraus!)
  • 爲 web 相關 cmdlet 增長多連接頭部處理支持。(感謝 @markekraus!)
  • 爲 web 相關 cmdlet 增長鏈接頭部分頁功能。
    • 對於 Invoke-WebRequest,當網絡迴應包含連接頭部,其將創建一個基於字典的 RelationLink 屬性以表示 URL 以及 rel 字段間的關係,並確保各個連接均爲絕對地址以簡化開發。
    • 對於 Invoke-RestMethod,當網絡迴應包含連接頭部,其將暴露一個 -FollowRelLink 開關去自動跟蹤下一個 rel 連接直至達到最終的地址或跳次數達到可預設的 ·-MaximumFollowRelLink
  • 爲 web 相關 cmdlet 增長 -CustomMethod 參數支持,以支持包含非標準動詞的 cmdlet。(感謝 @Lee303!)
  • 爲 web 相關 cmdlet 增長 SslProtocol 支持。(感謝 @markekraus!)
  • 爲 web 相關 cmdlet 增長多部分包支持。(感謝 @markekraus!)
  • 爲 web 相關 cmdlet 增長 -NoProxy 參數支持以使得他們能夠忽略系統代理。(感謝 @TheFlyingCorpse!)
  • Web 相關 cmdlet UA 將包含操做系統平臺部分。(感謝 @LDSpits!)
  • 爲 web 相關 cmdlet 增長 -SkipHeaderValidation 開關,以支持不驗證頭部值下添加自定義頭部
  • Web 相關 cmdlet 能夠在須要的狀況下不驗證服務器 HTTPS 證書
  • 爲 web 相關 cmdlet 增長驗證參數。(感謝 @markekraus!)
    • 增長 -Authentication 參數,提供三種選項:Basic / OAuth / Bearer
    • 增長 -Token 參數,用於獲取 OAuth / Bearer 模式下的令牌。
    • 增長 -AllowUnencryptedAuthentication 參數,用於短路任何非 HTTPS 協議下傳輸模式的驗證功能
  • Invoke-RestMethod 增長 -ResponseHeadersVariable 參數以使能頭部數據捕獲。(感謝 @markekraus!)
  • 修復 web 相關 cmdlet 以識別非 Success 返回值的 HTTP Response 爲異常。
  • 將 web cmdlet UserAgentWindowsPowerShell 移動至 PowerShell。(感謝 @markekraus!)
  • Invoke-RestMethod 增長明確的 ContentType 檢測功能。
  • 修復 web 相關 cmdlet 的 -SkipHeaderValidation 參數使其能夠兼容含非標準 UA 的 HTTP 包頭。(感謝 @markekraus!)

JSON 相關 cmdlet

  • ConvertFrom-Json 增長 -AsHashtable 參數,使其返回值爲一個 Hashtable 而不是默認類型。(感謝 @bergmeister!)
  • 美化 ConvertTo-Json 輸出。(感謝 @kittholland!)
  • ConvertTo-Json 添加 Jobject 序列化支持。
  • 修復 ConvertFrom-Json 以使其能夠反序列化字符串數組造成 JSON 格式的字符串。本項更新修復某些狀況下新行符可能意外終止 JSON 解釋的問題。
  • 移除 System.Array 中的 AliasProperty "Count" 聲明,以去除某些 ConvertFrom-Json 結果中額外產生的 Count 屬性。(感謝 @PetSerAl!)

CSV 相關 cmdlet

  • Import-CsvConvertFrom-Csv 增長 PSTypeName 支持。(感謝 @markekraus!)
  • Import-Csv 可支持 CR / LF / CRLF 做爲行分隔符。(感謝 @iSazonov!)
  • Export-CsvConvertTo-Csv 增長默認值 -NoTypeInformation。(感謝 @markekraus!)

服務相關 cmdlet

  • Get-Service cmdlet 返回的 ServiceController 對象添加屬性:UserName / Description / DelayedAutoStart / BinaryPathName / StartupType。(感謝 @joandrsn!)
  • Set-Service 增長證書設置功能。(感謝 @joandrsn!)

其餘 cmdlet

  • Get-ChildItem 增長參數 -FollowSymlink 使其能夠提供支持循環引用檢測的按需連接遍歷功能。
  • 升級 Add-Type 以支持 CSharpVersion7。(感謝 @iSazonov!)
  • 移除 Microsoft.PowerShell.LocalAccounts 模塊,因爲其使用了已經不支持了的 API,當找到更好的解決方案時會被恢復。
  • 移除 Microsoft.PowerShell.Diagnostics 中的 *-Counter cmdlet,因爲其使用了已經不支持了的 API,當找到更好的解決方案時會被恢復。
  • 支持 Invoke-Item -Path <folder>
  • Split-Path cmdlet 提供 -Extension-LeafBase 開關,使用戶能夠切分路徑中的文件擴展名和剩餘部分。(感謝 @powercode!)
  • Sort-Object 增長 -Top-Bottom 參數,使其支持對首尾的 N 個項目進行排序
  • 經過向 System.Diagnostics.Process 中增長 CodeProperty "Parent" 以暴露進程的父進程。(感謝 @powercode!)
  • Get-Process 中的內存列使用 MB 爲單位,替換原來的 KB
  • Out-String 增長 -NoNewLine 開關。(感謝 @raghav710!)
  • Move-Item 添加 -Include / -Exclude / -Filter 參數。
  • 容許 * 用做 Remove-Item 的註冊路徑。
  • Get-Credential 增長 -Title 選項,並統一跨平臺體驗。
  • Test-Connection 增長 -TimeOut 選項
  • Get-AuthenticodeSignature cmdlet 現能夠獲取文件簽名時間戳
  • 移除 Get-Help cmdlet 不主持的 -ShowWindow 開關
  • 修復 Get-Content -Delimiter 使其在返回的數組元素中不包含分界符。(感謝 @mklement0!)
  • ConvertTo-HTML 增長 Meta / Charset / Transitional 選項。(感謝 @ergo3114!)
  • Get-ComputerInfo 返回值添加 WindowsUBRWindowsVersion 屬性。
  • Get-Verb 增長 -Group 參數。
  • New-FileCatalogTest-FileCatalog 增長 ShouldProcess 支持(修復 -WhatIf / -Confirm)。(感謝 @iSazonov!)
  • Start-Process cmdlet 增長 -WhatIf 開關。(感謝 @sarithsutha!)
  • 增長 ValidateNotNullOrEmpty 至現存參數

Tab 補全

  • 基於運行時變量值加強 Tab 補全中的類型推斷功能。(感謝 @powercode!)這使得以下狀況下的 Tab 補全可用:

    $p = Get-Process
    $p | Foreach-Object Prio<tab>
    複製代碼
  • Select-Object-Property 選項添加哈希表 Tab 補全。(感謝 @powercode!)

  • Select-Object-ExcludeProperty-ExpandProperty 選項參數添加自動補全。(感謝 @iSazonov!)

  • 修復一個 Tab 補全中的 Bug:native.exe --<tab> 調起原生程序自帶補全功能。(感謝 @powercode!)

斷裂性改變

PowerShell Core 引入了大量斷裂性改變,詳細內容請參考 PowerShell Core 6.0 中的斷裂性改變

調試

  • Invoke-Command -ComputerName 提供遠程步進調試(remote step-in debugging)支持
  • 開啓綁定式調試日誌支持

文件系統更新

  • 支持從 UNC 路徑提供的文件系統
  • Split-Path 如今可用於 UNC 根下
  • cd 不帶參時,默認行爲爲 cd ~
  • 修復 PowerShell Core 以使其支持超過 260 字符的文件路徑長度

Bug 修復與性能提高

咱們已經爲 PowerShell 平臺配置了大量性能提高,包含對啓動時間 / 多種內置 cmdlet 及與原生二進制交互性的優化。

同時,咱們也修理了大量的 PowerShell Core 中發現的 Bug,完整列表與更改描述,請參考咱們放置於 GitHub 上的 CHANGELOG

感知(數據收集)

  • PowerShell Core 6.0 爲運行平臺增長了遠程感知功能以上報以下參數值:
    • 操做系統平臺($PSVersionTable.OSDescription
    • 具體 PowerShell 版本($PSVersionTable.GitCommitId

若是用戶但願自願退出該項感知功能(即:信息收集)只需聲明環境變量 POWERSHELL_TELEMETRY_OPTOUT 爲以下的一個值:true / 1 /yes。聲明該環境變量將忽略全部感知功能,即便於 PowerShell 首次啓動時。咱們已經計劃公開從該項遙感計劃中獲得的數據和提煉的感知於社區中。你能夠從該博客中得到更多詳細信息。

相關文章
相關標籤/搜索