Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Windows PowerShell 1.x/2.x/CTP

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Открыть новую тему     Написать ответ в эту тему

tcg2



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Microsoft Windows PowerShell

 
Обсуждаемые темы

    * Работа с SQL
    * Работа с Visual Studio
    * etc.

 
Помощь по использованию консоли pwsh, а также встроенной в Windows консоли powershell.exe  

Всего записей: 7 | Зарегистр. 20-11-2006 | Отправлено: 19:06 29-11-2006 | Исправлено: YuS 2, 18:04 02-06-2020
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ээээээ.... вопрос можно переформулировать?

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 18:57 17-01-2010
resetsa

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите пожалуйста - это фича такая?
пример
есть код  

Код:
 
$ar_1=@(1,3,4,3)
$ar_2=@(2,0,4,3)
 
function check_arrays($ar_a,$ar_b)
    {
    write "array 1:"
    $ar_a
    write "array 2:"
    $ar_b
    }
     
check_arrays ($ar_1,$ar_2)
 

после выполнения получаем

Код:
 
array 1:
1
3
4
3
2
0
4
3
array 2:
 

 
т.е получается что в функцию параметры передаются массивомю. под именем первого параматра.Что не нашел где это описано
ЗЫ
хотя выяснено, что после вызова функции как check_arrays -ar_1:ar_a -ar_2:ar_b все получается как и ожидалось

Всего записей: 195 | Зарегистр. 11-01-2007 | Отправлено: 17:10 07-03-2010
baribal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь использовал коммандлет Add-Type в Powershell 2.0 для вызова WIN32 API функций?

Всего записей: 612 | Зарегистр. 21-02-2004 | Отправлено: 15:18 09-03-2010
VovaMozg



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
resetsa вызывай  
check_arrays $ar_1 $ar_2
 


----------
В конце концов причина причин оказалась в начале начал...

Всего записей: 761 | Зарегистр. 02-06-2005 | Отправлено: 13:00 03-04-2010
vii



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, это баг или я что-то не так делаю? Сабж только начал осваивать.
Эта строка возвращает список процессов и SessionId для них правильно.
 
Get-Process -computername localhost | Format-Table ProcessName, SessionId
 
А вот эта показывает, что все SessionId равны нулю, хотя имена процессов все верные.
 
Get-Process -computername localhost | Format-Table ProcessName, SessionId
 
Если пытаюсь с удаленной машины получить список процессов, то тоже все SessionId возвращаются нулевые.

Всего записей: 444 | Зарегистр. 21-10-2004 | Отправлено: 00:04 04-05-2010
vii



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Похоже, это таки баг
http://objectmix.com/csharp/250749-remote-process-getprocesses-sessionid.html

Всего записей: 444 | Зарегистр. 21-10-2004 | Отправлено: 17:51 04-05-2010
radchin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Кто-нибудь использовал коммандлет Add-Type в Powershell 2.0 для вызова WIN32 API функций?

 
в документации есть следующий пример. Попробуйте, если это то, что Вам нужно, конечно же

Код:
$signature = @"
[DllImport("user32.dll")]
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
"@
 
$showWindowAsync = Add-Type -memberDefinition $signature -name "Win32ShowWindowAsync" -namespace Win32Functions -passThru
 
# Minimize the Windows PowerShell console
$showWindowAsync::ShowWindowAsync((Get-Process -id $pid).MainWindowHandle, 2)  
 
# Restore it
$showWindowAsync::ShowWindowAsync((Get-Process -id $pid).MainWindowHandle, 4)

Всего записей: 2 | Зарегистр. 23-01-2009 | Отправлено: 18:09 02-08-2010
indgr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день всем.  
   
Задача заклучается в следующем: есть диапозон сети "10.1.1.х" в котором находятся рабочии станции. необходимо отсееть доступные от недоступных ip и проверить на них запущена ли конкретная служба.  
   
есть два скрипта. первый проверяет диапозон сети и записывает статистику в HTML отчет 'stutasuCode "0" доступные ip':  
   
1..254|    
ForEach-Object -Process {Get-WmiObject -Class Win32_PingStatus -Filter ("Address='10.1.1." + $_ + "'") -ComputerName .} |    
Select-Object -Property Address,ResponseTime,StatusCode | #  "out-file -filepath C:\process.txt" "как вариант еще в .txt"  
ConvertTo-html -Property Address,StatusCode  |  
foreach {  
if ($_ -like "*<td>StatusCode = 0</td>*")    
{$_ -replace "<tr>", "<tr bgcolor=green>"}    
else {$_ -replace "<tr>", "<tr bgcolor=green>"}} > c:\ping.html  
   
второй проверяет запущена ли служба:  
   
get-service -name sharedaccess -computername x.x.x.x |  
ConvertTo-Html -Property MachineName,Name,Status,DisplayName |    
foreach {  
if ($_ -like "*<td>Running</td>*")    
{$_ -replace "<tr>", "<tr bgcolor=green>"}    
else {$_ -replace "<tr>", "<tr bgcolor=red>"}} > c:\get-service2.html  
   
подскажите как сделать так что бы из отчета ip с кодом "0" подставлялись сами в -computername  
   
или может кто знает как сделать это все более проще.

Всего записей: 8 | Зарегистр. 03-08-2010 | Отправлено: 13:04 10-08-2010
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Не пойму, это уменя глючит:
Создать папку с символом "[" (открывающая квадратная скобка) могу, например:

Код:
PS> md "[A]"

А вот зайти в неё - хрен:

Код:
PS> cd "[A]"

Более того, если запустить powershell из cmd, когда в нём такая текущая папка, PS устанавливает свою ткущую папку в корень диска C:\.
Из скриптов PS также. Простейший скрипт, содержащий dir *, запущенный из такой папки выводит содержимое C:\

----------
Разум когда-нибудь победит

Всего записей: 3214 | Зарегистр. 09-02-2003 | Отправлено: 15:43 10-08-2010
VovaMozg



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
indgr делаешь второй скрипт в виде процедуры с входным параметром, в качестве параметра будет имя компьютера, а в первом, где статус код 0 вызываешь эту процедуру

----------
В конце концов причина причин оказалась в начале начал...

Всего записей: 761 | Зарегистр. 02-06-2005 | Отправлено: 07:25 13-08-2010
indgr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вся проблема в том что я не знаю как написать это. можешь мне помочь? написать пример?

Всего записей: 8 | Зарегистр. 03-08-2010 | Отправлено: 12:29 13-08-2010
resetsa

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
indgr так попробуй
cd '`[1`]'

Всего записей: 195 | Зарегистр. 11-01-2007 | Отправлено: 22:01 16-08-2010
indgr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это что такое?

Всего записей: 8 | Зарегистр. 03-08-2010 | Отправлено: 12:29 17-08-2010
resetsa

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
indgr
извини, это 2VovaMozg

Всего записей: 195 | Зарегистр. 11-01-2007 | Отправлено: 19:29 18-08-2010
berzSPB



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
уважаемые, нужен простой скрипт, копирующий из папки А в папку Б файлы, сохраняя исходную структуру каталогов папки А, - т. е. рекурсивно, причем нужно копировать не более 5 файлов через каждые 15 минут, -

Всего записей: 89 | Зарегистр. 05-07-2006 | Отправлено: 11:47 01-09-2010
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь так уже изголялся?
Я тут повтыкал и пришел к весьма интересным открытиям: в скриптах PowerShell'а можно ведь по сути реализовывать перехватчики системных событий или нажатия клавиш. Вот только плохо, что по большей части все это требует прав администратора.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 19:07 04-09-2010
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Читая маны по PoSh'у (они у v2.0 на русском), не нашел толковой инфы по созданию пользовательских командлетов. Комрады, если кто сталкивался с сабжем, помогите, пожалуйста, разобраться.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 13:02 05-09-2010
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
resetsa

Цитата:
так попробуй  
cd '`[1`]'

 
Я так понимаю, это для меня было Пропустил...
 
Меня что удивляет, что одна команда (md) прекрасно работает и никакого экранирования специальных символов не требует, а другая, похожая (cd), требует. Какая-то неопределённость в использовании.
Кроме того, если запустить PS из командного файла и при этом в имени папки содержиться символ [, PS реально глючит.

----------
Разум когда-нибудь победит

Всего записей: 3214 | Зарегистр. 09-02-2003 | Отправлено: 21:56 11-09-2010 | Исправлено: Smitis, 21:57 11-09-2010
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis

Цитата:
Кроме того, если запустить PS из командного файла и при этом в имени папки содержиться символ [, PS реально глючит.

Правильно, ведь символы вроде [%{ и дыр и пыр обрабатываются в контексте командного сценария, так что если забить привычный синтаксис, то бишь вместо простого [ указать ^[^ галюнов не наблюдается.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 14:45 12-09-2010
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ComradG
Это понятно. Непонятно, почему они в одинаковом контексте по разному интерпретируются.
И вот ещё пример.
Допустим, есть папка c:\test
Командный файл test1.cmd

Код:
 
@echo off
cd /d c:\test
md aaa
cd aaa
echo. > file1.txt
echo. > file2.txt
echo ====================== CMD ===========================
dir
pause
echo ====================== PS ============================
powershell /c dir
pause
 

Запускаю. Получаю содержимое папки c:\test\aaa два раза
А теперь командный файл test2.cmd

Код:
 
@echo off
cd /d c:\test
md [a]
cd [a]
echo. > file1.txt
echo. > file2.txt
echo ====================== CMD ===========================
dir
pause
echo ====================== PS ============================
powershell /c dir
pause
 

Запускаю. Первый вывод (тот что делаем dir из cmd) показывает содержимое папки c:\test\[a]. Т.е., пока всё нормально, папка создалась, файлы на месте. Но вот PS на этот раз выводит не содержимое текущей папки, а содержимое корня диска C:\
 
Т.е. PS не адекватно воспринимает файлы/папки содержащие, с его точки зрения, специальные символы, которые, тем не менее, разрешённы операционной системой. Заэкранировать их, естественно, невозможно, т.к. напрямую в PS они не используются.
 
Добавлено:
Вру, заэкранировать спецсимволы "можно"! ("можно" в кавычках)
Командный файл test3.cmd

Код:
 
@echo off
cd /d c:\test
md [1]
cd [1]
echo. > file1.txt
echo. > file2.txt
cd ..
md `[1`]
cd `[1`]
echo. > file3.txt
echo. > file4.txt
echo ====================== CMD ===========================
dir
pause
echo ====================== PS ============================
powershell /c dir
pause
 

Т.е., что бы PS нормально работал с папкой [1] пришлось создать ещё и папку `[1`].
Бред.

----------
Разум когда-нибудь победит

Всего записей: 3214 | Зарегистр. 09-02-2003 | Отправлено: 10:47 14-09-2010 | Исправлено: Smitis, 10:51 14-09-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Windows PowerShell 1.x/2.x/CTP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru