查找程序是否安装在远程计算机上

时间:2015-06-11 17:53:50

标签: windows powershell active-directory

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

我无法让他们正常工作,而且他们并不是我想要的。

我想做的一个例子:说我网络上有3台电脑:

123-abc
123-bcd
123-cde

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

3 个答案:

答案 0 :(得分: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")
}

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

$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对多个远程主机运行脚本块。