Centrum skryptów - Systemy operacyjne

W jaki sposób powiązać nazwy folderów z nazwami użytkowników?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

W jaki sposób powiązać nazwy folderów z nazwami użytkowników?

Cześć, Skrypciarze! W mojej firmie dawno temu włączono przekierowanie folderów Moje dokumenty. Foldery Moje dokumenty ponad 6 tys. użytkowników są przekierowywane do wspólnego udziału. Poprzedni administrator (już u nas nie pracuje) przeniósł cały katalog na nowy serwer. Spowodowało to, że uczestnicy grupy „Administrators” stali się właścicielami wszystkich podkatalogów. Z jakiegoś powodu uprawnienia również zostały zresetowane. Obecnie grupa „Everyone” ma pełny dostęp do folderów Moje dokumenty wszystkich użytkowników. Kiepsko, prawda?

Mam więc następujące pytanie: Czy można napisać skrypt, zmieniający właściciela każdego z folderów w tym udziale (łącznie z podfolderami) na użytkownika, od którego nazwy pochodzi nazwa danego folderu? Potrzebuję czegoś, co przejdzie przez cały katalog /home i ustawi nazwę każdego folderu jako nazwę użytkownika, do którego należy dany folder.

Wdzięczność, jaką sobie zyskacie, jeśli uda się wam udzielić mi pomocy, jest niezmierzona!

-- LS

Cześć, LS! W tym celu możesz użyć narzędzia Subinacl lub Icacls. Zalecane jest drugie z tych narzędzi. Możesz odczytać nazwy folderów przy użyciu języka VBScript lub Windows PowerShell, a nawet pliku wsadowego. Przy użyciu Windows PowerShell nie jest to takie znów trudne.

Oto dokumentacja narzędzia icacls. A oto krótki przykład użycia tego narzędzia w skrypcie Windows PowerShell:

ModifySecurityOfFoldersUsingIcacls.ps1

#ModifySecurityOfFoldersUsingIcacls.ps1

#ed wilson, msft, 11/23/2009

# używa icalcls i Get-ChildItem

# http://bit.ly/7FVysn 


Get-ChildItem -Path C:\share | 

Where-Object { $_.psiscontainer } |

ForEach-Object {

icacls $_.fullname /Grant Users:`(F`)

}
 Do początku strony Do początku strony

Centrum skryptów - Systemy operacyjne