원격 파일서버들의 모든 공유 폴더들의 permission 정보 읽는 방법
서버 이름으로 worksheet 만들고, 각 폴더의 공유권한 정보를 엑셀에 출력
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true
$workbook = $excel.Workbooks.add()
#$servers = 'File_Server-1' #서버 한 대
#$servers = Get-Content .\Servers.txt # Servers.txt 파일에 저장된 서버들 목록 갖고오
$servers = 'File_Server-1','File_Server-2','File_Server-3'
ForEach($com in $servers){
Write-host $com
$r = Invoke-Command -ComputerName $com -ScriptBlock{
$arr = @()
Get-WmiObject -Class Win32_LogicalShareSecuritySetting | Select-Object -ExpandProperty Name | %{
Get-SmbShareAccess -Name $_ | %{
$pco = [PSCustomObject]@{
FolderName = $_.Name
AccountName = $_.AccountName
AccessRight = if($_.AccessRight -eq 0){"Full Control"}
elseif($_.AccessRight -eq 1){"Change"}
elseif($_.AccessRight -eq 2){"Read"}
}
$arr += $pco
}
}
$arr
}
$sheet = $workbook.worksheets.Add()
$sheet.Name = $com
$sheet.Cells.Item(1,1) = 'Folder Name'
$sheet.Cells.Item(1,1).Interior.ColorIndex = 44
$sheet.Cells.Item(1,2) = 'Account Name'
$sheet.Cells.Item(1,2).Interior.ColorIndex = 44
$sheet.Cells.Item(1,3) = 'Access Right'
$sheet.Cells.Item(1,3).Interior.ColorIndex = 44
$nLineNo = 2
$r | %{
$sheet.Cells.Item($nLineNo,1) = $_.FolderName
$sheet.Cells.Item($nLineNo,2) = $_.AccountName
$sheet.Cells.Item($nLineNo,3) = $_.AccessRight
$nLineNo++
}
}
Write-Host "Done"
'파워쉘(Powershell) > 파워쉘 리모팅(Remoting-원격컴퓨터 제어)' 카테고리의 다른 글
파워쉘 (Invoke-Command) : 원격 컴퓨터에서 실행 (0) | 2024.04.18 |
---|---|
Enter-PSSession (파워쉘) (0) | 2024.04.18 |
파워쉘 리모팅(Powershell Remoting) -원격 컴퓨터 제어 (0) | 2024.04.18 |