如何使脚本仅在另一个脚本正在运行时运行

时间:2019-07-02 11:34:29

标签: powershell

我需要您的帮助来解决Powershell中的练习。 我必须编写一个仅在另一个脚本正在运行时才能运行的脚本。 例如,我必须运行一个脚本,该脚本删除早于1天的文件,而脚本会重新启动进程。

我尝试使用作业使脚本并行运行,但没有成功。

--The script to delete files
Get-ChildItem -Path "a path" -include *.txt -Recurse | Where-Object {$_.LastWriteTime -lt $DateToDelete} | Remove-Item -Force

--The script to restart a process
Get-Process notepad | Stop-Process | Start-Process

1 个答案:

答案 0 :(得分:0)

我认为您的问题出在第二个脚本上,您无法重启类似的进程。

如果您在控制台中尝试了此行public Location GetLocation(long departmentId, long locationId) { UserDepartmentRole departmentRoleAlias = null; FavouriteLocation favouriteAlias = null; var departmentUserSubQuery = QueryOver.Of<User>() .JoinAlias(user => user.DepartmentRoles, () => departmentRoleAlias) .Where(() => departmentRoleAlias.Department.Id == departmentId) .Where(() => departmentRoleAlias.IsActive) .Select(user => user.Id); var location = Session.QueryOver<Location>() .JoinAlias(l => l.Favourites, () => favouriteAlias, JoinType.LeftOuterJoin) .WithSubQuery.WhereProperty(() => favouriteAlias.User.Id) .In(departmentUserSubQuery) .Where(l => l.Id == locationId) } ,则会提示您向要启动的进程请求Get-Process notepad | Stop-Process | Start-Process,这是因为FilePath不会向管道返回任何结果然后Stop-Process没有从管道接收任何信息。

请点击此处查看how to restart process using PowerShell

看看这个MS module Restart-Process

使用以下代码将脚本作为作业运行:

Start-Process