PowerShell或Batch文件,用于报告远程计算机上是否存在文件

时间:2014-03-24 18:32:56

标签: batch-file powershell

我正在寻找在远程计算机上运行的批处理文件或PowerShell脚本,以检查文件是否存在,如果没有,则将其报告给.txt或.cvs文件。

2 个答案:

答案 0 :(得分:2)

您可以使用Test-PathAdd-Content cmdlet来实现此目的。这是一个简单,通用的例子。您可以更新它以反映您的特定需求。

# Step 1: Build an array of file paths
$FileList = @(
      '\\computer1\c$\path\to\file.txt'
    , '\\computer2\share\file\name.ext'
    , '\\computer3\path\to\foo\bar.txt'
    )

# Step 2: Test each path and log to a text file
foreach ($File in $FileList) {
    if (!(Test-Path -Path $File)) {
        Add-Content -Path 'c:\path\to\log file.log' -Value "File does not exist: $File";
    }
}

要导入计算机列表,请使用Get-Content cmdlet:

# Step 1: Get array of computer names and define path
$ComputerList = Get-Content -Path c:\list\of\computers.txt;
$FilePath = '\\{0}\share\path\to\file.txt';

# Step 2: Test each path and log to a text file
foreach ($Computer in $ComputerList) {
    if (!(Test-Path -Path ($FilePath -f $Computer))) {
        Add-Content -Path 'c:\path\to\log file.log' -Value "File does not exist: $File";
    }
}

答案 1 :(得分:0)

有许多方法可以访问文件。我将假设,出于安全原因,您不希望授予对该文件的访问权限,只检测该文件是否存在。在这种情况下,我将使用在远程计算机上运行的简单HTTP服务器并使用curl或wget对其进行测试。有Windows的等价物。

如果您确实想要访问文件内容,那么我会将该文件夹公开并使用测试路径:http://technet.microsoft.com/en-us/library/hh849776.aspx