powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Програмирование в powerShell
20 сообщений из 45, страница 2 из 2
Програмирование в powerShell
    #39438662
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
(get-content -path $file) | where-object -filterscript {$_.trim() -ne ''} | set-content -path $file[/quot]

# сначала посчитать 
sls '^\s+$' $file | measure


# или сохранить разницу

$lines = (gc $file)
$lines | ?{ $_ -notmatch '^\s+$}' > sc $file
$lines.Count - (gc $file.Count)
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39438663
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014В как заставить Повершэл а точнее select-string искать русские буквы в тексте?

1. Создал файл в нем прописал слова на русском языке, например Привет Мир

2. пишу Select-string -path 1.txt "Привет"

ноль результата

Прописать -Encoding и посмотреть, какая кодировка стоит в той оболочке, которую вы используете (консоль?)
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39439453
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSharperSAS2014В как заставить Повершэл а точнее select-string искать русские буквы в тексте?

1. Создал файл в нем прописал слова на русском языке, например Привет Мир

2. пишу Select-string -path 1.txt "Привет"

ноль результата

Прописать -Encoding и посмотреть, какая кодировка стоит в той оболочке, которую вы используете (консоль?)

да, спс разобрался
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39439454
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSharper
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
(get-content -path $file) | where-object -filterscript {$_.trim() -ne ''} | set-content -path $file[/quot]

# сначала посчитать 
sls '^\s+$' $file | measure


# или сохранить разницу

$lines = (gc $file)
$lines | ?{ $_ -notmatch '^\s+$}' > sc $file
$lines.Count - (gc $file.Count)



спасибо
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39450519
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь сделать такую штуку, через повершел отправлять в Lync (типа аськи) сообщения, используя этот код:

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
cls
$assemblyPath = “C:\Microsoft.Lync.Model.DLL”

Add-Type -Path $assemblyPath
#add-type -assemblyname $assemblyPath
 
$IMType = 1
$PlainText = 0

$cl = [Microsoft.Lync.Model.LyncClient]::GetClient() 
$conv = $cl.ConversationManager.AddConversation()
$gs = $cl.ContactManager.Groups

$i = 0

#search for user in contacts list
$callbackAddContact = [AsyncCallback]{
    param($asyncResult)

    # callback code
    if ($asyncResult.isCompleted)
    {
        $mygroup.EndAddContact($asyncResult)
    }
}  

foreach ($g in $gs)
{
    foreach ($contact in $g)
    {
        if ($contact.GetContactInformation("PrimaryEmailAddress") -eq “tim@mail.ru”)
        {
            $i++                   
         
            break
        }
    }

    if ($i -eq 0)
    {
        $g = $gs[0]
        $contact = $cl.ContactManager.GetContactByUri(“tim@mail.ru”)
        $g.BeginAddContact($contact,$callbackAddContact,$state)
    }
}

#prepare conversation participant
foreach ($g in $gs)
{
    foreach ($contact in $g)
    {
        if ($contact.GetContactInformation("PrimaryEmailAddress") -eq “tim@mail.ru”)
        {
            $i++
       
            $null= $conv.AddParticipant($contact)
         
            break
        }
    }

    if ($i -gt 0) {break}
}
 
#send message
$d = New-Object “System.Collections.Generic.Dictionary[Microsoft.Lync.Model.Conversation.InstantMessageContentType,String]”
$d.Add($PlainText, “текст сообщения”) 
$m = $conv.Modalities[$IMType]

$myCallback = [AsyncCallback]{
    param( $asyncResult)
    
    # callback code
    if ($asyncResult.isCompleted)
    {
        Write-Host "Message Sent"
    }
}

[void]$m.BeginSendMessage($d, $myCallback, $d)



но получаю ошибку:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
Add-Type : Невозможно загрузить файл или сборку "Microsoft.Lync.Model, Version=1
5.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" или один из зависимых
 от них компонентов. Сбой при проверке правильности строгого имени. (Исключение 
из HRESULT: 0x8013141A)
C:\lync and PS.ps1:4 знак:9
+ Add-Type <<<<  -Path $assemblyPath
    + CategoryInfo          : NotSpecified: (:) [Add-Type], FileLoadException
    + FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell. 
   Commands.AddTypeCommand



Файл в указном пути присутствует, установленная версия Lync 2010 года
Кто уже делал такую штуку??????????????
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39451132
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы поискал how to debug assebly load и какой-нибудь тулзой посмотрел ошибки при закгрузке (например при помощи дебаггера VS подключился к процессу powershell и посмотрел эксепшены)
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39501636
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Накатал тестовый код, который их тхт файла построчно выбирает удаленный сервер заходит на него и смотрит от кого запущен explorer.exe и выдает результат

Скрипт:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
$files = split-path -path $MyInvocation.MyCommand.Path #Текущий каталог
Get-Content $files\servers.txt| %{
$computername = $_ #имена серверов
#Сбор инфы
Get-WMIObject Win32_Process -filter "name='explorer.exe'" -computername $computername  |
ForEach-Object {
$owner = $_.GetOwner()
‘{0}’ -f $owner.User} |
ForEach-Object {
$rv = 1 | Select-Object ComputerName, User
$rv.ComputerName = $computername 
$rv.User = $_ 
$rv  
}
}



Результат устраивает, но расстояние между столбцами слишком большое, я понимаю, что нужно использовать такую конструкцию как | format-table -autosize
но я пытался прописать select-object результат не тот либо ошибки

Вообщем, хочется, чтобы было как на рис.2
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39502416
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы использовал select @{n="Owner", e=$_.GetOwner.User} или типа того. Для отладки бы напечатал в кавычках - может там просто пробелы в данных
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39503074
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как из коллекции выбрать один item т.е. выполняю запрос на инфу о процессорах на виртуальной системе и результат такой что показывается список всех процессоров
проблема в том что результат я не могу перенаправить в ячейку excel иза того что результат многосторочный
1. юзаю такой запрос
Код: powershell
1.
Get-WmiObject -Class Win32_Processor  -ComputerName $comps | Select-Object -Property name | format-table -HideTableHeaders




а если физической машине то все ок
2. юзаю такой запрос
Код: powershell
1.
 (Get-WmiObject -Class Win32_Processor  -ComputerName $comps).Name




подскажите как мне в первом случае сделать чтобы результат попадал как вовтором
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39505385
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решение найдено
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39506019
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал скрипт, который заполняет таблицу в Excel техническими и программными данными о компьютерах
хочется узнать кто бы что изменил сократил в коде?

PS: если комп не в сети то у меня есть отдельный скрипт который создает отчет

=============
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
# ИНФОРМАЦИЯ О КОМПЬЮТЕРАХ
# СПИСОК КОМПЬЮТЕРОВ В ФАЙЛЕ servers.txt 
  (создается заранее)
# КОТОРЫЙ ФОРМИРУЕТСЯ В EXCEL ФАЙЛ
##########################################

cls
# Создаём объект Excel
$Excel = New-Object -ComObject Excel.Application

# Делаем его видимым
$Excel.Visible = $true

# Добавляем рабочую книгу
$WorkBook = $Excel.Workbooks.Add()

# Начинаем работать с первым листом. 
#Для простоты  обращения к нему создаём соответствующую переменную
$info_comp = $WorkBook.Worksheets.Item(1)

# Переименовываем лист
$info_comp.Name = 'The information on computers'

# Заполняем ячейки - шапку таблицы
$info_comp.Cells.Item(1,1) = '[Computer]'
$info_comp.Cells.Item(1,2) = '[Operation System]'
$info_comp.Cells.Item(1,3) = '[SP]'
$info_comp.Cells.Item(1,4) = '[Architecture]'
$info_comp.Cells.Item(1,5) = '[Motherboard]'
$info_comp.Cells.Item(1,6) = '[Processor]'
$info_comp.Cells.Item(1,7) = '[RAM(GB)]'
$info_comp.Cells.Item(1,8) = '[Graphic adapter]'
$info_comp.Cells.Item(1,9) = '[Disk]'
$info_comp.Cells.Item(1,10) = '[Free(GB)]'
$info_comp.Cells.Item(1,11) = '[Total(GB)]'


# Переходим на следующую строку...
$Row = 2
$Column = 1

$files = split-path -path $MyInvocation.MyCommand.Path #Текущий каталог
#$srv = read-host "Список серверов"
Get-Content $files\servers.txt| %{
$comps = $_ #имена серверов
#Сбор инфы
if (Test-connection -Quiet $comps -count 1) {
#Имя компьютера
    $info_comp.Cells.Item($Row, $Column) = $comps
    $Column++

#Операционная система
$OS = (Get-WmiObject -Class Win32_operatingSystem -ComputerName $comps).caption 
$info_comp.Cells.Item($Row, $Column) = $OS
    $Column++
    
$SP = (Get-WmiObject -Class Win32_operatingSystem -ComputerName $comps).servicepackmajorversion 
if ($SP -gt 0){
$info_comp.Cells.Item($Row, $Column) = $SP}
else {$SP1 = ""
      $info_comp.Cells.Item($Row, $Column) = $SP1
     }
    $Column++

$Arch = (Get-WmiObject -Class Win32_operatingSystem -ComputerName $comps).osarchitecture
if ($Arch -eq "64-bit"){
$info_comp.Cells.Item($Row, $Column) = $Arch}
else {$Arch1 = "32-bit"
      $info_comp.Cells.Item($Row, $Column) = $Arch1}
    $Column++         

#Материнская плата
$Moth = (Get-WmiObject -Class Win32_BaseBoard -ComputerName $comps).product
$info_comp.Cells.Item($Row, $Column) = $Moth
    $Column++

#Процессор
$CPU_ = (Get-WmiObject -Class Win32_Processor  -ComputerName $comps).deviceid
    if($CPU_ -ne "CPU0")
  {
   $CPU1 = (Get-WmiObject -Class Win32_Processor  -ComputerName $comps)[0].Name
   $info_comp.Cells.Item($Row, $Column) = $CPU1
    }
else {
      $CPU =  (Get-WmiObject -Class Win32_Processor  -ComputerName $comps).Name
      $info_comp.Cells.Item($Row, $Column) = $CPU
     }

    $Column++

#Оперативная память
$total = 0
$RAM = (gwmi win32_physicalmemory -ComputerName $comps) | foreach { $total += ($_.capacity / 1Gb) }
$RAM = '{0}' -f $total
$info_comp.Cells.Item($Row, $Column) = $RAM
    $Column++

#Видеоподсистема
$GPU = (Get-WmiObject -Class Win32_VideoController  -ComputerName $comps).name
$GPU1 = (Get-WmiObject -Class Win32_VideoController  -ComputerName $comps)[0].name
$GPU2 = (Get-WmiObject -Class Win32_VideoController  -ComputerName $comps)[1].name

#$d1 = "DameWare Development Mirror Driver 64-bit"
#$d2 = "DameWare Development Mirror Driver"
#$C = "ConfigMgr Remote Control Driver"
$drivers = "*Driver*"

   if ($GPU -ne $Null)
     {
     $info_comp.Cells.Item($Row, $Column) = $GPU
     $Column++
     }
     
     
   if($GPU1 -like $drivers -or $GPU1 -like $drivers)
     {
     $info_comp.Cells.Item($Row, $Column) = $GPU2
     $Column++
     }
        else 
            {
             $info_comp.Cells.Item($Row, $Column) = $GPU1
             $Column++
            }  
     
#Носители информации
          
    # локальные диски
     Get-WmiObject Win32_LogicalDisk -Filter   "DriveType=3" -ComputerName $comps | ForEach-Object `
{
    # Name_PC 
    $dev_id = $_.deviceID
  
    $info_comp.Cells.Item($Row, $Column) = $dev_id
    $Column++
 
    # Free Space
    $info_comp.Cells.Item($Row, $Column) = ([Math]::Round($_.FreeSpace/1GB, 2))
    $Column++
    
    # Size
    $info_comp.Cells.Item($Row, $Column) = ([Math]::Round($_.Size/1GB, 2))
    $Column++
        
    $Column = 9


###########################################################################
# Номер начальной строки
$InitialRow = $Row
# Возвращаемся на одну строку назад
#$Row--

$DataRange = $info_comp.Range(("A{0}" -f $InitialRow), ("K{0}" -f $Row))
7..12 | ForEach-Object `
{
    $DataRange.Borders.Item($_).LineStyle = 1
    $DataRange.Borders.Item($_).Weight = 2
}

$Row++
#############################################################################
}
##############    
$Column = 1
##############
}

} #end

# Выделяем жирным шапку таблицы
$info_comp.Rows.Item(1).Font.Bold = $true
$info_comp.Rows.Item(1).Font.Size = 12
$info_comp.Rows.Item(1).Font.Color = 8210719

# Переменная $UsedRange содержит все занятые ячейки (эквивалентно однократному нажатию Ctrl+A)
$UsedRange = $info_comp.UsedRange
$UsedRange.EntireColumn.AutoFit() | Out-Null
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39506020
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это код рисует таблицу

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
###########################################################################
# Номер начальной строки
$InitialRow = $Row
# Возвращаемся на одну строку назад
#$Row--

$DataRange = $info_comp.Range(("A{0}" -f $InitialRow), ("K{0}" -f $Row))
7..12 | ForEach-Object `
{
    $DataRange.Borders.Item($_).LineStyle = 1
    $DataRange.Borders.Item($_).Weight = 2
}

$Row++
#############################################################################
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39555952
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как на повершеле проиграть звуковой файл на удаленном компьютере?
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39556095
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014Подскажите как на повершеле проиграть звуковой файл на удаленном компьютере?

можно попробовать Powershell remoting
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39556500
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSharperSAS2014Подскажите как на повершеле проиграть звуковой файл на удаленном компьютере?

можно попробовать Powershell remoting

спс пробывать буду я
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39559791
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил написать скрипт, который будет искать в указаном файле строку, которая будет располагаться после строки в которой найдено искомое слово

скрипт:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 cls

$file = "c:\test.syslog"

foreach ($f in $file)
{
$f = (Select-String -path $file -Encoding default -SimpleMatch '9069:' -Context 1)[-3]

$f.Line
$f.Context.PostContext 
}



в результате:
+++ Error code 9069: unable to refreshed dataset 1213416 in Dataset::refreshMe(
lockIt TRUE, isLockForDelete FALSE)
SELECT puid,ptimestamp FROM PPOM_OBJECT WHERE puid = 'wtS9Jaw9nBzB6C' FOR UPDAT
E;

------------------------------------
------------------------------------
но проблема в том, что у меня не получается, чтобы не стопорился поиск на первых найденных строк
а искал все строки в файле

и второе возможно ли файл в который будет залит результат можно будет в нем удалить все кроме wtS9Jaw9nBzB6C

заранее спс
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39559796
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
итоговый результат должен стать
+++ Error code 9069: unable to refreshed dataset 43533416 in Dataset::refreshMe(
lockIt TRUE, isLockForDelete FALSE)
SELECT puid,ptimestamp FROM PPOM_OBJECT WHERE puid = 'wtS9Jaw9nBzB6C' FOR UPDAT
E;
+++ Error code 9069: unable to refreshed dataset 43533416 in Dataset::refreshMe(
lockIt TRUE, isLockForDelete FALSE)
SELECT puid,ptimestamp FROM PPOM_OBJECT WHERE puid = '8fd4d4g4d4f4dgd' FOR UPDAT
E;
+++ Error code 9069: unable to refreshed dataset 43533416 in Dataset::refreshMe(
lockIt TRUE, isLockForDelete FALSE)
SELECT puid,ptimestamp FROM PPOM_OBJECT WHERE puid = 'ewrwrwdffsfs445434f4dgd' FOR UPDAT
E;
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39559942
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: powershell
1.
2.
3.
4.
5.
# зачем нужна эта строка:
foreach ($f in $file)
{
# И опять присваиваем $f
$f = (Select-String -path $file -Encoding default -SimpleMatch '9069:' -Context 1)[-3]



в результате:
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39560255
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как удалить все в файле кроме тех символов которые стоят между ' '
...
Рейтинг: 0 / 0
Програмирование в powerShell
    #39560359
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014а как удалить все в файле кроме тех символов которые стоят между ' '

что-то типа

Код: powershell
1.
(sls "'.*?'" C:\myFile.txt | %{ $_.Matches -join ''}) -join '' | sc  C:\myFile1.txt 
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Програмирование в powerShell
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]