Новое в Powershell. Попытка заменить .dll на удаленном компьютере / сервере через powershell. Мне нужно убить все процессы, запущенные на удаленном компьютере, которые используют библиотеки DLL, которые мне нужно заменить в целевой папке на удаленном компьютере. На одной машине может быть несколько папок с одинаковыми dll-именами и другими процессами, использующими те нецелевые dll, к которым не нужно прикасаться. Как я могу получить полный путь DLL и EXE процессов, запущенных на удаленном компьютере. Это позволит мне сравнить пути целевых и фактических dll-серверов, чтобы определить, нужно ли мне заменить файл dll / exe или нет.
$ deployList arraylist содержит целевые пути и имена файлов всех dll и exe-файлов, подлежащих замене. Например: c: \ xyz \ dev \ ver.dll Я пытался использовать Get-Process, но он не возвращал процесс, запущенный на удаленном компьютере. Работал для процессов только на локальной машине. Затем использовал Get-WmiObject
$processes = Get-WmiObject -Class -Class Win32_Process -ComputerName $TargetWinServer
foreach($deployFile in $deployList){
foreach ($process in $processes) {
# $Executablepath = $process.ExecutablePath #This does not give path of all locked dll paths
$processid = $process.handle'
$ProcessName = $process.name
Необходимо получить путь всех .dll / .exe, используемых этим процессом, что я хочу извлечь в переменную $ process.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
}
} `
PLS игнорировать закрывающие скобки