none
PowerShell выгрузка сетевых папок из AD RRS feed

  • Вопрос

  • Приветствую!

    Столкнулся с задачей которую пока не могу решить из-за сравнительно малого общения с PowerShell.

    Есть контроллер домена, необходимо просканировать все ПК в домене и выгрузить через PowerShell список всех расшаренных папок и, на каких ПК, в этом домене.

    Прошу помочь знающих людей, заранее благодарю.

    27 февраля 2014 г. 7:07

Ответы

  • $good = @()
    $bad = @()
    
    Get-ADComputer -Filter {DNSHostName -like '*' -and Enabled -eq $True} | Foreach {
    	$name = $_.DNSHostName
    	try {
    		$shares = Get-WmiObject Win32_Share -ComputerName $name -ErrorAction Stop
    		$good += $shares | select Name,Path,Description,@{n="ComputerName";e={$name}}
    	}
    	catch {
    		$Bad += New-Object PsObject -Property @{
    			"Name" = $Name
    			"Exception" = "$_"
    		}
    	}
    }


    • Изменено KazunEditor 27 февраля 2014 г. 7:27
    • Предложено в качестве ответа Vector BCOModerator 27 февраля 2014 г. 10:00
    • Помечено в качестве ответа Anton Pozhidaev 27 июня 2014 г. 11:28
    27 февраля 2014 г. 7:26
    Отвечающий
  • Если DC Windows Server 2003 или Windows Server 2008 - то для работы командлетов требуется установить AD Web Service - http://www.microsoft.com/en-us/download/details.aspx?id=2852

    Или изменить скрипт:

    $good = @()
    $bad = @()
    
    $computers = ([adsisearcher]"(&(dnshostname=*)(!userAccountControl:1.2.840.113556.1.4.803:=2))").FindAll()
    foreach ($computer in $computers)
    {
    	$name = $computer.Properties.dnshostname[0]
    	try {
    		$shares = Get-WmiObject Win32_Share -ComputerName $name -ErrorAction Stop
    		$good += $shares | select Name,Path,Description,@{n="ComputerName";e={$name}}
    	}
    	catch {
    		$Bad += New-Object PsObject -Property @{
    			"Name" = $Name
    			"Exception" = "$_"
    		}
    	}
    }


    • Изменено KazunEditor 27 февраля 2014 г. 11:20
    • Помечено в качестве ответа Anton Pozhidaev 27 июня 2014 г. 11:28
    27 февраля 2014 г. 11:17
    Отвечающий
  • Необходимо было раздать политиками включение служб WMI и все заработало.
    • Помечено в качестве ответа Anton Pozhidaev 27 июня 2014 г. 11:28
    27 июня 2014 г. 11:28

Все ответы

  • $good = @()
    $bad = @()
    
    Get-ADComputer -Filter {DNSHostName -like '*' -and Enabled -eq $True} | Foreach {
    	$name = $_.DNSHostName
    	try {
    		$shares = Get-WmiObject Win32_Share -ComputerName $name -ErrorAction Stop
    		$good += $shares | select Name,Path,Description,@{n="ComputerName";e={$name}}
    	}
    	catch {
    		$Bad += New-Object PsObject -Property @{
    			"Name" = $Name
    			"Exception" = "$_"
    		}
    	}
    }


    • Изменено KazunEditor 27 февраля 2014 г. 7:27
    • Предложено в качестве ответа Vector BCOModerator 27 февраля 2014 г. 10:00
    • Помечено в качестве ответа Anton Pozhidaev 27 июня 2014 г. 11:28
    27 февраля 2014 г. 7:26
    Отвечающий
  • Вот такую ошибку выдает.

    При этом AD в PowerShell импортирована и другие выборки через Get-ADComputer делаются.

    27 февраля 2014 г. 9:45
  • вы операцию делаете на контролере домена?
    27 февраля 2014 г. 9:59
    Модератор
  • На нем, родимом.

    И да, служба ADWS запущена.
    27 февраля 2014 г. 11:08
  • Если DC Windows Server 2003 или Windows Server 2008 - то для работы командлетов требуется установить AD Web Service - http://www.microsoft.com/en-us/download/details.aspx?id=2852

    Или изменить скрипт:

    $good = @()
    $bad = @()
    
    $computers = ([adsisearcher]"(&(dnshostname=*)(!userAccountControl:1.2.840.113556.1.4.803:=2))").FindAll()
    foreach ($computer in $computers)
    {
    	$name = $computer.Properties.dnshostname[0]
    	try {
    		$shares = Get-WmiObject Win32_Share -ComputerName $name -ErrorAction Stop
    		$good += $shares | select Name,Path,Description,@{n="ComputerName";e={$name}}
    	}
    	catch {
    		$Bad += New-Object PsObject -Property @{
    			"Name" = $Name
    			"Exception" = "$_"
    		}
    	}
    }


    • Изменено KazunEditor 27 февраля 2014 г. 11:20
    • Помечено в качестве ответа Anton Pozhidaev 27 июня 2014 г. 11:28
    27 февраля 2014 г. 11:17
    Отвечающий
  • Контроллер домена благополучно ребутнулся =)
    В отчетах - невозможность достучаться до компьютеров в домене(наверное те которые выключены были), после чего отвалился svhost, сбойнула еще какая-то служба и контроллер домена пошел в ребут.
    28 февраля 2014 г. 8:47
  • Необходимо было раздать политиками включение служб WMI и все заработало.
    • Помечено в качестве ответа Anton Pozhidaev 27 июня 2014 г. 11:28
    27 июня 2014 г. 11:28