Причем Powershell слишком умен

Это действительно зависит от того, какие приложения вы хотите разработать. Для большинства целей C # и .NET полностью подходят. Тем не менее, есть определенные виды приложений, которым нужно как можно меньше зависимостей (вспоминаются расширения оболочки), которые непрактичны для приложений .NET. Для тех, кому нужен Win32.

Как всегда, стоит иметь хотя бы базовые знания о Win32, даже если вы используете .NET для большей части своей работы.

7
задан Neobyte 27 May 2009 в 03:20
поделиться

3 ответа

Измените первую строку кода на

$results = @(myQuery)

Это всегда будет возвращать массив. См. эту запись в блоге для получения дополнительных сведений.

11
ответ дан 6 December 2019 в 21:18
поделиться

Меня это тоже укусило. Нет умных идей о том, как исправить $ results.Count , но foreach можно исправить, переключившись на конвейер.

$scalar = 1
$list = (1,2)
$list | % { $_ }

печатает 1 2

$scalar | % { $_ }

отпечатка 1

0
ответ дан 6 December 2019 в 21:18
поделиться

На самом деле foreach работает нормально. Все виды использования foreach (ключевое слово foreach, командлет Foreach-Object и псевдонимы Foreach-Object «foreach» и «%») имеют одинаковое поведение при «заключении» рассматриваемого объекта в массив, если это необходимо. Таким образом, любое использование foreach будет работать как со скалярными значениями, так и со значениями массивов.

К сожалению, это означает, что они также работают со значениями NULL. Скажем, да:

$x = $null
foreach ($y in $x) {Write-Host "Hello world 1"}
$x | Foreach-Object {Write-Host "Hello world 2"}

Я получу

"Hello world 1"
"Hello world 2"

из этого.

1
ответ дан 6 December 2019 в 21:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: