需要查明服务器上是否存在特定文件夹..如果是,那么是哪个驱动器 C: 或 D
Need to find out if particular folder exists on the server..if yes then which drive C: or D
我需要查明服务器上是否存在名为 Backupeventlog
的文件夹。如果是那么驱动器 C: 或 D: 驱动器。此文件夹是否为空,如果不为空,则在此文件夹下创建的最新文件的日期是多少。
下面是我正在使用的脚本,但它似乎不起作用。 :(
$a = Get-Content C:\Lists\Servers.txt
foreach ($Servers in $a)
{
if (Test-Connection $Servers -Count 1 -ea 0 -Quiet)
{
if ("Test-Path \$Servers\D$\Backupeventlog\*" -or "Test-Path \$Servers\C$\Backupeventlog\*")
{
$latest = Get-ChildItem \$Servers\C$\Backupeventlog -Force |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
Write-Host $Servers - Backupeventlog exists in C: drive and latest file in folder is of date $latest.Lastwritetime
$latest1 = Get-ChildItem \$Servers\D$\Backupeventlog -Force |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
Write-Host $Servers - Backupeventlog exists in D: drive and latest file in folder is of date $latest1.Lastwritetime
}
else
{
Write-Host $Servers - Backupevent folder does not exist or empty
}
}
Else
{
Write-Host $Servers - not pinging.
}
}
进行个别检查,不要将整个命令放在双引号中(否则 PowerShell 只会回显命令字符串而不会实际执行命令):
if (Test-Path \$Servers\C$\Backupeventlog\*) {
$latest = Get-ChildItem \$Servers\C$\Backupeventlog -Force |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
Write-Host 'drive C:'
} elseif (Test-Path \$Servers\D$\Backupeventlog\*) {
$latest = Get-ChildItem \$Servers\D$\Backupeventlog -Force |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
Write-Host 'drive D:'
} else {
Write-Host 'not found'
}
如果备份文件夹只能存在于其中一个驱动器上,并且您可以忽略有关没有这两个驱动器的服务器的信息,您也可以执行这样的管道以从存在备份文件夹的每个服务器中获取最新文件:
Get-Content C:\Lists\Servers.txt |
Where-Object { Test-Connection $_ -Count 1 -Quiet } |
ForEach-Object {
Get-ChildItem "\$_\C$\Backupeventlog\*", "\$_\D$\Backupeventlog\*" -EA SilentlyContinue |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1 -Expand FullName
}
由于完整路径仍包含驱动器信息,您可以在需要时稍后提取驱动器号。
我需要查明服务器上是否存在名为 Backupeventlog
的文件夹。如果是那么驱动器 C: 或 D: 驱动器。此文件夹是否为空,如果不为空,则在此文件夹下创建的最新文件的日期是多少。
下面是我正在使用的脚本,但它似乎不起作用。 :(
$a = Get-Content C:\Lists\Servers.txt
foreach ($Servers in $a)
{
if (Test-Connection $Servers -Count 1 -ea 0 -Quiet)
{
if ("Test-Path \$Servers\D$\Backupeventlog\*" -or "Test-Path \$Servers\C$\Backupeventlog\*")
{
$latest = Get-ChildItem \$Servers\C$\Backupeventlog -Force |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
Write-Host $Servers - Backupeventlog exists in C: drive and latest file in folder is of date $latest.Lastwritetime
$latest1 = Get-ChildItem \$Servers\D$\Backupeventlog -Force |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
Write-Host $Servers - Backupeventlog exists in D: drive and latest file in folder is of date $latest1.Lastwritetime
}
else
{
Write-Host $Servers - Backupevent folder does not exist or empty
}
}
Else
{
Write-Host $Servers - not pinging.
}
}
进行个别检查,不要将整个命令放在双引号中(否则 PowerShell 只会回显命令字符串而不会实际执行命令):
if (Test-Path \$Servers\C$\Backupeventlog\*) {
$latest = Get-ChildItem \$Servers\C$\Backupeventlog -Force |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
Write-Host 'drive C:'
} elseif (Test-Path \$Servers\D$\Backupeventlog\*) {
$latest = Get-ChildItem \$Servers\D$\Backupeventlog -Force |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
Write-Host 'drive D:'
} else {
Write-Host 'not found'
}
如果备份文件夹只能存在于其中一个驱动器上,并且您可以忽略有关没有这两个驱动器的服务器的信息,您也可以执行这样的管道以从存在备份文件夹的每个服务器中获取最新文件:
Get-Content C:\Lists\Servers.txt |
Where-Object { Test-Connection $_ -Count 1 -Quiet } |
ForEach-Object {
Get-ChildItem "\$_\C$\Backupeventlog\*", "\$_\D$\Backupeventlog\*" -EA SilentlyContinue |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1 -Expand FullName
}
由于完整路径仍包含驱动器信息,您可以在需要时稍后提取驱动器号。