2017-02-21 1 views
1

J'essaie d'exécuter une boucle qui vérifie une liste d'ordinateurs pour une base de données d'accès particulière sur le bureau. Je l'ai pour travailler lors de la vérification d'un chemin tel que Users \ Default, mais vraiment j'en ai besoin pour vérifier sur le bureau de l'utilisateur actuellement connecté. Est-ce possible ou aurais-je besoin d'une liste de noms d'utilisateur particuliers pour accompagner le .txt de noms d'ordinateurs?Vérification du fichier sur les ordinateurs de bureau de l'ordinateur distant

$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"} 
} 

Encore une fois, je voudrais changer la destination de vérification pour être le bureau de l'ordinateur distant en question.

+0

Vous devrez retirer la barre oblique inverse finale ici 'Test-Path "\\ ordinateur $ \ c $ \ Users \ Default \ VAST.accdb \"' Ceci est actuellement à la recherche d'un dossier appelé « VAST.accdb pas un fichier. Pour vérifier un fichier sur le bureau, vous devez utiliser 'Test-Path \\ $ ordinateur \ c $ \ Users \ Default \ Desktop \ VAST.accdb" ' –

Répondre

0

La première ligne $user dans le code ci-dessous obtient le nom d'utilisateur. La ligne $user = ($user).Split('\')[-1] se sépare par barre oblique inverse et renvoie la dernière section de la division. Cela signifie qu'il va capturer le nom d'utilisateur du domaine \ nom d'utilisateur ou nom d'utilisateur.

$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

Votre code ne fonctionnera pas correctement car il cherche pour un dossier appelé 'VAST.accdb' pas un fichier. Vous devez supprimer la barre oblique inverse à la fin de chaque 'Test-Path' car cela signifie que le chemin est un dossier. –

+0

Mon mauvais, @ JamesC. Merci - copié et collé le code des utilisateurs sans enlever les barres obliques - trié dans le montage. – TechSpud