O script powershell de monitoramento de tamanho de arquivo é seguro para ser executado em um banco de dados Access 2003 multiusuário?

2

Eu tento monitorar o tamanho de um Arquivo de banco de dados do MS Access que corrompe quando o tamanho atinge 2 GB .

Eu encontrei o seguinte powershell script que monitora o tamanho de um arquivo e, em seguida, executa um comando.

O script usa (Get-ChildItem $FilePath).length para determinar o tamanho do arquivo que está sendo monitorado. Enquanto eu gostaria de supor que fazer isso é apenas uma operação de leitura, o fato de que ele estará monitorando o tamanho de um banco de dados MS Access multiusuário realmente não deixa espaço para assumir apenas uma operação de leitura, então eu pensei que perguntaria a alguns usuários experientes do Powershell se esse fosse o caso.

Estou usando o Powershell 2, pois são shells $ Host.Version saída :

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1

E, por conveniência, aqui está o texto completo do script do powershell:

function Test-FileSizeUntil
{

  <#

.Synopsis
    Checks the file size of a given file until it reaches the specified size and creates an action
.Description
    Controls the size of a given file on user-specified intervals; and creates an action when the file size is equal or greater than the given size
.Parameter FilePath
    Path of the file that will be monitored
.Parameter Size
    File size is monitored against this value. When file size is equal or greater than this value, user-specified action is triggered
.Parameter ScriptString
    Specifies the action commands to run. Enclose the commands in double quotes ( " " ) to create a script string
.Parameter Interval
    The wait interval between the executions of the function. The value of this parameter is  in second and default value is 30 seconds
.Parameter AsJob
    Creates a background job for the cmdlet and echoes the jobID
.Example
Test-FileSizeUntil -FilePath C:\inetpub\logs\LogFiles\W3SVC1\u_ex091112.log -Size 500KB -ScriptString "c:\dosomething.exe"
.Example
Test-FileSizeUntil c:\test.txt 10MB -ScriptString "Start-Job -ScriptBlock { do something }"
You can omit -FilePath and -Size parameters and call the function as you can see above
.Example
Test-FileSizeUntil c:\test.txt -Size 1GB -Interval 3600 -AsJob $true -ScriptString "do something"
Wait interval between executions is one hour and function is called as a background job
.Link
    http://blogs.msdn.com/candede
.Notes
    Author: Can Dedeoglu
#>

  param
  (
    [Parameter(Mandatory = $true,Position = 0)]
    [string[]]$FilePath
    ,
    [Parameter(Mandatory = $true,Position = 1)]
    [int]$Size
    ,
    [Parameter(Mandatory = $true)]
    [string]$ScriptString
    ,
    [Parameter(Mandatory = $false)]
    [int]$Interval = 30
    ,
    [Parameter(Mandatory = $false)]
    [bool]$AsJob = $false
  )

  function control
  {
    function subControl
    {
      while ((Get-ChildItem $FilePath).length -le $Size)
      {
        Start-Sleep -Seconds $Interval
        subControl
      }
    } # end function subControl

    subControl

    Invoke-Command -ScriptBlock ([scriptblock]::Create($ScriptString))

  } # end function control

  if (!$AsJob)
  {
    if ((Test-Path $FilePath))
    {
      control
    } #end if Test-Path

    else { "File does not exist!" }

  } # end if AsJob

  else
  {
    Start-Job -ScriptBlock ([scriptblock]::Create(". c:\ps\library\Test-FileSizeUntil.ps1; Test-FileSizeUntil -FilePath $FilePath -Size $Size -ScriptString '"$ScriptString'" -Interval $Interval"))
  }

} # end function Test-FileSize
    
por leeand00 15.08.2012 / 21:01

1 resposta

2

Você sabe, eu não tenho a resposta, mas vou lhe dizer como você pode responder isso sozinho. Execute o script em um arquivo conhecido em sua própria máquina. Use o Process Monitor da Sysinternals e veja quais operações são chamadas no arquivo.

Eu faria isso sozinho e responderia sua pergunta diretamente, mas eu teria que brincar com minhas configurações de segurança do PS - o que eu não tenho tempo para fazer porque eu tenho uma reunião em 5 minutos e precisa de café primeiro. Além disso, você aprenderá várias coisas e também construirá um personagem: -)

    
por 15.08.2012 / 21:26