Powershell 停止远程使用文件的进程
我有一个脚本,其中一些文件被删除 详细:在目标上执行“删除目录”操作 \名称1 \子项 详细:在目标上执行“删除目录”操作 \名称1 \子项1 详细:在目标上执行“删除目录”操作 \名称1 \子项2 但其他人会在其他详细消息之后抛出此错误: 无法删除项目d:\temp\name1.db\metadata.sqlitedb:进程 无法访问文件“metadata.sqlitedb”,因为它正由使用 另一个过程 无法删除目录d:\temp\name1.db,因为它不是空的 如何自动终止所使用的进程(无论是哪个进程),并作为上述脚本的一部分再次尝试删除该项 我试图处理这个线程的建议,但我认为我们的服务器不允许使用外部工具,因为我要么没有得到任何输出,要么访问被拒绝……所以我正在寻找一些不需要外部工具的其他选项 基本上是在我的脚本中寻找类似的内容:Powershell 停止远程使用文件的进程,powershell,Powershell,我有一个脚本,其中一些文件被删除 详细:在目标上执行“删除目录”操作 \名称1 \子项 详细:在目标上执行“删除目录”操作 \名称1 \子项1 详细:在目标上执行“删除目录”操作 \名称1 \子项2 但其他人会在其他详细消息之后抛出此错误: 无法删除项目d:\temp\name1.db\metadata.sqlitedb:进程 无法访问文件“metadata.sqlitedb”,因为它正由使用 另一个过程 无法删除目录d:\temp\name1.db,因为它不是空的 如何自动终止所使用的进程(无
$Directory = "d:\temp"
Invoke-Command -Computer $Server -ScriptBlock {
param ($dir, $name)
#Write-Output "dir='$dir', name='$name'"
$f = Get-ChildItem -Path $dir | Where {$_.Name -Match $name} | Select -ExpandProperty FullName
if ($f) {
$f | Foreach {
try
{
Remove-Item $_ -confirm:$false -recurse -Verbose #-WhatIf
}
catch
{
if ($_.Exception.Message -like '*it is being used by another process*')
{ write-host "that process is " $pid + $pname
try{
KILL PROCESS
Remove-Item $_ -confirm:$false -recurse -Verbose #-WhatIf
}
catch
{
$error[0]
}
}
else
{
Write-Host "$($error[0])`r`n" -foregroundcolor magenta -backgroundcolor black
}
}
}
}
else {
Write-Verbose "No file found"
}
} -ArgumentList $Directory, $DB -verbose
如果有一个内置的方法来做这件事,为什么会有人推荐handle.exe?@tessellingheckler damn:/如果我只是想杀死相关的进程……我会这样做吗?Stop Process-path$\ Name“metadata.sqlitedb”-force根据我的研究,从本质上讲,获取正在使用的文件的PID的唯一“真正”方法是使用以下工具。要做到这一点,没有“简单”的方法,除非您愿意深入研究Windows NT NTDLL.DLL API的核心和丑陋之处,以获得“纯”脚本解决方案。不幸的是,您不能对
-Path使用停止进程
,您必须停止sqlite进程。e、 “停止处理sqlite”。您遇到问题的总是sqlite数据库吗?i、 e.您是否有此问题:@Cataster正确。如果有内置的方法,为什么会有人推荐handle.exe?@TessellingEckler damn:/如果我只想杀死关联进程……我会这样做吗?Stop Process-path$\ Name“metadata.sqlitedb”-force根据我的研究,从本质上讲,获取正在使用的文件的PID的唯一“真正”方法是使用以下工具。要做到这一点,没有“简单”的方法,除非您愿意深入研究Windows NT NTDLL.DLL API的核心和丑陋之处,以获得“纯”脚本解决方案。不幸的是,您不能对-Path使用停止进程
,您必须停止sqlite进程。e、 “停止处理sqlite”。您遇到问题的总是sqlite数据库吗?i、 e.您是否有此问题:@Cataster正确。