New-Object не может содержать тире (-), но "необходимо" - PullRequest
1 голос
/ 18 января 2012

Я создаю новый объект для экспорта значений в CSV:

New-Object -TypeName PSObject -Property @{
            host_name = ($server.name).ToLower()
            address = $IPAddress
            host_is_collector = "no"
            host-preset = "windows-server"
        } | Select-Object host_name,address,host-preset | Export-Csv -Path $nConf_import_host_file

Проблема состоит в том, что одна из строк содержит тире (предварительная установка хоста).Я бы, конечно, просто изменил его на подчеркивание, но моему CSV нужно, чтобы это значение было чертой.Я мог бы также сделать -relace для всего CSV после того, как он был создан, но это кажется грязным.Есть ли способ, которым я могу использовать тире здесь?

Моя ошибка сообщение:

Missing '=' operator after key in hash literal.
At Z:\Scripts\Testscripts\ScanServers_and_check_nagiosV7.ps1:336 char:16
+                 host-preset <<<<  = "windows-server"
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : MissingEqualsInHashLiteral

1 Ответ

7 голосов
/ 18 января 2012

Вам просто нужно трактовать имя свойства host-preset как строку, заключая его в кавычки :

New-Object -TypeName PSObject -Property @{ "host-preset" = "windows-server" }
...