2017-02-21 44 views
1

我试图运行一个循环,检查桌面上特定访问数据库的计算机列表。我在检查诸如Users \ Default之类的路径时已经有效,但是我真的需要它来检查当前登录在中的用户的桌面。这是可能的,还是我需要一个特定的用户名列表与计算机名称的.txt一起?检查远程计算机桌面上的文件

$computers=Get-Content C:\Users\zrasner\Documents\project_files\powershell_computernames\computernames.txt 

foreach ($computer in $computers) { 
    $path = Test-Path "\\$computer\c$\Users\Default\VAST.accdb\" 
    If ($path -eq $true) { Write-Host "($computer) VAST is present in Default Users Folder"} 
    If ($path -eq $False) { Write-Host "($computer)VAST File Not Found"} 
} 

再次,我想将检查目标更改为有问题的远程计算机的桌面。

+0

你需要在这里卸下最后反斜杠'测试的路径“\\ $计算机\ C $ \ USERS \ DEFAULT \ VAST.accdb \”'这是目前正在寻找一个叫“VAST.accdb文件夹'不是档案。要检查桌面上的文件,您需要使用'Test-Path“\\ $ computer \ c $ \ Users \ Default \ Desktop \ VAST.accdb”' –

回答

0

下面代码中的第一行$user获取用户名。 $user = ($user).Split('\')[-1]行按反斜杠分割并返回分割的最后一部分。这意味着它将从域\用户名或用户名捕获用户名。

$computers=Get-Content C:\Users\zrasner\Documents\project_files\powershell_computernames\computernames.txt 

foreach ($computer in $computers) { 
    $path = $false 

    $user = Get-WmiObject –ComputerName $computer –Class Win32_ComputerSystem | Select-Object -ExpandProperty UserName 
    $user = ($user).Split('\')[-1] 

    $path = Test-Path "\\$computer\c$\Users\Default\VAST.accdb" 
    If ($path) { Write-Host "($computer) VAST is present in Default Users Folder"} 

    $path = Test-Path "\\$computer\c$\Users\$user\VAST.accdb" 
    If ($path) { Write-Host "($computer) VAST is present in currently logged on user ($user)'s Folder"} 

    If ($path -eq $False) { Write-Host "($computer)VAST File Not Found"} 
} 
+0

您的代码无法正常工作,因为它正在寻找对于名为“VAST.accdb”的文件夹不是文件。您需要从每个“Test-Path”中删除尾部的反斜杠,因为这表示路径是一个文件夹。 –

+0

我的不好,@JamesC。谢谢 - 复制并粘贴用户代码而不删除斜杠 - 在编辑中排序。 – TechSpud