Просто вычислите его
Hours = Seconds/3600
Minutes = (Seconds % 3600) /60
Seconds = (Seconds % 3600) % 60
Вы можете использовать оператор запятой для обертывания коллекции строк в массиве, так что когда массив разворачивается, вы завершаете сборку исходных строк, например:
function lib_open_table([string] $sql) {
$ds = lib_open_dataset $sql
return ,$ds.Tables[0]
}
По сути, вы не можете предотвратить PowerShell от разворачивания массивов / коллекций. Лучшее, что вы можете сделать, это обходное поведение, обертывающее массив / коллекцию в другом массиве с одним элементом.
О да, я тоже борется с этим, пока не получил этот пост .. (tnxs Keith!) [/ g0]
2 вещи, которые вам нужно, чтобы сосредоточиться на a) добавить свой возвращенный объект с помощью запятая, действительно, б) когда вы заполняете свой адаптер, обязательно присвойте результат переменной (распоряжающейся) или выполните Out-Null
Я не делал Out-Null и даже с запятая запятая, я продолжал получать обратно коллекцию (item 0 = количество строк из запроса, item1 = datatable). Довел меня до ума, пока не выбрал параметр Out-null.
Очень странно ИМХО, поскольку я прошу конкретно вернуть данные, но продолжал возвращать коллекцию, даже с «,» спереди
function Oracleconnection
{
process
{
trap
{
Write-Host "error occured on oracle connection"
Write-Host $_
continue
}
[System.Reflection.Assembly]::LoadWithPartialName(“System.Data.OracleClient”) | out-null
$connection = new-object system.data.oracleclient.oracleconnection( `
"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myhost.host)(PORT=1800)) `
(CONNECT_DATA=(SERVICE_NAME=myservicename)));User Id=myid;Password=mypassword;");
$query = "SELECT country, asset FROM table "
$set = new-object system.data.dataset
$adapter = new-object system.data.oracleclient.oracledataadapter ($query, $connection)
$adapter.Fill($set) | Out-Null
$table = new-object system.data.datatable
$table = $set.Tables[0]
return ,$table
}
}
Специальные приложения PowerShell для DataTable. Он не реализует никаких обычных подозрительных интерфейсов, таких как ICollection, IList или IEnumerable, которые обычно запускают разворот. Вы можете немного вникать в это:
PS> $dt = new-object data.datatable
PS> $dt -is [collections.ienumerable]
False
Еще:
PS> $e = [management.automation.languageprimitives]::GetEnumerator($dt)
PS> $e.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
False False RBTreeEnumerator System.ValueType
-Oisin
$returned_obj[5]
– Nat 10 July 2018 в 18:40