Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 04.12.2023
Сообщений: 10

Не импортируестя файл .csv в цикл

04.12.2023, 20:23. Показов 907. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Может сталкивались, а то не пойму в чём причина: в цикле foreach пытаюсь импортировать файл .csv, и чтобы каждую итерацию выводился, но он не выводится, а выводятся все остальные команды. После цикла проверяю всё ок работает.

foreach($server in $servers) {Invoke-Command -ComputerName $server -ScriptBlock {$stat=import-csv "D:\file.csv";$stat;get-date}} -credential $cred

Есть подоздрения что после импорта это уже не .csv обьект и поэтому оболочка игнорит это дело и дальше идёт, но хотя после отработки проверяю переменную и всё ок, странно...
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.12.2023, 20:23
Ответы с готовыми решениями:

Вам доступен csv файл data.csv, содержащий информацию в csv формате.Напишите функцию read_csv для чтения данных из файла
Вам доступен CSV-файл data.csv, содержащий информацию в csv формате. Напишите функцию read_csv для чтения данных из этого файла. Она должна...

Запись в CSV-файл из массива. Не является форматом csv!
В общем искал работу... Дали тестовое написать парсер для сайта с выводом информации в csv-файл. Всё написал, сбросил, пришёл ответ что у...

Вложенный цикл while, чтение csv файла
Вложенный цикл while отображает только первый уровень 1#2#3 все три прохода цыкла do while <?php $handle =...

12
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 66
05.12.2023, 18:06
я ничего не понял... из вашего мысленного потока...

PowerShell
1
2
3
4
5
6
7
8
9
foreach ($server in $servers) {
    Invoke-Command `
        -ComputerName $server `
        -ScriptBlock {
            import-csv "D:\file.csv"
            get-date
        } `
        -credential $cred
}
-credential $cred у Вас не к Invoke-Command относится может из за этого
0
0 / 0 / 0
Регистрация: 04.12.2023
Сообщений: 10
05.12.2023, 18:40  [ТС]
Я просто сократил код, вот в приницпе он:

$password = convertto-securestring -string "qwerty" -asplaintext -force

$servers= @(get-content d:\laptops\2_floor.csv)
$cred = new-object system.management.automation.pscredentia l ("$servers\admin", $password)
$s=New-PSSession -ComputerName $servers -Credential $Cred -ErrorAction SilentlyContinue
$time=measure-command {foreach($server in $servers){
Invoke-Command -ComputerName $server -ScriptBlock {$env:computername; $stat=import-clixml "D:\stat.cli"

$stat[$env:computername]

(gwmi win32_computersystem).manufacturer;
(Get-CimInstance -ClassName Win32_ComputerSystem)|fl Model;
(Get-PhysicalDisk| select @{expression={[int]($_.size/1GB)};label="Size(GB)"},MediaType,BusTyp e)|fl;
(Get-WmiObject -Class Win32_Processor|select @{label="CPU (GHz)";expr={$_.MaxClockSpeed}}|fl );
if((gwmi win32_physicalmemory).smbiosmemorytype -eq 24) {"DDR3"} else {"DDR4"};
Get-WmiObject Win32_PhysicalMemory | select @{Label="RAM(GB)"; Expression={$_.Capacity / 1GB}}|fl;$a} -credential $cred -ErrorAction SilentlyContinue |Out-File -PSPath D:\test\2_floor.txt -append}

$cont=gc D:\test\2_floor.txt|?{$_ -ne ""};
$cont |Out-File -PSPath D:\test\2_floor.txt;

$x=$y=0;
$job = Test-Connection -ComputerName (Get-Content D:\laptops\2_floor.csv) -quiet;
foreach ($i in $job) {if($i -eq 'true'){$x++} else{$y++}} "In network $x `nNot available $y"|Out-File -PSPath D:\test\2_floor.txt -append}
$time|select minutes,seconds|Out-File -PSPath D:\test\2_floor.txt -append
---------------------------------------------------------------------------------------------------------------------------------------------------
Скрипт пробегается по списку компов, выводит некоторые характеристики. В начале выводится имя компа, второй командой загружаю хэш-таблицу, в которой содержится ключ(имя) и значание(юзер), а третья команда ($stat[$env:computername]) собственно и должна выводить имя, но ничего не происходит, и скрипт отрабатывает всё что в нём написано, кроме того о чём я писал. После того как скрипт отработал, проверяю, что находится в $stat[$env:computername] - а там пусто. Отдельно $stat показывает таблицу которая успешно загрузилась. На каждой итерации должно подставляться имя компа($env:computername) и выводится 'value' из моей хэш-таблицы (при помощи команды $stat[$env:computername]). Вот сама таблица: $stat=@{"comp1"="user1";"comp2"="user2". ....}
----------------------------------------------------------------------------------------------------------------------------------------------------
P.S. В вопросе я говорил про .csv файл, так как пробовал его тоже ипортировать в цикл и тупо вывести его содержимое, что тоже не увенчалось успехом.
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 66
05.12.2023, 19:18
PowerShell
1
$stat=import-clixml "D:\stat.cli"
Это на каждой машине у вас по которой проходится скрипт
ScriptBlock отрабатывает на стороне клиента и ищет этот файл на клиентской машине
1
0 / 0 / 0
Регистрация: 04.12.2023
Сообщений: 10
05.12.2023, 19:25  [ТС]
А как тогда лучше сделать? Если обьявлю ёё за циклом, то эта переменная будет же неизвестной в цикле.
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 66
05.12.2023, 22:09
Лучший ответ Сообщение было отмечено xinitrc как решение

Решение

xinitrc, Я так понимаю это фиксированный список, можете на своей стороне получать его значение, и в качестве аргумента передавать в скрипт блок

Example 11: Use the Param keyword in a script block
1
507 / 160 / 49
Регистрация: 27.02.2016
Сообщений: 832
06.12.2023, 06:14
Цитата Сообщение от xinitrc Посмотреть сообщение
как тогда лучше сделат
упростите програму для начала
1
0 / 0 / 0
Регистрация: 04.12.2023
Сообщений: 10
07.12.2023, 18:42  [ТС]
Частично помог ответ:
https://learn.microsoft.com/en... e-computer

До Invoke-command объявил $hash=import-clixml 'D:\file.cli', а в самом цикле использовал $using:hash и выводилась соответственно вся таблица на каждой итерации. Но мне нужно, как я говорил, только значение этой таблицы, а ключ -имя хоста, т.е. так- $using:hash[$env.computername], но так не работает((
0
507 / 160 / 49
Регистрация: 27.02.2016
Сообщений: 832
08.12.2023, 05:00
присвойте в вызыващем скрипте
('{0}'-f $hash[$env.computername]) какой нибудь новой переменной и уже ее передавайте через using
1
0 / 0 / 0
Регистрация: 04.12.2023
Сообщений: 10
08.12.2023, 11:02  [ТС]
Не работает так((
$hash=import-clixml "D:\file.cli"
$name=('{0}' -f $hash[$env:computername])

Invoke-command -scriptblock{ $using:name}
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 66
08.12.2023, 11:41
xinitrc, так работает
PowerShell
1
2
3
4
5
6
7
8
9
10
$someVariable = @{
    Value = "hello world"
} 
 
$someScriptBlock = {
    $inputVariable = $args[0]
    $inputVariable.value.ToUpper()
}
 
Invoke-Command -ScriptBlock $someScriptBlock -ArgumentList $someVariable -ComputerName "."
Code
1
2
PS C:\tmp> . 'C:\tmp\tmp.ps1'
HELLO WORLD
Добавлено через 4 минуты
Так если угодно
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$someVariable = @{
    Value = "hello world"
} 
 
$anotherVariable = "SOME STRING"
 
 
$someScriptBlock = {
    param (
        $inputVariable,
        $anotherInputVariable
    )
    $inputVariable.value.ToUpper()
    $anotherInputVariable.ToLower()
}
 
Invoke-Command -ScriptBlock $someScriptBlock -ArgumentList $someVariable, $anotherVariable
1
0 / 0 / 0
Регистрация: 04.12.2023
Сообщений: 10
08.12.2023, 15:55  [ТС]
Спасибо за помощь, хоть понял в каком направлении двигаться.
Всё работает!
Сделал чуть по другому:
Invoke-command -scriptblock{Filter name{$_.$env:computername}; $using:hash|name}
0
507 / 160 / 49
Регистрация: 27.02.2016
Сообщений: 832
08.12.2023, 19:20
офф топик
чего только микрософт не изобретет чтобы по своему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.12.2023, 19:20
Помогаю со студенческими работами здесь

По очереди открывать каждый CSV-файл, запускать макрос и сохранять этот файл в формате XLSX
Добрый день. Помогите написать скрипт который будет: У меня есть много файлов в папке С:\1\ имя1.csv имя2.csv .... имя99.csv Нужно...

CSV файл
Имеются csvфайлы, в которых хранится информация о студентах. В первом файле: Код студента,Фамилия,Имя,Специальность,Курс. Во втором...

Csv файл
Здравствуйте, только начала изучать с# и столкнулась с такой проблемой. Необходимо считать csv файл и отделить некоторые данные в отдельные...

CSV файл
Добрый день, помогите плизз вот содается csv файл <?php $fp = fopen('kursval.csv', 'w'); $stm = $pdod->prepare('SELECT * FROM...

CSV файл
Добрый вечер, не могли бы подсказать, где ошибка в программе? При компиляции ошибок не выдаёт, но и csv файл упорно не хочет создаваться ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru