2017-02-21 43 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