2017-02-21 7 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 $의 \ 사용자를 \ 기본 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