Как указано на:
101 Образцы LINQ - левое внешнее соединение
var q =
from c in categories
join p in products on c.Category equals p.Category into ps
from p in ps.DefaultIfEmpty()
select new { Category = c, ProductName = p == null ? "(No products)" : p.ProductName };
Используя части изо всех этих ответов и комментариев, я соединил это для любого, кто видит этот вопрос в будущем. Это покрывает все ситуации, перечисленные в других ответах
# If using ISE
if ($psISE)
{
$ScriptPath = Split-Path -Parent $psISE.CurrentFile.FullPath
}
# If Using PowerShell 3 or greater
elseif($PSVersionTable.PSVersion.Major -gt 3)
{
$ScriptPath = $PSScriptRoot
}
# If using PowerShell 2 or lower
else
{
$ScriptPath = split-path -parent $MyInvocation.MyCommand.Path
}