正如Oded 所说,您需要 Active Directory 才能使用ServerManager
.
假设您有管理员RDP访问服务器,还有一种替代方法是在构建脚本中使用WinRM和远程 PowerShell(与最新版本的 WinRM 随附的 PowerShell 2.0 配合使用效果最佳):
Windows 远程管理命令行工具 (Winrm.cmd)
为不在域中的两台机器快速配置 WinRM:
客户:
winrm quickconfig(只是说是)
winrm 设置 winrm/config/Client/Auth '@{Basic="true"}'
:: 如果不使用 HTTPS,则只执行下一行
winrm 设置 winrm/config/Client '@{AllowUnencrypted="true"}'
winrm 设置 winrm/config/Client '@{TrustedHosts="hostname_or_ip"}'
服务器:
winrm quickconfig(只是说是)
winrm 设置 winrm/config/Service/Auth '@{Basic="true"}'
:: 参见:http://support.microsoft.com/kb/2019527 关于 https
winrm 快速配置-传输:https
:: 只有在不使用 HTTPS 并且您对发送凭据感到满意时才执行此操作
:: 明文。
winrm 设置 winrm/config/Service '@{AllowUnencrypted="true"}'
现在有一些警告。WinRM 将在 Windows 防火墙中为侦听器的端口 5985 和 5986 打一个洞(如果运行Windows Server 2003,它将使用端口 80 和 443)。这可能不符合您的喜好,您可能最好与您的网络管理员讨论如何保护它。
配置 WinRM 后,您需要在属于管理员组成员的远程服务器上配置用户帐户。完成后,您可以进行测试。在构建服务器上:
# the following line will prompt for a username and password, enter the name of the account
# you just configured on the IIS box
$cred = Get-Credential
# next test the connection
Test-WSMan -ComputerName <server_name_or_ip> -Authentication default `
-Credential $cred
如果一切正常,您应该会看到以下响应:
wsmid:http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.x
sd
协议版本:http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
产品供应商:微软公司
ProductVersion:操作系统:6.1.7600 SP:0.0 堆栈:2.0
接下来是连接到远程 PowerShell 会话:
Enter-PSSession <server_name_or_ip_address> -Authentication default -Credential $cred
如果这成功了,您应该在远程计算机上有一个 PowerShell 提示符。
然后,您可以使用远程 PowerShell 加载适用于 PowerShell 的 WebAdministration Provider 并根据您的心意操作 IIS 的许多方面:
适用于 Windows PowerShell 的 Web 管理 (IIS) 提供程序
要连接到远程服务器,您需要提供一个PSCredential
对象。如上所述,您将使用以下方法提供此内容:
$cred = Get-Credential
但是,这总是需要通过键盘进行一些交互来提供用户名和密码。显然,这对自动化 CI 没有好处。
但是,您可以将密码存储在文件中。为此,只需运行一次(或每当密码更改时):
read-host -assecurestring | convertfrom-securestring | out-file C:\securestring.txt
然后,当您需要创建PSCredential
对远程服务器进行身份验证时:
$username = "deployment_user"
$password = cat C:\securestring.txt | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential `
-argumentlist $username, $password
$serverNameOrIp = "192.168.1.1"
Enter-PSSession $serverNameOrIp -Authentication default -Credential $cred
上面的脚本来自以下博客条目,但我已经复制以保存在这里,以防文章变暗:
在没有提示的情况下使用 PSCredentials - GeeksWithBlogs (archive.org)
无论如何,一旦你连接到远程服务器,你可以发出进一步的命令,例如:
Import-Module WebAdministration
CD IIS:\Sites
等等。
如果这台机器面向互联网并且访问的唯一方法是通过互联网,则应谨慎处理上述大部分内容。如果是这种情况,请考虑将 WinRM 端口仅限于 VPN。