跨域边界的 New-PSSession

跨域边界的 New-PSSession

我正在尝试启动一个需要能够创建新会话的虚拟机(使用 New-PSSession)。关于远程故障排除当然是我的忠实伙伴!

启动基本机器(Win 8.1 Enterprise)后:

  • 我公司的主要域名是mycompany.com
  • 我们有一个开发域dev.mycompany.com,以便开发人员有一个可以使用的沙箱。
  • 我将新的虚拟机(名为 my-vm)添加到开发域dev.mycompany.com
  • 我在新虚拟机上有一个本地帐户,my-vm\msorens该帐户位于本地机器的管理员组中。

第一道关卡:

New-PSSession由于跨域问题,尝试运行失败,访问被拒绝。根据上面引用的故障排除页面:

当另一个域中的用户是本地计算机上的管理员组的成员时,该用户无法以管理员权限远程连接到本地计算机。

我并不确信这是真的(由于我缺乏领域问题经验),但应用该补救措施的配方可以使基本方法New-PSSession发挥作用:

New-ItemProperty `
-Name LocalAccountTokenFilterPolicy `
-Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System `
-PropertyType DWord `
-Value 1

(虽然不太安全,但没关系,因为它只是一个沙盒虚拟机。)

第二道关卡:

使用上述补丁后,我可以成功完成以下任何一项操作:

PS> New-PSSession
PS> New-PSSession -ComputerName localhost
PS> New-PSSession -ComputerName my-vm

然而,我实际需要的是提供机器的 FQDN:

PS> New-PSSession -ComputerName my-vm.dev.mycompany.com

由于缺少凭证,该操作失败。这给我们带来了以下信息:

PS> New-PSSession -ComputerName my-vm.dev.mycompany.com -Credential (Get-Credential)

我尝试过我的本地(my-vm)凭据,结果是WinRM 无法处理请求;没有可用的登录服务器

我尝试了我的公司域凭据(请注意,这是 mycompany.com,而不是 VM 实际所在的域 dev.mycompany.com),结果是访问被拒绝

有没有什么办法可以让它工作?

答案1

在工作中我们也遇到过同样的情况。以下是我们在新同事的计算机上执行的一些步骤,以便他们能够连接到我们域外的这些服务器。

在客户端

winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'

在服务器端

Enable-PSRemoting -Force
winrm quickconfig

对于 HTTPS

winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="_";CertificateThumbprint="_"}

对于 HTTP

winrm create winrm/config/Listener?Address=*+Transport=HTTP

测试

Test-WsMan ComputerName
Test-WsMan ComputerName -UseSSL

创建会话

New-PSSession -ComputerName Computer1 -Credential (Get-Credential)

当然,您需要配置防火墙以让服务器监听 powershell 远程端口。

编辑:使用 PowerShell 设置 TrustedHosts

或者使用 PowerShell(以管理员身份)

Set-Item -Path WSMan:\localhost\Client\TrustedHosts -Value "Computer1,Computer2"

并检查(不需要管理员)

Get-Item WSMan:\localhost\Client\TrustedHosts

相关内容