我有大约 30 台计算机需要获取其信息。例如,它们是否在线、硬盘空间大小以及正在运行哪些进程。我的系统上有我运行的脚本,但我不知道它如何验证和处理某些请求。当我使用以下东西时:
Get-WmiObject -ComputerName <foocomputer>
它的作用似乎不同于:
Get-Process -ComputerName <foocomputer>
我读到了一些关于 Powershell 有时在某些情况下使用 WMI 而在其他情况下使用 RPC 的内容。我需要做什么才能在我的计算机上执行此脚本并从所有其他计算机获取此信息,同时保证其安全?
主持人
- Windows 7(可能是 8 或 10)
- 已安装 powershell 4.0
远程计算机
- Windows 7(带 PS4.0)(用于测试)
- Windows 8(最终目标)
网络
- 领域
答案1
您需要在每台远程计算机上启用 PSRemoting。我认为您需要亲自接触每台计算机才能做到这一点,但之后您应该一切顺利。在每台远程计算机上,以管理员身份打开 Powershell,然后输入以下命令:
Enable-PSRemoting
为了安全起见,我喜欢接着执行第二条命令:
Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI
这将打开一个对话框,让您微调谁有远程访问权限。您可以添加特定用户,或者添加域管理员之类的用户。
还有一个警告:远程注册表服务未配置为在 Windows 7 上自动启动。Windows 8 中可能也是如此,但我不确定。如果您计划经常运行脚本,则可能希望让该服务自动启动。对于临时需要,您可以使用 sc 命令从计算机启动它:
sc \\computername start remoteregistry
这样,该服务将只运行到下次重启。