我有一个脚本,可以删除早于设定时间的任何内容。我想将此复制到具有不同时间和文件夹的其他删除作业中
我是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");
答案 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'