Скрипт, который выдает нашу проблему со случайной командой [Powershell]

#powershell #command #cmdlet

#powershell #команда #powershell-командлет

Вопрос:

 $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. Передайте Get-Random в Get-Command —> Get-Command | Get-Random

Ответ №1:

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

 $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 из командной оболочки.