Скрипт, который выплевывает нашу случайную командную задачу [Powershell] - PullRequest
3 голосов
/ 06 марта 2019
$k = get-command -all | measure | select-object count
$result = $k -replace "[{}@Count=]", ""
$rand = get-random -maximum $result
$minrand = $rand - 1
get-command -all -totalcount $rand | Select-Object -skip $minrand

Предполагается, что эта команда выдает ОДНУ команду, псевдоним, командлет. Я надеюсь, что это будет полезно для изучения PowerShell.

Проблема в том, что он выплевывает одну и ту же команду снова и снова.

1 Ответ

1 голос
/ 06 марта 2019

Ваш код очень сложный. Вы можете просто сделать это:

$Commands = Get-Command -All

Тогда продолжайте:

Get-Random $Commands

Чтобы каждый раз получать разные команды.


Что касается вашего кода, вам никогда не нужно делать это (что вернет строковый результат):

$k = get-command -all | measure | select-object count
$result = $k -replace "[{}@Count=]", ""

Вместо этого вы должны делать что-то вроде этого:

$k = get-command -all | measure | select-object count
$result = $k.count

Через который вы получаете доступ к свойству count $k и получаете его целочисленное значение.

PowerShell возвращает объекты со свойствами, поэтому, хотя вы часто видите в консоли результаты на основе строк, когда вы хотите манипулировать этими результатами, вы должны работать со свойствами объекта. Привязка объекта к Get-Member - это хороший способ узнать свойства объекта (а также его методы и т. Д.). Например, попробуйте:

$k | Get-Member

Чтобы увидеть его свойства.

Get-Help, Get-Command и Get-Member - 3 наиболее полезных инструмента для изучения и изучения PowerShell из оболочки.

...