用于将.reg文件导入远程计算机挂起的PowerShell脚本

时间:2018-05-30 20:15:16

标签: powershell foreach registry invoke-command

我使用以下脚本将.reg文件导入远程计算机。我需要做的是以下几点:

  1. 如果正在运行,请连接到远程计算机并终止正在运行的进程。
  2. 将.reg密钥文件从网络共享位置复制到远程计算机。
  3. 将复制的.reg密钥导入远程计算机的注册表。'
  4. 从远程计算机中删除复制的.reg密钥文件。
  5. 开始在开始时被杀死的过程。
  6. 现在我对PowerShell脚本编写起来相对较新,而且我所拥有的脚本是从我在搜索互联网和我的PowerShell Cookbook中找到的脚本中蚕食的。

    运行脚本时会发生什么,它会连接到远程计算机并终止进程,但脚本会挂起,并且不会执行步骤2-5。它也没有抛出任何错误。我错过了什么或做错了什么?

    提前致谢!

    #Variables
    $Computers = Get-Content C:\computer.txt
    $LocalRegFileName = "regfile.reg"
    $HostedRegFile = "\\NETWORK-SHARE\Folder\Folder\regfile.reg"
    $ProcessName = "Process"
    $FilePath = "C:\Program Files (x86)\Folder\$ProcessName.exe"
    
    foreach ($Computer in $Computers) {
        Invoke-Command -ComputerName $Computer {
            Get-Process -Name $ProcessName | Stop-Process -Force
        }
    
        $NewFile = "\\$Computer\C'$\TEMP\$LocalRegFileName"
        New-Item -ErrorAction SilentlyContinue -ItemType directory -Path \\$Computer\C$\TEMP
        Copy-Item $HostedRegFile -Destination $NewFile
        Invoke-Command -ComputerName $Computer -ScriptBlock {
            Start-Process -FilePath "C:\Windows\regedit.exe" -ArgumentList "/s C:\TEMP\$LocalRegFileName"
        }
    
        Invoke-Command -ComputerName $Computer -ScriptBlock {
            Remove-Item "C:\TEMP\$LocalRegFileName"
        }
    
        Invoke-Command -ComputerName $Computer -ScriptBlock {
            Start-Process -FilePath "$FilePath\$ProcessName.exe"
        }
    }    
    

0 个答案:

没有答案