Прошло уже много времени с тех пор, как я только начал ладить с PowerShell, и к сегодняшнему дню я могу сказать, что многое выполнил для своих ежедневных задач.Каждый день - новый день в школе, и теперь, когда я начинаю работать с функциями, я снова спотыкаюсь ... Вот моя проблема:
Даже с самой простой функцией, взятой из многих уроков для начинающих, это не такработая на своем рабочем ПК, ни на своем домашнем ПК, ни на административных серверах моей работы.
Например:
function MyDate {
Get-Date
}
Сохраненный файл PS1 с именем MyDate.ps1 в локальной папке ипросто запустите эту крошечную штуку из командной строки PowerShell, как это
PS C:\PS> C:\PS\MyDate.ps1
Вот как это было в точности объяснено в учебнике по PS-функциям для чайников.Просто в учебнике вывод должен показывать дату.В моей ситуации просто ничего нет.Нет ошибок, нет информации, связанной с Red-PS, ничего!Если я использую функцию в своем полном сценарии так:
function MyDate {
Get-Date
}
MyDate
PS C:\PS> C:\PS\MyDate.ps1
Montag, 1. Oktober 2018 19:28:32
Хорошо, тогда я получаю вывод даты.Хотите знать, почему не прямо из приглашения без вызова функции в сценарии, так как функции должны использоваться?И опять же, во многих из этих довольно простых примеров это должно сработать .. Где я тогда не прав?
Редактировать: Не уверен, что сейчас это правильная политика длядобавить больше обновлений к вопросу?
Я, вероятно, поделюсь более конкретным примером моих сценариев и того, как я хочу "преобразовать" его в функцию.Краткий пример:
$myServers = Get-Content D:\Servers\Windows2016.txt
foreach ($myServer in $myServers) {
Get-Printer -ComputerName $myServer |
Where-Object {$_.DeviceType -eq "Printer"} |
Select Name, PortName
}
Для других групп поддержки это должно быть максимально просто.Поэтому моя идея заключалась в том, чтобы «обернуть» функцию вокруг этих нескольких строк, чтобы другой человек мог выполнить ее следующим образом:
C:\Scripts\Our-Printers -File D:\Servers\Windows2016.txt
Our-Printers
будет тогда моим именем функции.
Я уже пробовал это, но отбросил материал, хотя он не работал с первой попытки, поэтому я хотел начать с довольно простых вещей, и в данный момент мне кажется, что я этого не понимаю.Но, между прочим, в скрипте мои функции уже работали, просто они не сделаны так, чтобы требовать ввода таким образом, как в примере.Это означает, что я определил функции в большом скрипте, и благодаря этому я могу изменять заказы или даже пропускать определенные функции на основе пользовательского ввода ...