2017-02-21 6 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]行はバックスラッシュで分割し、分割の最後のセクションを返します。つまり、domain \ usernameまたはusernameからユーザー名を取得します。

$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

関連する問題