2017-09-28 5 views

Antwort

0

Es ist möglich, ein Skript auszuführen, das alle Aktien auflistet. Es muss auf Windows Server oder einem Computer ausgeführt werden, auf dem Microsoft RSAT installiert ist.

  1. Installieren Sie RSAT (falls erforderlich).
  2. Führen Sie auf jedem Zielcomputer winrm quickconfig aus, um Remote-WMI-Aufrufe zuzulassen.
  3. Führen Sie das folgende Powershell-Skript aus.

FindAllShares.ps1

#This must be run on a computer that has the ActiveDirectory module installed (eg. Windows Server) 
#The module can be installed using the RSAT suite from Microsoft. 
Import-Module ActiveDirectory 

#To connect to remote computers, the following needs to be run on them: 
#winrm quickconfig 

#Get all the computers on the domain 
$computers = Get-ADComputer -Filter {enabled -eq $true} | select DNSHostName, Name 

$skipComputers = @("COMPUTER1", "COMPUTER2") #This is a list of computers to not check 
$skipShares = @("ADMIN$", "IPC$") 
$allShares = @() 

#Loop through all of the computers and ask each for their shares 
foreach ($computer in $computers | sort Name) 
{ 
    #Write-Host $computer.DNSHostName 

    if ($skipComputers -contains $computer.Name) 
    { 
     #skip these computers 
    } else 
    { 
     #Write-Host $computer.Name 

     #Get the shares on this computer 
     $shares = Invoke-Command -Computer $computer.DNSHostName -ScriptBlock {Get-WmiObject -class Win32_Share} 

     foreach ($share in $shares) 
     { 
      #Write-Host $share.Name 

      if ($skipShares -contains $share.Name) 
      { 
       #skip these shares 
      } else 
      { 
       $sharePath = "\\$($computer.Name)\$($share.Name)" 
       #Write-Host $sharePath 

       $allShares += $sharePath 
      } 
     } 
    } 
} 

#Write-host $($allShares -join ";") 
Write-host $($allShares | Out-String) 
+1

ich ehrlich schätzen Sie Ihre Entdeckung zu teilen. Ich möchte auch darauf hinweisen, dass dieses Skript davon ausgeht, dass Winrm auf jeder Maschine konfiguriert ist. Und manchmal ist das Konfigurieren keine Option. 'Invoke-command' ist das, was erfordert, dass WinRM konfiguriert wird. 'Get-WmiObject' nicht. Da Sie bereits 'Get-WmiObject' verwenden, könnten wir den Parameter' -ComputerName' verwenden, um die Verwendung von 'Invoke-Command' vollständig zu eliminieren. Würde das noch funktionieren? –

+0

Fantastisch, danke Rohin. Die Verwendung von Get-WmiObject ist sehr sinnvoll. Ich glaube, es braucht auch einen Service und eine Firewall-Einstellung, um zu arbeiten. Ich poste, wenn ich das zur Arbeit bekomme :) – Fidel

+0

Es verwendet das RPC-Protokoll, das ein wesentlicher Dienst ist und immer eingeschaltet ist. Die Firewall benötigt möglicherweise TCP-Port 135. In einem Standard-Unternehmensnetzwerk ist sie für alle internen Subnetze offen. DMZs vielleicht eine andere Geschichte. –

Verwandte Themen