Tajemnica plików vbs

U jednego z klientów trafilem na dziwny przypadek: Windows Vista widzi pliki *.vbs w serwerowym folderze SYSVOL a Windows XP nie. Brzmi tajemniczo, ale w praktyce tak to wlasnie bylo. Wiadomo, ze Windows Explorer lubi wyswietlac przeklamana rzeczywistosc ,ale z wiersza polecen wygladalo to dokladnie tak samo. Wszystkie pliki sa, a *.vbs nie ma.

Pierwsza mysla bylo, ze moze to nie ten sam SYSVOL. W koncu folder ten replikuje sie i a nuz te dwie stacje robocze widza udzial z róznych serwerów? Otworzylismy wiec po kolei ten udzial na kazdym z kontrolerów domeny i faktycznie. Na jednym jest a na innych – nie. Czyli problem z bardzo tajemniczego stal sie zupelnie zwyczajny. Plik sie nie replikuje. Otworzylismy obok siebie okienka z poszczególnych serwerów i spróbowalismy utworzyc testowy plik tekstowy. Chwila i jest we wszystkich. Czyli replikacja dziala. To samo z plikiem vbs i... tez dziala! A jeden plik nie chce. I w tym momencie przypomniala mi sie notka o plikach tymczasowych. Powershell, chwila prawdy i jest! Plik mial taki atrybut. Teraz pojawila sie kolejna nie mniej ciekawa zagadka. Dlaczego taki atrybut ten wlasnie plik ma...? Okazalo sie, ze plik przyszedl poczta elektroniczna. Spróbowalismy powtórzyc caly cykl operacji, zeby wyizolowac problem. I po niedlugich bojach sprawa byla wzglednie jasna: Operacja "Save As... " dla zalacznika w Outlook 2007 zapisywala plik w zupelnie normalny sposób, ale równoczesnie otrzymywal on atrybut FILE_ATTRIBUTE_TEMPORARY.

Wniosek? Nie nalezy replikowac plików otrzymanych przez e-mail. Tak na wszelki wypadek. Bo szybkie testy pokazaly, ze Outlook wcale nie zawsze tak oznacza zapisywany plik... zdziwniej i zdziwniej...

A tak na koniec, dla przypomnienia, atrybuty plików wyswietla sie tak:

 Get-ChildItem | Format-Table Name, Attributes

Oczywiscie w PowerShell, bo standardowe polecenia systemu nie pokazuja najwazniejszej w tym przypadku informacji.

Autor: Grzegorz Tworek [MVP]