Я очень новой для PowerShell и я надеялся, что смогу получить некоторую помощь в создании скрипта, который говорит мне, что дата изменения файла.
Если бы я знал больше о Powershell, как я чувствую, что я прошу много (все свое свободное время на этой неделе будет посвящена изучению PowerShell и лучше). Указывая мне в сторону, где научиться делать это будет очень полезно, как хорошо.
Вот полный список. Мне нужно, чтобы запустить отчет, что ежедневно проверяет список компьютеров в 90 разных магазинах, чтобы убедиться в их определенной резервной копии. Дата изменения должны сказать, если резервное копирование было выполнено, и будет устанавливаться на предыдущую дату.
Если дата изменения вчера, то есть не нужно быть выход. Если это не вчера, я хотел бы иметь выход в окне PowerShell, или в текстовом файле, в зависимости от того будет легче.
Я также должен проверить, что папка не старше семи дней для каждого из 90 магазинов, с одним и тем же критериям для вывода. Идея о том, что у меня будет такой для каждого магазина
Для Магазина 1:
Check file date for \\server\store\computer\c:\folder\"newest modified date in folder"
if date equals yesterday
then do nothing
if date does not equal yesterday
then output "Test did not backup"
check folder modified date for \\server\sample\store\backupfolder
if date equals <7 days old
then do nothign
if date equals >7 days old
then output "test did not backup"
Извините за не доказав моей исследовательской работы, я очень новой для PowerShell и я на крайний срок, чтобы это сделать. У меня, со вчерашнего дня, научилась делать все, что мне нужно сделать с этим скриптом. Спасибо @Кит для постановки меня на правильный путь. В итоге я использовал следующий код, чтобы достичь своей цели только наружу в месте, где результат был ложным.
$a = Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}
if ($a = (Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}))
{
}
Else
{
'STORE XXX HAS NOT RECEIVED ANY ORDERS IN THE PAST 7 DAYS'
}
$b = Get-ChildItem \\COMP NAME\Folder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}
if ($b = (Get-ChildItem \\COMP NAME\TFolder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}))
{
}
Else
{
'STORE XXX DID NOT RUN ITS BACKUP LAST NIGHT'
}
Если вы выполните командлет Get-item или Get-ChildItem команды это выход система.ИО.FileInfo на и система.ИО.Directoryinfoкласс объекты, которые содержат эту информацию, например:
Get-Item c:\folder | Format-List
Или вы можете получить доступ к свойству напрямую, вот так:
Get-Item c:\folder | Foreach {$_.LastWriteTime}
Для начала фильтр папки & файлы по последней записи можно сделать так:
Get-ChildItem c:\folder | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)}
Чтобы получить измененную дату на один файл попробовать:
$lastModifiedDate = (Get-Item "C:\foo.tmp").LastWriteTime
Сравнить с другим:
$dateA= $lastModifiedDate
$dateB= (Get-Item "C:\other.tmp").LastWriteTime
if ($dateA -ge $dateB) {
Write-Host("C:\foo.tmp was modified at the same time or after C:\other.tmp")
} else {
Write-Host("C:\foo.tmp was modified before C:\other.tmp")
}
Здесь's что работал для меня:
$a = Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}
if ($a = (Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)}
#Im using the -gt switch instead of -ge
{}
Else
{
'STORE XXX HAS NOT RECEIVED ANY ORDERS IN THE PAST 7 DAYS'
}
$b = Get-ChildItem \\COMP NAME\Folder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}
if ($b = (Get-ChildItem \\COMP NAME\TFolder\*.* | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-1)))}
{}
Else
{
'STORE XXX DID NOT RUN ITS BACKUP LAST NIGHT'
}
код PowerShell, чтобы найти все библиотеки документов файлов, измененных за последние 2 дня.
$web = Get-SPWeb -Identity http://siteName:9090/
$list = $web.GetList("http://siteName:9090/Style Library/")
$folderquery = New-Object Microsoft.SharePoint.SPQuery
$foldercamlQuery =
'<Where> <Eq>
<FieldRef Name="ContentType" /> <Value Type="text">Folder</Value>
</Eq> </Where>'
$folderquery.Query = $foldercamlQuery
$folders = $list.GetItems($folderquery)
foreach($folderItem in $folders)
{
$folder = $folderItem.Folder
if($folder.ItemCount -gt 0){
Write-Host " find Item count " $folder.ItemCount
$oldest = $null
$files = $folder.Files
$date = (Get-Date).AddDays(-2).ToString(“MM/dd/yyyy”)
foreach ($file in $files){
if($file.Item["Modified"]-Ge $date)
{
Write-Host "Last 2 days modified folder name:" $folder " File Name: " $file.Item["Name"] " Date of midified: " $file.Item["Modified"]
}
}
}
else
{
Write-Warning "$folder['Name'] is empty"
}
}