我正在尝试使用Active Directory连接到远程计算机,并查看是否安装了单个程序。我尝试了一些我在互联网上找到的教程,但没有成功:
我无法让他们正常工作,而且他们并不是我想要的。
我想做的一个例子:说我网络上有3台电脑:
123-abc
123-bcd
123-cde
我希望查看可执行文件C:\Program Files (x86)\Mozilla Firefox\Firefox.exe
是否存在。有人可以解释我如何在PowerShell中解决这个问题吗?
答案 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对多个远程主机运行脚本块。