ЦЕЛЬ: получить файл CSV со следующей информацией:
- Имя компьютера
- Поделиться Имя
- Поделиться путем
- Поделиться Описание
для всех неадминистративных (тип 0) общих ресурсов SMB на всех серверах из списка (текстовый файл).
НАЧАЛЬНЫЙ КОД:
param (
[Parameter(Mandatory=$true,Position=0)]
[ValidateNotNullOrEmpty()]
[String]
$path
)
$computers = Get-Content $path
$shareInfo = @()
ForEach ($computer in $computers) {
$shares = gwmi -Computer $computer -Class Win32_Share -filter "Type = 0" | Select Name,Path,Description
$shares | % {
$ShareName = $_.Name
$Props = [ordered]@{
Computer = $computer
ShareName = $_.Name
Path = $shares.Path
Description = $shares.Description
}
}
$ShareInfo += New-Object -TypeName PSObject -Property $Props
}
$shareInfo | Export-CSV -Path .\shares.csv -NoType
ВЫВОД КОДА:
"Computer","ShareName","Path","Description"
"SERVER1","SHARE1","System.Object[]","System.Object[]"
"SERVER2","SHARE12","System.Object[]","System.Object[]"
"SERVER3","SHARE3","System.Object[]","System.Object[]"
ПРОБЛЕМА:
Хотя код обеспечивает вывод для каждого сервера, он, похоже, не включает все общие ресурсы с серверов. Кроме того, поля «Путь» и «Описание» не содержат достоверной информации.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
Код:
$shares = gwmi -Computer $computer -Class Win32_Share -filter "Type = 0" | Select Name,Path,Description
Предоставляет хорошую информацию, как показано ниже:
Name Path Description
---- ---- -----------
print$ C:\WINDOWS\system32\spool\drivers Printer Drivers
Share D:\Share
SHARE2 D:\SHARE2
Software C:\Software The Software