2012-01-18 2 views
1

Я создаю новый объект для экспорта значений в CSV:New-Object не может содержать тире (-), но «нужно»

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 

Проблема состоит в том, что одна из строк содержит дефис (хост -preset). Я бы просто изменил его на символ подчеркивания, но мой CSV требует, чтобы это значение было тире. Я мог бы также сделать -replace на весь 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 

ответ

7

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

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

@Sune Нет проблем :) –