【问题标题】:Get Active Directory Information from PC's in a text file - Powershell在文本文件中从 PC 获取 Active Directory 信息 - Powershell
【发布时间】:2014-03-10 14:39:19
【问题描述】:

我正在尝试运行的 Powershell 命令行出现问题。我们需要的是使用 Powershell 从 PC 的文本文件列表中获取 PC 名称和 LastLogonDate。

这是我尝试运行的代码:

Get-Content C:\Hosts.txt | ForEach-Object{Get-ADComputer $_ -Properties Name,LastLogonDate | Select-Object Name,LastLogonDate | Export-Csv C:\Output.csv}

当我运行该代码时,我收到一条错误消息:“找不到具有标识的对象:'ComputerName'”,尽管 PC 确实处于 AD 中。令我困惑的是,如果您自己运行 ForEach-Object 之后的所有内容,它都会运行得很好。当您添加 Get-Content 和 ForEach-Object 时,错误就开始了。我可以从错误消息中看到正在从文本文件中读取每个单独的计算机名称,但我想知道它是否以 Get-ADComputer 不喜欢的方式传递它。

【问题讨论】:

  • 你能举一个你的Hosts.txt的例子吗,根据你的错误它以'computername'开头
  • 刚刚意识到这仍然没有答案,我很抱歉。我不知道为什么这以前不起作用,但我在我所在的新公司进行了测试,一切都很好。我确实添加了一个附加导出命令,但除此之外它完全按照它应该的方式工作。在那个特定的环境中一定是一个奇怪的侥幸。获取内容 C:\Hosts.txt | ForEach-Object{Get-ADComputer $_ -Properties Name,LastLogonDate |选择-对象名称、LastLogonDate | Export-Csv C:\Output.csv -Append}

标签: active-directory powershell-3.0


【解决方案1】:

几件事。首先是查看 hosts.txt 文件中的内容。第二件事是将 Export-Csv 命令移到 ForEach-Object 语句之外。如果你保持原样,它只会返回它在 csv 文件中处理的最后一个对象。我已经发布了一个应该如何做的例子。

Get-Content C:\Hosts.txt | ForEach-Object {Get-ADComputer $_ -Properties Name,LastLogonDate | Select-Object Name,LastLogonDate} | Export-Csv C:\Output.csv

我无法复制您的问题,唯一不同的是 hosts.txt 文件的内容,因此查看它会有所帮助。

【讨论】:

  • 是的,我现在在一家新公司工作,使用每行 1 个计算机名称的常规旧文本文件可以正常工作,正如预期的那样。在旧环境中一定是侥幸。只认为我需要添加一个 -Append 到 Csv 导出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
相关资源
最近更新 更多