Формат файла манифеста модуля PowerShell (.psd1) - это, по существу, литерал Hashtable с определенными ключами. Это идеально подходит для файла конфигурации для PowerShell script. В конечном итоге я хочу прочитать файл .psd1, содержащий набор ключей, специфичных для script.
Например (MyScriptConfig.psd1):
@{
FTPHost = "ftp.blah.com"
FTPUserName = "blah"
FTPPassword = "blah"
}
Нет причин, по которым я не могу использовать XML, INI, JSON или что-то еще для этой информации, но я предпочел бы использовать тот же базовый формат данных, что и модуль PowerShell.
Очевидно, что проще всего прочитать текст и передать его в Invoke-Expression
, который вернет Hashtable, но затем он будет вызывать все, что в файле, которое подвержено ошибкам и потенциально опасно.
Я думал, что вспомнил командлет для чтения этих данных с помощью "безопасного" подмножества командлетов PowerShell, но я думал о разделах ConvertFrom-StringData
и DATA
, ни один из которых не позволяет мне читать произвольный файл, содержащий литерал Hashtable.
Есть ли что-то встроенное в PowerShell, которое позволяет мне это делать? Если ничего не встроено, то я, вероятно, поеду по маршруту JSON или Key = Value с ConvertFrom-StringData
.