#powershell-remoting
Вопрос:
Я довольно неопытен в Powershell и хотел написать (на мой взгляд, довольно простой сценарий), который позволит мне удаленно изменять локальных пользователей.
Я смог закодировать необходимые независимые шаги. Моим следующим шагом была попытка автоматизировать Этот Процесс.
Именно там я получил свой первый настоящий удар.
Единственное, что не работает, — это выполнить код внутри «$MakeTxT». Прямо сейчас он анализируется как строка, но я хотел бы вызвать команду для выполнения кода внутри «$MakeTxT».
После просмотра Интернета в течение последних нескольких дней я нашел несколько решений, которые я просто не понимаю. Большинство из них являются решениями в строке [«Преобразовать строку в блок сценариев»][1]
Моя главная проблема заключается в том, что я не понимаю функцию, используемую в этом примере, так как я хочу изменить ее, если мне когда-нибудь понадобится, или как правильно реализовать эту функцию.
Я знаю, что мне нужно «использовать:» для доступа к переменной, так как она находится за пределами блока сценариев. Я также где-то читал, что мне нужен амперсанд для распознавания содержимого переменной как кода. Но как мне отформатировать указанный код? Также, если у вас есть какие-либо рекомендации по ресурсам для улучшения моих навыков PS, я был бы очень признателен за это. 🙂
Вот пример, который я использовал для тестирования сценария. Все работает, кроме моего Скриптового блока.
$MakeTxT =
{
New-Item C:Temptest.txt
Set-Content C:Temptest.txt Test123
}
foreach ($pc in $AdminList)
{
Invoke-Command -ComputerName $pc.Computer -ScriptBlock {amp;$using:MakeTxT} -Credential $Credentials
}
ПРАВКА: я поймал себя на собственной ошибке. На самом деле это не означало, что помещение переменной без скобок после «-Scriptblock», по сути, просто заменит саму переменную тем, что определено как переменная. Так что мой правильный код должен был бы выглядеть так:
$MakeTxT =
{
New-Item C:Temptest.txt
Set-Content C:Temptest.txt Test123
}
foreach ($pc in $AdminList)
{
Invoke-Command -ComputerName $pc.Computer -ScriptBlock $MakeTxT -Credential $Credentials
}
[1]: https://www.improvescripting.com/how-to-convert-string-to-script-block-using-powershell/