【问题标题】:Remote Powershell Commands (outside of network)远程 Powershell 命令(网络外)
【发布时间】:2019-12-18 00:55:58
【问题描述】:

我正在尝试构建一个 Powershell 脚本,它允许您从 Powershell 会话执行各种系统管理级别的任务。但是,在网络之外,我在解析主机名和身份验证时遇到了问题。 DNS 记录在域控制器级别没有问题,甚至在 \drivers\etc\host 文件中输入了 DNS 条目,但仍然出现两个错误之一,如果使用 fqdn,它无法解析,或者如果使用它声明的 IP 地址您只能在启用 HTTPS 的情况下使用此方法。这是我迄今为止在下面尝试过的:

$rcreds = Get-Credential -credential test.user@test.com
$rcomp = Read-Host "Enter FQDN of remote computer"
$rdir = Read-Host "Enter directory"


Invoke-Command -ComputerName $rcomp -ScriptBlock -Credential $rcreds {
    Get-ChildItem c$\$rdir
}

【问题讨论】:

  • 您在使用 FQDN 时遇到的确切 DNS 错误是什么? nslookup server.domain.tld 是否返回您期望的 IP?使用 IP 时会出现预期错误 - 您需要信任 winrm 配置中的主机或通过 HTTPS 启用 WinRM(并且 IP 需要是用于服务的受信任证书中的主题或 SAN 之一WinRM 在这种情况下,否则您仍然必须信任主机)。
  • “WinRM 客户端无法处理请求,因为无法解析服务器名称。”某种程度的东西,可能并不准确。是的,nslookup 和 ping 可以毫无问题地解析主机名。
  • 确切的错误很重要,因为如果 Kerberos 无法验证主机名与无法在 DNS 中找到它,错误看起来很相似。此时可能是身份验证问题或 DNS 问题,目前还不清楚。

标签: powershell wmi


【解决方案1】:

我不明白 $rdir 会如何在远程范围内以这种方式工作。

Invoke-Command -ComputerName $rcomp -ScriptBlock -Credential $rcreds { 
    Get-ChildItem c$\$using:rdir 
}

【讨论】:

  • 这是正确的。问题是它拒绝解析主机名,并且没有通过在端口上启用服务来设置 HTTPS 连接,我有点不知所措。
  • 我认为@js2010 表示您传递给Get-ChildItem 的路径看起来不正确...C$ 将是管理C: 共享,但您必须将其作为UNC 路径(例如 \\servername\C$\\.\C$),而不是本地路径。
  • @BendertheGreatest 通常也无法从脚本块访问 $rdir 变量。
猜你喜欢
  • 1970-01-01
  • 2010-10-01
  • 2012-01-16
  • 2021-05-10
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
相关资源
最近更新 更多