我正在寻找在远程计算机上运行的批处理文件或PowerShell脚本,以检查文件是否存在,如果没有,则将其报告给.txt或.cvs文件。
答案 0 :(得分:2)
您可以使用Test-Path
和Add-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