Powershell 通过终止使用这些dll/exe的进程,替换远程服务器上的.dll/.exe

Powershell 通过终止使用这些dll/exe的进程,替换远程服务器上的.dll/.exe,powershell,dll,process,remote-server,kill,Powershell,Dll,Process,Remote Server,Kill,Powershell新手。正在尝试通过powershell替换远程计算机/服务器上的.dll。我需要终止远程计算机上运行的所有进程,这些进程正在使用我需要在远程计算机上的目标文件夹中替换的DLL。同一台机器上可能有多个同名DLL和其他进程的文件夹,它们使用的是不可触摸的非目标DLL。如何获取远程计算机上运行的进程的DLL和exe的完整路径。这将允许我比较目标和实际服务器dll的路径,以确定是否需要替换dll/exe文件 $deployList arraylist具有要替换的所有DLL和exe的目

Powershell新手。正在尝试通过powershell替换远程计算机/服务器上的.dll。我需要终止远程计算机上运行的所有进程,这些进程正在使用我需要在远程计算机上的目标文件夹中替换的DLL。同一台机器上可能有多个同名DLL和其他进程的文件夹,它们使用的是不可触摸的非目标DLL。如何获取远程计算机上运行的进程的DLL和exe的完整路径。这将允许我比较目标和实际服务器dll的路径,以确定是否需要替换dll/exe文件

$deployList arraylist具有要替换的所有DLL和exe的目标路径和文件名。例如:c:\xyz\dev\ver.dll 我尝试使用Get进程,但它并没有返回在远程计算机上运行的进程。仅在本地计算机上为进程工作。然后使用Get WmiObject

$processs=Get WmiObject-Class-Class Win32\u进程-ComputerName$TargetWinServer

foreach($deployList中的deployFile){
foreach($进程中的进程){
#$Executablepath=$process.Executablepath#这不会给出所有锁定dll路径的路径
$processid=$process.handle'
$ProcessName=$process.name

需要获取此进程正在使用的所有.dll/.exe的路径,我要在变量$processs.path中提取该路径,我可以通过该变量进行迭代。

   'foreach ($destdllPath in $processes.path) {
            if ( $destdllPath -eq $deployFile){
                write-host "Found: process file " $Executablepath " in " $ProcessName "ID:" Processid
                Taskkill /S $TargetServer  /PID $Processid
} #This will kill the process on remote server if the process is using the dll that needs to be repalced on target server
            }
        } `

请忽略结束括号

终止进程可能会使DLL和文件锁定,这会违反您的目标。然后,请建议一项工作来完成我打算做的…我需要在目标服务器上替换应用程序中存在的所有DLL中的一些升级的DLL/.exe。这将确保只有链接到c的模块oncerned DLL在部署过程中关闭。是否有方法在使用DLL时插入或替换它们。如果有人能指导我如何实现上述目标,即使这不是最优雅的方法,我将非常高兴。如何使用powershell获取远程计算机上运行的进程已加载的模块