使用具有不同参数的Powershell脚本

时间:2019-01-31 01:19:04

标签: powershell

我有一个脚本,可以删除早于设定时间的任何内容。我想将此复制到具有不同时间和文件夹的其他删除作业中

我是Powershell的新手,该脚本是在Google的大量帮助下编写的

var check0 = false;
var check1 = false;
function checkFunc(stage) {
  switch(stage){
    case "0":
      rect(10,10,10,10);
      check0 = true;
      break;
    case "1":
      if(check0 === true){
        rect(20,20,20,20);
        check1 = true;
        break;
      }else{
        checkFunc("0")
      }
      break;
  }
}
checkFunc("1");

2 个答案:

答案 0 :(得分:2)

欢迎使用PowerShell,它对您的Web搜索方法大有裨益。但是请记住,这是至关重要的,因此,在进入该空间之前,您需要花一些时间来提高所有基础知识的水平,以避免遇到过多的混乱,沮丧等。

您确实还需要这样做,以了解您的需求,并避免对系统和/或企业造成灾难性问题。当然,永远不要运行您不完全理解的代码,并且总是列出您的目标并一次解决它们,以确保您得到期望的结果。

在YouTube,Microsoft虚拟学院,Microsoft Learn,TechNet虚拟实验室,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*

答案 1 :(得分:0)

我是一个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'