Как я могу создать или запросить несколько акций SMB через powershell или в C # - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь создать тысячи общих файловых ресурсов, если они еще не существуют.

Я должен это сделать, потому что я работаю на устаревшей системе.

Делать это синхронно, в одном потоке, занимает безумно много времени.Я работаю над тем, чтобы сделать его многопоточным, но было бы здорово, если бы я мог:

  • создать
  • проверить наличие

несколько общих ресурсов SMB с помощью 1 C # API / powershell.Я уже давно пытаюсь найти ответ в Google и не нашла полезных результатов.(

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Еще есть информация, которую нужно документировать о серверах и SHARENAME, которые вы создаете.Это одно и то же SHARENAME на всех компьютерах?Это одно COMPUTERNAME со многими SHARENAME?Этот код может дать вам некоторые идеи.Это работает в Windows 7 с текущей версией PowerShell 5.1.

#   Find CIM classes about shares.
#
#   Get-CimClass | Where-Object { $_.CimClassName -match '.*share.*' }
#
#   Find out which shares are already available.
#
#   Get-CimInstance -ClassName Win32_Share
#
#   Find class methods
#
#   Get-CimClass | Where-Object { $_.CimClassName -match '.*share.*' } | ForEach-Object { $_.CimClassMethods }
#
#   Find the arguments of a method.
#
#   (Get-CimClass -ClassName Win32_Share).CimClassMethods['Create'].Parameters

$Arguments = @{
    Path = 'C:\Users\Public'
    Name = 'TESTSHARE_TTTTTTTTTT';
    Type = [uint32]0;
}

Invoke-CimMethod -ClassName Win32_Share -MethodName Create -Arguments $Arguments
0 голосов
/ 09 октября 2018

Для использования командлетов CIM требуется PS версии 3.0 или выше, поэтому для получения общего ресурса win32_share является лучшим кандидатом и для создания использования net share.Вы можете создать скрипт для локального запуска и обернуть его в Invoke-Command, -ComputerName принимает массив компьютеров, и он будет обрабатывать пакеты и потоки.

Invoke-Command -ComputerName $Servers -ScriptBlock { #your command }

Или

Invoke-Command -ComputerName $Servers -FilePath <your script path>

См. Также параметр -ThrottleLimit для дозирования.

Get-Help Invoke-Command -Full

...