@IT_Otdel

Как использовать переменные из массива поочерёдно (Powershell)?

Есть небольшой скрипт:
$pc_number = (Get-Content C:\test\pc_name_stm.txt)
$user_name = (Get-Content C:\test\stm_name.txt)
New-Item -ItemType SymbolicLink -Path "\\$pc_number\c$\Users\$user_name\Desktop\Полезные_ссылки_СТМ" -Target "\\192.168.123.220\Shared\СТМ\Полезные_ссылки_СТМ"

Он должен брать номер компьютера и одного .txt файла, имя пользователя из второго и создавать ярлык папки на рабочем столе пользователя. В .txt файлах записано сразу несколько номеров ПК и имён пользователей, около 25.
На данный момент при запуске скрипта он использует все номера пк и имена учёток сразу.

Как сделать что бы он взял первую строку и первого .txt, первую из второго .txt, провёл операцию для них, а потом начал поочерёдно идти по строкам дальше, проведя в сумме 25 операций?

UPD: найдена часть проблемы, при использовании переменной с "$var" с двойными кавычками строки теряются и весь массив записывается одной строкой, вот только как при указании пути убрать кавычки.
  • Вопрос задан
  • 231 просмотр
Решения вопроса 1
Azamat_Lee
@Azamat_Lee
Работаю с Wordpress
Для выполнения операций поочерёдно с использованием переменных из массива в PowerShell, вы можете использовать цикл ForEach-Object или foreach. В вашем случае, когда у вас есть два файла с данными, и вы хотите создать символические ссылки для каждой пары номера ПК и имени пользователя, скрипт может выглядеть следующим образом:

$pc_numbers = Get-Content 'C:\test\pc_name_stm.txt'
$user_names = Get-Content 'C:\test\stm_name.txt'

for ($i = 0; $i -lt $pc_numbers.Length; $i++) {
    $pc_number = $pc_numbers[$i]
    $user_name = $user_names[$i]
    $path = "\\$pc_number\c$\Users\$user_name\Desktop\Полезные_ссылки_СТМ"
    $target = "\\192.168.123.220\Shared\СТМ\Полезные_ссылки_СТМ"
    
    New-Item -ItemType SymbolicLink -Path $path -Target $target
}


Этот скрипт считывает данные из обоих файлов и сохраняет их в массивы $pc_numbers и $user_names. Затем он использует цикл for, чтобы пройти по каждому элементу массивов, создавая символическую ссылку для каждой пары номера ПК и имени пользователя.

Обратите внимание, что если количество строк в файлах различается, это может привести к ошибкам. Убедитесь, что количество строк в обоих файлах совпадает.

Если вы столкнулись с проблемой потери строк при использовании переменных в двойных кавычках, убедитесь, что вы правильно обращаетесь к элементам массива, как показано в примере выше, где $pc_number и $user_name являются отдельными элементами массива, а не всем массивом сразу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы