【问题标题】:Find if a program is installed on remote computer查找远程计算机上是否安装了程序
【发布时间】:2015-06-11 17:53:50
【问题描述】:

我正在尝试使用 Active Directory 连接到远程计算机并查看是否安装了单个程序。我尝试了一些在 Internet 上找到的教程,但没有成功:

我无法让它们正常工作,它们也不是我想要的。

我想做的一个例子:假设我的网络上有 3 台计算机:

123-abc
123-bcd
123-cde

我想看看可执行文件C:\Program Files (x86)\Mozilla Firefox\Firefox.exe 是否存在。有人可以解释一下我如何在 PowerShell 中解决这个问题吗?

【问题讨论】:

    标签: windows powershell active-directory


    【解决方案1】:

    如果您具有域管理员权限并且在目标计算机上启用和访问管理共享,那么最简单的方法是:

    $computers = '123-abc', '123-bcd', '123-cde'
    $path = 'C$\Program Files (x86)\Mozilla Firefox\Firefox.exe'
    
    $computers | % {
      '{0}: {1}' -f $_, (Test-Path -LiteralPath "\\$_\$path")
    }
    

    【讨论】:

      【解决方案2】:

      有多种方法可以检查已安装的软件。有些比其他更适合。但如果您确定每台机器上的文件路径,Test-Path CmdLet 可能是一种简单的方法。

      Invoke-Command -ComputerName 123-abc -ScriptBlock {Test-Path 'C:\Program Files (x86)\Mozilla Firefox\Firefox.exe'}
      

      您可以将其放入带有自定义对象的循环中,以便您也可以使用它。

      【讨论】:

      • 嗯。我收到错误OpenError: (:) [], PSRemotingTransportException,但我不确定这意味着什么。我用谷歌搜索了几次,但结果不是很有帮助。有什么想法吗?
      【解决方案3】:

      例如,您的代码可能如下所示。

      $pass = "password";
      $secpass = ConvertTo-SecureString $pass -AsPlainText -Force;
      $creds = New-Object System.Management.Automation.PSCredential("domain\login", $secpass);
      Invoke-Command -ComputerName 123-abc, 123-bcd, 123-cde -Credential $creds -ScriptBlock {
          Test-Path "C:\Program Files (x86)\Mozilla Firefox\Firefox.exe"
      };
      

      有多种方法可以在远程计算机上运行 powershell 命令。

      • 许多命令支持string[]参数-ComputerName,您可以向其传递多个计算机名称
      • 您可以使用Enter-PSSession cmdlet 在远程计算机上进入类似 Telnet 的会话
      • 最后,您可以使用Invoke-Command cmdlet 针对多个远程主机运行脚本块。

      【讨论】:

      • 我实际上是在尝试批量测试一堆机器,我没有所有机器的密码,但我可以访问 ActiveDirectory。有什么办法可以在其中实现 AD 吗?
      • 好吧,我不太擅长 AD 的东西,但至少你不能从中提取某人的密码,它使用不可逆的加密。想想看,如果访问 ActiveDirectory 将允许您如此简单地使用某人的身份 - 它会危及安全性。无论如何,这是另一个问题,也许有人知道一些深奥的方法来做你想做的事。我很高兴知道)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 2020-01-15
      相关资源
      最近更新 更多