Я пытаюсь найти способ сохранить свойства для оператора select
в PowerShell, но он не работает. Я не нашел способ сделать весь оператор литералом, чтобы он не просматривался до тех пор, пока переменная не будет открыта.Почему это не работает? - Попытка сохранить свойства в переменной для использования несколько раз в функции
Вот что работает:
$wsus.GetSummariesPercomputerTarget($CurrentMonthUpdateScope, $ComputerScope) |
Select-Object @{L="WSUSServer";E={$Server}},
@{L="FromDate";E={$($CurrentMonthUpdateScope.FromCreationDate).ToString("MM/dd/yyyy")}},
@{L="ToDate";E={$($CurrentMonthUpdateScope.ToCreationDate).ToString("MM/dd/yyyy")}},
@{L='Computer';E={($wsus.GetComputerTarget([guid]$_.ComputerTargetID)).FullDomainName}},
DownloadedCount,
NotInstalledCount,
InstalledPendingRebootCount,
FailedCount,
Installedcount |
Sort-Object -Property "Computer"
, и я пытаюсь получить свойства, упомянутыми (начиная сразу после Select-Object
заявления и заканчивая непосредственно перед последней трубой) помещаются в переменном, так что я могу использовать одинаковые свойства несколько раз с различными областями.
Я попытался это:
$Properties = '@{L="WSUSServer";E={$Server}},
@{L="FromDate";E={$($CurrentMonthUpdateScope.FromCreationDate).ToString("MM/dd/yyyy")}},
@{L="ToDate";E={$($CurrentMonthUpdateScope.ToCreationDate).ToString("MM/dd/yyyy")}},
@{L="Computer";E={($wsus.GetComputerTarget([guid]$_.ComputerTargetID)).FullDomainName}},
DownloadedCount,
NotInstalledCount,
InstalledPendingRebootCount,
FailedCount,
Installedcount'
$wsus.GetSummariesPercomputerTarget($CurrentMonthUpdateScope, $ComputerScope) |
Select-Object $Properties |
Sort-Object -Property "Computer"
В то время как это работает он не дает каких-либо данных, и я думаю, что он путает PowerShell.
Это дает тот же ответ:
$Properties = "@{L=`"WSUSServer`";E={$Server}},
@{L=`"FromDate`";E={$($CurrentMonthUpdateScope.FromCreationDate).ToString(`"MM/dd/yyyy`")}},
@{L=`"ToDate`";E={$($CurrentMonthUpdateScope.ToCreationDate).ToString(`"MM/dd/yyyy`")}},
@{L=`"Computer`";E={($wsus.GetComputerTarget([guid]$_.ComputerTargetID)).FullDomainName}},
DownloadedCount,
NotInstalledCount,
InstalledPendingRebootCount,
FailedCount,
Installedcount"
Есть варианты, мысли и т.д.?
Посмотрите на значение переменной '$ Свойства', и вы должны сразу увидеть проблему. Строки с одним кавычком не интерполируют выражения '$ (...)'. Вместо этого вам нужно использовать строку с двойными кавычками (и избегать встроенных кавычек с обратными окнами). –
Я попробовал его с двойными кавычками, и он дает тот же ответ. –
Обновление: я обновил исходный вопрос, чтобы включить $ Properties, используя двойные кавычки и обратные ссылки - тот же самый ответ, что и первая версия ... –