AD 的多台计算机上的测试路径

AD 的多台计算机上的测试路径

我正在尝试找出如何通过 PowerShell 针对计算机列表创建测试路径并为每台计算机接收“false”或“true”。

例如,做这样的事情:

 $Computer = "OU=wsus,DC=server,DC=Com"
 Test-Path -Path "\$Computer\C$\Program Files\your app"

结果:

 computer1 = false computer2 = true computer3...

这可能吗?或者有更好的方法吗?谢谢你的帮助。

答案1

使用带有 LDAP OU 路径的参数,仅列出Get-ADComputer返回对象的属性。将这些结果通过管道传输到循环,然后测试计算机是否可以远程访问,并运行其他逻辑以根据计算机输出相应的结果。-SearchBaseNameForEach-Object

基本上,条件逻辑的工作方式如下:

  1. 如果机器无法远程访问查询,则使用条件If向终端写入黄色消息,表明无法访问的特定机器存在连接问题。
  2. 如果机器可以远程访问查询,但文件夹或可执行文件的路径不存在,则向终端写入红色消息,表示该应用程序不存在。
  3. 如果机器可以远程访问查询,并且文件夹或可执行文件的路径确实存在,则向终端写入一条绿色消息,表明该应用程序确实存在。

笔记:我个人更喜欢检查实际的 exe 而不是仅仅检查文件夹,因为我看到过一些软件卸载并留下一个文件夹,即使软件已被卸载 - 请相应地进行调整。

电源外壳

(Get-ADComputer -Filter * -SearchBase "OU=wsus,DC=server,DC=Com").Name | ForEach-Object { 
    If (Test-Connection -ComputerName $_ -Quiet -Count 1) {
        $app = "\\$_\C$\Program Files\your app\App.exe";
        If (Test-Path $app){Write-Host "The App does exist ==> $_" -ForegroundColor Green} Else {Write-Host "No App Exists ==> $_" -ForegroundColor Red};
    } Else {Write-Host "Not accessible to check ==> $_" -ForegroundColor Yellow}
};

输出示例

在此处输入图片描述

No App Exists ==> PC0001
No App Exists ==> PC0002
Not accessible to check ==> PC0003
Not accessible to check ==> PC0004
The App does exist ==> PC0005
The App does exist ==> PC0006
The App does exist ==> PC0007
The App does exist ==> PC0008

支持资源

答案2

你是这个意思吗?

'127.0.0.1', 'localhost', $env:COMPUTERNAME | 
ForEach {
    Try   {Test-Path -Path "\\$PSItem\C$\Windows" -PathType Container -ErrorAction Stop}
    Catch {$Error[0].Exception}
}
# Results
<#
True
True
True
#>

'127.0.0.1', 'localhost', $env:COMPUTERNAME | 
ForEach {
    Try   {Test-Path -Path "\\$PSItem\C$\Test" -PathType Container -ErrorAction Stop}
    Catch {$Error[0].Exception}
}
# Results
<#
False
False
False
#>

相关内容