Скрипт Powershell назначает еду номерам и перечисляет - PullRequest
0 голосов
/ 22 мая 2018

Скрипт должен распределять и перечислять номера конкретных продуктов.Поэтому я хочу сценарий, который составляет «план» еды, которую я буду есть на этой неделе.У меня есть счетчик, который может "выбрать из 200 блюд".Так что мне нужно, чтобы это было так:

число * = тако

число * = пицца

... продолжая так

Iпонятия не имею, как это сделать ... я надеюсь, что вы можете мне помочь!вот мой код до сих пор.

# Food selector for the week!
#random Stuff mixed for every day.
function Random-Food{

Param(
     [array]$InputList
   )

   return $InputList | Get-Random -Count 7 
   $InputList.Count;
}

$a = 1..200
Write-Output (Random-Food -InputList $a)

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Чтобы изучить PowerShell, попробуйте следующее: Windows PowerShell 3.0 Шаг за шагом - Pearsoncmg.com

Далее следует Халява.Написано и протестировано на машине A Win 7 с PowerShell 4.Я включил несколько продуктов.Все, что вам нужно сделать, это добавить элементы в $foodList.

Пример вывода следует за кодом

cls
#define an array of strings and load it with food words 

$foodList = @("Apples","Bananas", "Cherries","Grapes","Mangoes","Melons","Oranges","Peaches","Pears","Pineapples","Strawberries","Tomatoes")

#define an array of days
$dow = @("Mon","Tue","Wed","Thu","Fri","Sat","Sun")

#loop 7 times, once per day and generate a random number between 0 and the number of food items - 1

for ($i = 0; $i -lt 7; $i++)
{ 
    $foodItemIndex = Get-Random -Minimum 0 -Maximum ($foodList.Count - 1)
    write-host ($dow[$i] + ": " + $foodList[$foodItemIndex])
}

enter image description here

0 голосов
/ 22 мая 2018

Вот один из способов сделать это:

$foodChoices = "Pizza","Taco","Dim Sum","Burger","Salad","Soup","Sandwich","Curry"

$foodChoices[(Get-Random -InputObject (0..($foodChoices.Count - 1)) -Count 7)] |
    ForEach-Object {$daysOfWeek = [enum]::GetNames([DayOfWeek]); $day=0}{
        [PsCustomObject]@{
            Day=$daysOfWeek[$day++]
            Food=$_
        }
    }

Вывод будет выглядеть примерно так:

Day       Food    
---       ----    
Sunday    Burger  
Monday    Sandwich
Tuesday   Salad   
Wednesday Taco    
Thursday  Soup    
Friday    Dim Sum 
Saturday  Curry 

Просто добавьте больше элементов в $foodChoices и все готово...

0 голосов
/ 22 мая 2018

В отдельном файле создайте перечисление (для удобства чтения):

Enum Food
{
    Tacos
    Pizza
    ...
}

В вашем сценарии поставьте этот файл в точку, чтобы он был доступен: . 'C:\myenum.ps1'

Затемв вашей функции:

function Get-Food {
    [Enum]::GetValues([Food]) | Get-Random -Count 7
}

Это вернет 7 случайных продуктов из вашего списка.В качестве дополнительного бонуса вы можете назначить номер каждому продукту и получить эту ссылку.(Tacos = 5 и доступ к нему как [Food]::Tacos, который можно рассматривать как строку или целое число)


Чтобы включить день:

function Get-Food {
    $foodsOfWeek = [Enum]::GetValues([Food]) | Get-Random -Count 7

    foreach ($day in [Enum]::GetValues([DayOfWeek])) {
        ([string]$day).Substring(0, 3) + ': ' + $foodsOfWeek[$day]
    }
}

Объяснение:
Функция извлекает все значения (Tacos, Pizza и т. Д.) Из вашего пользовательского перечисления [Food], а затем случайным образом выбирает 7 из них для помещения в массив, который мы сохраняем в $foodsOfWeek.

.точка, нам нужно пройтись по дням недели (системное встроенное перечисление [DayOfWeek]).Мы приводим тип к строке, чтобы мы могли вызвать метод .Substring(), чтобы получить первые 3 символа и добавить : для форматирования.

Наконец, мы получаем доступ к массиву $foodOfWeek, используя [DayOfWeek] перечисление с дней соотносится с числами 0-6 (размер нашего массива).

(DayOfWeek.Sunday == 0) && (DayOfWeek.Sunday == "Sunday")) == true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...