|
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
|
|
| 04.12.2023, 20:23 | |
|
Ответы с готовыми решениями:
12
Вам доступен csv файл data.csv, содержащий информацию в csv формате.Напишите функцию read_csv для чтения данных из файла Запись в CSV-файл из массива. Не является форматом csv! Вложенный цикл while, чтение csv файла |
|
|
||||||
| 05.12.2023, 18:06 | ||||||
|
я ничего не понял... из вашего мысленного потока...
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
|
|
|
0 / 0 / 0
Регистрация: 04.12.2023
Сообщений: 10
|
|
| 05.12.2023, 19:25 [ТС] | |
|
А как тогда лучше сделать? Если обьявлю ёё за циклом, то эта переменная будет же неизвестной в цикле.
0
|
|
|
|
|
| 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 | |
|
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
|
|
|
|
||||||||||||
| 08.12.2023, 11:41 | ||||||||||||
|
xinitrc, так работает
Так если угодно
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
|
|
| 08.12.2023, 19:20 | |
|
Помогаю со студенческими работами здесь
13
По очереди открывать каждый CSV-файл, запускать макрос и сохранять этот файл в формате XLSX CSV файл Csv файл CSV файл CSV файл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
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.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|