так ведет себя PowerShell - он всегда будет пытаться преобразовать объект, если он конвертируется в целевой тип (в данном случае - строка). PowerShell всегда преобразует ноль (отсутствие значения) в String.Empty при приведении к строковому объекту.
Взгляните на книгу Брюса Пайетта "Windows PowerShell в действии", стр. 142. Брюс - один из архитекторов PowerShell.
Это одна из тех задокументированных маленьких ошибок языка сценариев, и мы обязательно должны об этом знать.