Использование сценария powershell с разными параметрами - PullRequest
0 голосов
/ 31 января 2019

У меня есть скрипт, который удаляет все, что старше установленного времени.Я хочу повторить это для других заданий на удаление с разным временем и разными папками

Я новичок в Powershell, этот скрипт был написан с большой помощью Google

$Minutes=[DateTime]::Now.AddMinutes(-5)
$Timestamp = Get-Date -Format "yyyy-MM-ddTHH-mm-ss"
$Log = "C:\test\logs\_" + $Timestamp + ".log"

Start-Transcript -path $Log -append -Force -NoClobber 
try {

function Write-Log($string)
{    
    $outStr = "" + $Timestamp +" "+$string

    Write-Output $outStr 

   }

  Write-Log "------------ Start of Log  ------------"
  #Write-Log ""

  # get all file objects to use in erasing
  $files=Get-ChildItem -path 'c:\test\*' -Include *.* -Recurse |
  Where-Object{ $_.LastWriteTime -lt $Minutes}

# Remove the file and its folder.
$files |
    ForEach-Object{
        Write-Log " Deleting File --> $_."; Remove-Item $_.Fullname  
    }

# output statistics
Write-Output "**********************"
Write-Output "Number of old files deleted: $($files.Count)"
Write-Log "------------- End of Log -------------"
} 
catch {
Write-Error -Message "Something bad happened!" -ErrorAction Stop
}

Stop-Transcript

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Я тоже новичок в Powershell.Я попытался изменить ваш скрипт и добавил функцию с параметрами, чтобы вы могли изменять время и папку при каждом вызове функции. Не проверено .Вот моя версия:

function Write-Log($string)
{
    $outStr = "" + $Timestamp +" "+$string

    Write-Output $outStr

   }

Function Start-Deleting
{

  Param
  (
    $JobTime,

    $JobFolder
  )

  $Minutes=[DateTime]::Now.AddMinutes($JobTime)
  $Timestamp = Get-Date -Format "yyyy-MM-ddTHH-mm-ss"
  $Log = "C:\test\logs\_" + $Timestamp + ".log"

  Start-Transcript -path $Log -append -Force -NoClobber
  try {

    Write-Log "------------ Start of Log  ------------"
    #Write-Log ""

    # get all file objects to use in erasing
    $files=Get-ChildItem -path $JobFolder -Include *.* -Recurse |
    Where-Object{ $_.LastWriteTime -lt $Minutes}

  # Remove the file and its folder.
  $files |
      ForEach-Object{
          Write-Log " Deleting File --> $_."; Remove-Item $_.Fullname
      }

  # output statistics
  Write-Output "**********************"
  Write-Output "Number of old files deleted: $($files.Count)"
  Write-Log "------------- End of Log -------------"
  }
  catch {
  Write-Error -Message "Something bad happened!" -ErrorAction Stop
  }

  Stop-Transcript

}

Start-Deleting -JobTime -5 -JobFolder 'C:\pathToFolder'
0 голосов
/ 31 января 2019

Добро пожаловать в PowerShell и полезен вам для поиска в Интернете.И все же помните, что для того, чтобы быть новичком в этом, жизненно важно, чтобы вы погрузились во все основные, прежде чем погрузиться в это пространство, чтобы избежать как можно большего количества неоправданной путаницы, разочарования и т. Д., С которыми вы столкнетесь.

Вы действительно должны сделать это также, чтобы понять, что вам нужно, и чтобы избежать / вызвать катастрофические проблемы в вашей системе и / или на вашем предприятии.Конечно, никогда не запускайте код, который вы не полностью понимаете, и всегда перечисляйте свои цели и решайте их по одному, чтобы убедиться, что вы получаете ожидаемые результаты.

Live на YouTube, MicrosoftВиртуальная академия, Microsoft Learn, TechNet Virtual Labs, MS Channel9, используя все видео, которые вы можете использовать;затем нажмите файлы документации / помощи и все бесплатные электронные книги по всему Интернету.

Что касается ...

Я хочу повторить это для других заданий на удаление с другимивремена и разные папки

… вот почему существуют функции и параметры.

Function Start-DeleteJob
{
    [CmdletBinding()]
    [Alias('sdj')]

    Param
    (
        $JobTime,
        $JobFolder
    )

    # Code begins here

}

Итак, потратьте время на изучение функций PowerShell, функций и параметров расширений.

Get-Help -Name About_*Functions*

Get-Help -Name About_*Parameters*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...