Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Powershell Remote Deinstallation

Frage Entwicklung Batch & Shell

Mitglied: Bugger

Bugger (Level 1) - Jetzt verbinden

20.11.2014, aktualisiert 08:26 Uhr, 1061 Aufrufe, 2 Kommentare

Hallo,

mich würde interessieren ob es möglich ist, Remote Software zu deinstallieren.
Folgenden Code habe ich:

01.
Function Get-Software {  
02.
    [Cmdletbinding()]  
03.
    Param(  
04.
        [Parameter(Position=0,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True,ValueFromRemainingArguments=$False)]  
05.
        [ValidateNotNull()]  
06.
        [String[]]$Computername = @(''),  
07.
        [Switch]$IncludeEmptyDisplaynames  
08.
    )  
09.
   
10.
     Begin {  
11.
   
12.
         # sub function to convert the registry values to an Object  
13.
         Function Convert-RegistryUninstallSubKeyToObject {  
14.
            param (  
15.
                [String]$Computername,  
16.
                [microsoft.win32.registrykey]$SubKey  
17.
            )  
18.
  
19.
            # create New Object with empty Properties  
20.
            $obj = New-Object PSObject | Select-Object ComputerName,DisplayName,DisplayVersion,Publisher,InstallLocation,InstallDate,UninstallString 
21.
   
22.
            $obj.ComputerName = $Computername  
23.
            $obj.DisplayName = $SubKey.GetValue('DisplayName')  
24.
            $obj.DisplayVersion = $SubKey.GetValue('DisplayVersion')  
25.
            $obj.Publisher = $SubKey.GetValue('Publisher')  
26.
            $obj.InstallLocation = $SubKey.GetValue('InstallLocation')  
27.
            $obj.InstallDate = $SubKey.GetValue('InstallDate')  
28.
            $obj.UninstallString = $SubKey.GetValue('UninstallString')  
29.
              
30.
            # return Object  
31.
            $obj  
32.
        }  
33.
  
34.
    } # end Begin block         
35.
  
36.
    Process {      
37.
        foreach($pc in $Computername){  
38.
   
39.
            $UninstallPathes = @("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall","SOFTWARE\\Wow6432node\\Microsoft\\Windows\\CurrentVersion\\Uninstall")  
40.
              
41.
            ForEach($UninstallKey in $UninstallPathes) {  
42.
                #Create an instance of the Registry Object and open the HKLM base key  
43.
                Try {  
44.
                    $reg=[microsoft.win32.registrykey]::OpenRemoteBaseKey('LocalMachine',$pc)  
45.
                } Catch {  
46.
                    $_  
47.
                    Continue  
48.
                }  
49.
   
50.
                #Drill down into the Uninstall key using the OpenSubKey Method  
51.
                $regkey=$reg.OpenSubKey($UninstallKey)  
52.
  
53.
                If(-not $regkey) {  
54.
                    Write-Error "Subkey not found in registry: HKLM:\\$UninstallKey `non Machine: $pc"  
55.
                }  
56.
  
57.
                #Retrieve an array of string that contain all the subkey names  
58.
                $subkeys=$regkey.GetSubKeyNames()  
59.
      
60.
                #Open each Subkey and use GetValue Method to return the required values for each  
61.
                foreach($key in $subkeys){  
62.
   
63.
                    $thisKey=$UninstallKey+"\\"+$key  
64.
   
65.
                    $thisSubKey=$reg.OpenSubKey($thisKey)  
66.
   
67.
                    # prevent Objects with empty DisplayName  
68.
                    if (-not $thisSubKey.getValue("DisplayName") -and (-not $IncludeEmptyDisplaynames)) { continue }  
69.
   
70.
                    # convert registry values to an Object  
71.
                    Convert-RegistryUninstallSubKeyToObject -Computername $PC -SubKey $thisSubKey  
72.
   
73.
                }  # End ForEach $key  
74.
   
75.
                $reg.Close()  
76.
                   
77.
            } # End ForEach $UninstallKey  
78.
        } # End ForEach $pc  
79.
    } # end Process block  
80.
  
81.
    End {  
82.
      
83.
    } # end End block  
84.
   
85.
} #end Function 
86.
 
87.
Get-Software -Computername $objListbox.SelectedItems | sort Computername,DisplayName | ogv -Passthru |
Was ich mir vorstellen könnte wäre, dass man den UninstallString aus der Function mit einem Create Befehl auf dem Remote PC ausführt. Mit Hilfe vom Passthru aus ogv.
win32_product ist ja böse wie ich gelesen habe.^^
Mitglied: Bugger
25.11.2014 um 11:28 Uhr
Keiner eine Idee?
Bitte warten ..
Mitglied: Bugger
12.02.2015 um 12:19 Uhr
Die Frage ist übrigens noch aktuell
Bitte warten ..
Ähnliche Inhalte
Windows Server
Fehler bei Remote PowerShell mit einem Domänen-Benutzer (4)

Frage von xcabur zum Thema Windows Server ...

Batch & Shell
gelöst Dienst Stoppen und deaktivieren per Powershell und WMI auf remote Server (1)

Frage von pixel0815 zum Thema Batch & Shell ...

Batch & Shell
HTML in Batch und Powershell (12)

Frage von michi-ffm zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Verschlüsselung & Zertifikate
gelöst Festplattenverschlüsselung im Ausland (13)

Frage von Nicolaas zum Thema Verschlüsselung & Zertifikate ...

Festplatten, SSD, Raid
gelöst Fehlerhafte Blöcke im RAID 10 (12)

Frage von Kojak-LE zum Thema Festplatten, SSD, Raid ...

Batch & Shell
HTML in Batch und Powershell (12)

Frage von michi-ffm zum Thema Batch & Shell ...

Windows Server
gelöst Microsoft-Lizenz CALs und passendes Server-Betriebssystem (12)

Frage von planetIT2016 zum Thema Windows Server ...