Существует только два хороших: Доктрина и Продвигают . Мы одобряем Доктрину, и она работает хорошо с Symfony. Однако при поиске поддержки БД помимо основных, необходимо будет записать собственный код.
Вы всегда можете добавить любые свойства, которые вам нужны, к настраиваемому объекту powershell, у которого есть то, что вам нужно, а затем выгрузить CVS. Взгляните на эту страницу и посмотрите, подходит ли она вам.
Powershell V2 необходим для следующего.
$cpu = Get-WmiObject -Class Win32_Processor
$mb = Get-WmiObject -Class Win32_BaseBoard
$props = @{
Name = $cpu.Name
Description = $cpu.Description
Manufacturer = $mb.Manufacturer
Product = $mb.Product
}
New-Object PSObject -Property $props | ConvertTo-Csv -NoTypeInformation
How about like this?
echo $cpu $mb | Select-Object Name, Description, Manufacturer, Product | ConvertTo-Csv -NoTypeInformation
Вы можете начать с любого объекта, а затем добавить свойства из другого:
$cpu | Select-Object Name, Description |
add-member noteproperty Manufacturer $mb.Manufacturer -PassThru |
add-member noteproperty Product $mb.Product -PassThru
Для этого есть функция Join-Object
на PoshCode , но он похоронен внутри Join-Collection
и не экспортируется.
function Join-Object {
Param(
[Parameter(Position=0)]
$First
,
[Parameter(Position=1,ValueFromPipeline=$true)]
$Second
)
BEGIN {
[string[]] $p1 = $First | gm -type Properties | select -expand Name
}
Process {
$Output = $First | Select $p1
foreach($p in $Second | gm -type Properties | Where { $p1 -notcontains $_.Name } | select -expand Name) {
Add-Member -in $Output -type NoteProperty -name $p -value $Second."$p"
}
$Output
}
}
После того, как вы это определили, вы можете использовать его так:
Join-Object (Get-WmiObject -Class Win32_Processor) (Get-WmiObject -Class Win32_BaseBoard) |
Select Name, Description, Manufacturer, Product
Или оставьте свои переменные и сделайте это так:
$cpu = Get-WmiObject -Class Win32_Processor
$mb = Get-WmiObject -Class Win32_BaseBoard
Join-Object $cpu $mb | Select Name, Description, Manufacturer, Product
Это что ты ищешь? Несколько дольше, чем я ожидал, потому что и $ cpu, и $ mb имеют свойства Name и Manufacturer. Но основная идея - это настраиваемые объекты посредством хеширования.
($cpu | Select-Object Name, Description),($mb | Select-Object Manufacturer, Product) |
Select-Object @{name='NameOrManu';expr={$_.Name + $_.Manufacturer}},
@{name='DescrOrProd';expr={$_.Description + $_.Product}} |
ConvertTo-Csv -NoTypeInformation