The Binary Search algorithm is exposed in Powershell v3.0 . It is not clear to me how to implement System.Collections.IComparer as of yet. However, even without IComparer, Powershell's BinarySearch has some usefulness. Here are the overloads:

[Array]::BinarySearch.OverloadDefinitions

static int BinarySearch(array array, System.Object value)

static int BinarySearch(array array, int index, int length, System.Object value)

static int BinarySearch(array array, System.Object value, System.Collections.IComparer comparer)

static int BinarySearch(array array, int index, int length, System.Object value, System.Collections.IComparer comparer)

static int BinarySearch[T](T[] array, T value)

static int BinarySearch[T](T[] array, T value, System.Collections.Generic.IComparer[T] comparer)

static int BinarySearch[T](T[] array, int index, int length, T value)

static int BinarySearch[T](T[] array, int index, int length, T value, System.Collections.Generic.IComparer[T] comparer)