WindowsServerVersion1709管理之入門篇
相信有部分同學們會有這樣的體驗,在公有云上購買了Windows Server Version 1709資料中心版的虛擬機器,通過遠端連線進去之後,裡面全是黑乎乎的一個命令列,其它啥也沒有。是不是中毒了?系統壞了???這,一臉懵懂啊。
首先,請不要驚慌,系統是正常的。
什麼是 Windows Server, version 1709?
Windows Server, version 1709 執行在伺服器核心(Server Core)模式下。這意味著沒有圖形使用者介面。為啥要這樣做?根據微軟的說法:它可以提供強大的優勢,如硬體要求較低、攻擊面更小並且減小了更新需求(減小了更新需求,這一點我無法認同,其他的還可以接受)。而且在這一版本里,微軟沒有提供圖形介面到 Server Core的轉換。可能是在Windows Server 2012/R2裡,圖形介面到Server Core的轉換經常會出錯,在2016裡就簡單粗暴一點,一旦安裝,禁止轉換。到了1709,直接就沒有圖形介面了。
Server Core和普通的帶GUI圖形介面的Windows Server 的主要區別如下:
- 資源管理器沒有了。我們熟悉的Windows Explorer,無法出現在Server Core裡。
- 所有依賴MMC的控制檯介面沒有了。也就是說執行*.msc將不會工作。例如:我們無法通過執行devmgmt.msc開啟裝置管理器了。
- 除了區域和語言及時間,其他的控制皮膚選項也沒有了。
- 比較”著名”的IE也沒有了。
Windows 管理工具簡介
可能是為了像Linux看齊吧,Windows Server Version 1709更像Linux風格。很多習慣了Windows操作介面的人(用Windows 不用圖形介面,生活將毫無意義:), 對Server core的使用無從下手。本節會提供幾個Windwows 管理大殺器:PowerShell和 Project Honolulu等並對此作簡單介紹。
PowerShell
幸虧有了PowerShell, 讓 Windows 從傳統的DOS命令列和批處理中解放了生產力。PowerShell 之父 Jeffrey Snover,在加入微軟之前是搞Linux的。所以,我們可以在PowerShell裡隨處看到Linux Shell的影子如ls, wget, curl 等。但PowerShell絕對不是shell的簡單升級。PowerShell 依賴.NET Framework實現了強大的物件導向的指令碼。隨著.NET FrameWork的開源和跨平臺,PowerShell Core在Linux上也已經正式推出。
微軟命名從來都是很低調的,但PowerShell命名直接就帶了一個Power,可見此功能的強大。Jeffrey 在發明了PowerShell這後,直接就晉升為微軟的Distinguished Engineer並且主導了Windows Server 2012的架構設計(跑遠了,回來)。
在Windows Server Version 1709裡開啟PowerShell很簡單,直接在命令列裡輸入 PowerShell
(大小寫不敏感)就可以開啟PowerShell進行操作了。
PowerShell還可以像SSH那樣遠端管理Windows 機器。以下示例在工作組的環境下如何配置PowerShell遠端,假定被管理的機器IP是 172.16.158.183。
- 在被管理的機器上,執行以下PowerShell命令:
Enable-PSRemoting -Force
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any
- 如果安全組有限制, 請開放對此機器入方向的5985(HTTP)和5986(HTTPS)埠。
- 在客戶端機器上(需要遠端連線被管理的機器上),執行以下命令以接受被管理的機器是受信任的。如果想管理任何機器,替換 172.16.158.183 為 *。
Set-Item WSMan:localhostclient rustedhosts -value 172.16.158.183 -Force
否則執行下一步Enter-PsSession
可能報以下錯誤:
Enter-PSSession : 連線到遠端伺服器 172.16.158.183 失敗,並顯示以下錯誤訊息: WinRM 客戶端無法處理該請求。如果身份驗證方案與 Kerberos 不同,或者客戶端計算機未加入到域中, 則必須使用
HTTPS 傳輸或者必須將目標計算機新增到 TrustedHosts 配置設定。 使用 winrm.cmd 配置 TrustedHosts。請注意,TrustedHosts 列表中的計算機可能未經過身份驗證。 通過執行以下命令可獲得有關此內容的更多資訊: winrm help config。 有關詳細資訊,請參閱 about_Remote_Troubleshooting 幫助主題。
所在位置 行:1 字元: 1
Enter-PSSession `172.16.158.183` -Credential:`administrator`
CategoryInfo : InvalidArgument: (172.16.158.183:String) [Enter-PSSession],PSRemotingTransportException
FullyQualifiedErrorId : CreateRemoteRunspaceFailed
- 這樣,在客戶端機器上通過以下PowerShell命令就可以遠端”SSH”到被管理的機器上了。(該輸入密碼還是要輸入密碼)
Enter-PsSession –ComputerName 172.16.158.183
Microsoft Project Honolulu
微軟在1709釋出時同時也宣佈了一個叫火奴魯魯的專案。火奴魯魯是美國夏威夷州首府和港口城市。華人稱之為檀香山(又跑遠了)。火奴魯魯專案是一個基於瀏覽器的圖形管理工具。他是在Server Core裡替代Server Manager 和MMC的管理工具。火奴魯魯可以從以下網站下載:
https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-honolulu
火奴魯魯管理配置方法:
- 在被管理的Server 1709機器上,執行以下PowerShell命令:
Enable-PSRemoting -Force
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any
- 如果安全組有限制, 請開放對此機器入方向的5985(HTTP)和5986(HTTPS)埠。
-
(第3步和第4步只需要做一步就可以了。)下載並安裝火奴魯魯工具並安裝在被管理的Server 1709機器上。
- 首先介紹在Server 1709機器上安裝。筆者使用了以下PowerShell命令在被管理的機器上下載了這個msi工具。
wget -Uri http://download.microsoft.com/download/E/8/A/E8A26016-25A4-49EE-8200-E4BCBF292C4A/HonoluluTechnicalPreview1802.msi -UseBasicParsing -OutFile c:HonoluluTechnicalPreview1802.msi
- 下載完後用以下命令列執行安裝。命令是立即返回的。
msiexec /i c:HonoluluTechnicalPreview1802.msi /qn /L*v log.txt SME_PORT=443 SSL_CERTIFICATE_OPTION=generate
- 要驗證是否安裝成功,可以使用PowerShell命令
cat log.txt
檢視安裝結果。如果有以下字樣,表明安裝成功。
MSI (s) (14:44) [09:48:37:885]: Product: Project `Honolulu`(技術預覽版) — Installation completed successfully.
MSI (s) (14:44) [09:48:37:885]: Windows Installer 已安裝產品。產品名稱: Project `Honolulu`(技術預覽版)。產品版本: 1.1.10326.0。產品語言: 1033。製造商: Microsoft Corporation。安裝成功或錯誤狀態: 0。 -
(第3步和第4步只需要做一步就可以了。)此工具也可以安裝在任何一個作為PowerShell遠端的客戶端機器上。
- 可以用瀏覽器下載並安裝.
- 安裝完成後,可以開啟 https://localhost/ 然後新增我們需要管理的Server 1709的機器的地址。
- 安裝完成後,可以通過任何可以訪問到安裝了火奴魯魯的機器的瀏覽器開啟。很意外的,居然不支援IE瀏覽器。必須要Microsoft Edge或者Chrome。
Sconfig
這個工具在Server Core誕生的那一天就有。不過現在被隱藏了。在命令列中輸入sconfig
就能出現此命令。能滿足基本需要,功能不是很強大。
遠端Server Manager
這個是目前主要的管理形式,不過只讀功能較多,可以操作的配置很少。暗地裡已經被Project Honolulu取代,因此本文不做描述。
管理 Windows Server, version 1709的常見操作FAQ
如何拷貝檔案到Server 1709?
這裡假定要複製的檔案在客戶端機器上。通過PowerShell遠端和通過Project Honolulu的方法都在客戶端機器和Server 1709的被管理機器已經按上面的方法進行了配置。
通過遠端RDP
- 在客戶端機器上,右擊檔案並選擇複製。
- 遠端mstsc 到Server 1709上。
- 在遠端機器上開啟notepad.依次 檔案 -> 開啟。在開啟對話方塊裡,選擇一個盤的路徑,右擊貼上。檔案就複製過來了。這是我最喜歡的一種方法。
通過PowerShell遠端
在客戶端機器上執行以下PowerShell命令即可:
$session = New-PSSession -ComputerName 172.16.158.183
Copy-Item -ToSession $session -Path C:1.txt -Destination c:2.txt
C:1.txt是客戶端機器的檔案位置。C:2.txt是要拷貝到目標機器上的位置。
通過Project Honolulu
依次點選被管理的機器-> 檔案 -> 上傳。
如何從內部關閉或者重啟Server 1709虛擬機器?
通過遠端RDP
- 遠端RDP到Server 1709上。
- 在命令列裡輸入
sconfig
, 然後根據需要選擇13 -重啟,14-關機並回車就可以了。 - 或者輸入以下命令列/PowerShell直接重啟或者關機:
shutdown -r -t 00 ::命令列 在0秒後重啟
shutdown -s -t 00 ::命令列 在0秒後關機
Stop-Computer -Force # Powershell 立即關機
Restart-Computer -Force # Powershell 立即重啟
通過PowerShell遠端
在客戶端機器上執行以下PowerShell命令即可:
Enter-PsSession –ComputerName 172.16.158.183
Restart-Computer -Force #重啟
Stop-Computer -Force #關機
通過Project Honolulu
依次點選被管理的機器-> 概述。
如何安裝IIS服務?
通過遠端RDP
- 遠端RDP到Server 1709上。
- 在命令列裡輸入
PowerShell
, 然後再執行以下PowerShell命令:
Import-Module ServerManager
Add-WindowsFeature Web-Server, Web-CGI, Web-Mgmt-Console
通過PowerShell遠端
在客戶端機器上執行以下PowerShell命令即可:
Enter-PsSession –ComputerName 172.16.158.183
Import-Module ServerManager
Add-WindowsFeature Web-Server, Web-CGI, Web-Mgmt-Console
通過Project Honolulu
依次點選被管理的機器-> 角色和功能 -> 選擇 Web伺服器 並確定需要的功能。
不小心在RDP會話中關閉了命令列視窗怎麼辦?
如果在遠端會話中不小心關閉了命令列視窗,可以通過遠端桌面傳送 Ctrl + Alt + Del組合鍵(如果使用的是mstsc,按下ctrl + Alt + End),在出現的介面選擇 工作管理員 回車後出現工作管理員,依次點 檔案 -> 新建任務,輸入cmd就可以了。
如果需要功能直達的方法,歡迎在評論區留言,我會根據留言需求更新常見操作FAQ。
Related Links
https://docs.microsoft.com/en-us/windows-server/get-started/get-started-with-1709
https://docs.microsoft.com/en-us/windows-server/manage/honolulu/honolulu
https://docs.microsoft.com/en-us/windows-server/manage/honolulu/honolulu-manage
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_remote_troubleshooting?view=powershell-6
相關文章
- node之tcp篇入門理解TCP
- 效能測試之入門篇
- Android 自定義 View 之入門篇AndroidView
- Flink 入門篇之 寫個WordCount
- 一、Ansible基礎之入門篇
- 深入理解Java SPI之入門篇Java
- 入門設計模式之彙總篇設計模式
- 踩坑指南:入門OpenTenBase之部署篇
- 入門篇-其之七-Java運算子Java
- 《MySQL 入門教程》第 03 篇 管理資料庫MySql資料庫
- openresty前端開發入門三之JSON篇REST前端JSON
- openresty前端開發入門四之Redis篇REST前端Redis
- openresty前端開發入門五之Mysql篇REST前端MySql
- Threes.js入門篇之9 - 全景圖JS
- Threes.js入門篇之2 - Hello WorldJS
- Three.js入門篇之1 - WebGL on HTMLJSWebHTML
- 踩坑指南:入門OpenTenBase之監控篇
- WebSocket系列之基礎知識入門篇Web
- llvm入門篇LVM
- Redis 入門篇Redis
- Spark入門篇Spark
- 爬蟲不得不學之 JavaScript 入門篇爬蟲JavaScript
- Threes.js入門篇之7 - 場景光照JS
- Threes.js入門篇之4 - World View ProjectionJSViewProject
- 入門篇-其之十-流程控制之迴圈結構
- Flutter入門篇(一)Flutter
- Flutter入門篇(二)Flutter
- HBase 基本入門篇
- 正則 (入門篇)
- Spring Security 入門篇Spring
- Flutter 入門指北(Part 11)之狀態管理,BLoCFlutterBloC
- python入門與進階篇(七)之原生爬蟲Python爬蟲
- Threes.js入門篇之6 - 場景漫遊JS
- 入門篇-其之八-常用類的簡單使用
- Threes.js入門篇之8 - 材質與紋理JS
- Threes.js入門篇之3 - 場景與相機JS
- go併發之goroutine和channel,併發控制入門篇Go
- 介面測試入門篇