Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» PowerShell

Автор: solstice
Дата сообщения: 12.05.2011 14:36
GooZzzRB

Цитата:
Добрый день. Помогите в задаче.
Нужно написать скрипт на PowerShell, который проверяет на всех рабочих станциях домена, запущен ли заданный процесс и завершает его

Попробуй так:


Код:
cls
$SearchRoot="yourdomain/Computers"
$badpcs = "cmd.exe","notepad.exe"
$Comps = Get-QADComputer -SearchRoot $SearchRoot -ErrorAction SilentlyContinue -IncludedProperties name
foreach ($comp in $Comps)
{
        $name1=$Comp.Name
        $pcs = Get-WmiObject Win32_Process -ComputerName $name1
        $i=0
        do {
            $pc=$pcs | ? {$_.name -eq $badpcs[$i]}
            if ($pc -ne $null) {
                $pcn=$pc.name
                if ($pc.terminate().Returnvalue -eq 0)
                    {"Успешно завершен процесс $pcn на компьютере $name1"}
                else
                    {"Не удалось завершить процесс $pcn на компьютере $name1"}
                $pc=$null
            }
        $i++
        } while ($i -ne $badpcs.count)
}
Автор: legat75
Дата сообщения: 21.05.2011 17:12
legat75
решено:

Код:
$it_line = ((Get-Content -Path $file -TotalCount 1).Substring(4,26))
$it_line=[system.Text.RegularExpressions.Regex]::Replace($it_line,"\W","")
Rename-Item -Verbose -Path $file -NewName $it_line
Автор: spined
Дата сообщения: 17.06.2011 10:17
Подскажите, пожалуйста, есть ли возможность использовать UNC путь в Enter-PSSession и Invoke-Command?

То есть, вот так работает

Код:
PS C:\> dir \\server1\c$\1.txt

Каталог: \\server1\c$
Mode LastWriteTime Length Name
-a--- 24.11.2008 15:18 387 1.txt
Автор: temio
Дата сообщения: 17.06.2011 17:45
spined
Нужно включить CredSSP для мульти-хоп аутентификации
Подробнее тут
Автор: spined
Дата сообщения: 30.06.2011 09:45
temio, спасибо, все понял. Жаль, что winXP и 2003 Server не поддерживают CredSSP.

Столкнулся еще с одной проблемкой - поведение Format-Table в цикле.
Вот пример:

Код:
foreach($s in ("Comp1","Comp2")) {
Test-Connection $s -Count 1 | select Address, ResponseTime
}
Автор: temio
Дата сообщения: 30.06.2011 15:30
spined
XP SP3 поддерживает, включается правкой реестра

А по поводу вывода - можно напрямую скармливать в ft с параметром Property
Test-Connection $s -Count 1 | Format-Table Address, ResponseTime -Autosize
Автор: spined
Дата сообщения: 30.06.2011 17:49
temio, по ссылке ходил, пробовал. Не помогло. Попробую еще раз повнимательней, может что-то не так сделал.

А вывод в ft с параметром Property тоже не работает. Наверное потому что без ft возвращается System.Object, а с ft - System.Array. И наверное PowerShell их как-то по-разному выводит, каждый новый объект на выходе добавляет к таблице, а массив выводит каждый раз как новую таблицу.

Нашел такое решение:

Код:
function test {
foreach($s in ("Comp1","Comp2")) {
Test-Connection $s -Count 1 | select Address, ResponseTime
}
}
test | ft -autosize
Автор: 01MDM
Дата сообщения: 30.06.2011 18:21
spined
Попробуй так:

Код:
$array=@()
foreach($s in ("ya.ru","google.com")) {

$testconnect=Test-Connection $s -Count 1 | select Address, ResponseTime

$hash=@{}
$hash.comp=$s
$hash.address=$testconnect.address
$hash.response=$testconnect.responsetime

$array += new-object psobject -p $hash

}

$array | ft comp,address,response -auto

Автор: rafka111
Дата сообщения: 10.07.2011 13:57
Есть задача.
перевести на англ язык 500 элементов списка Sharepoint, а именно два поля имя и фамилия.
Можно ли это сдлеать с помощью повершелла ? если да, то подскажите куда копать.

Добавлено:
имеестся ввиду транслитеровать два поля списка.
Автор: Freiberufler2
Дата сообщения: 15.07.2011 13:43
2 rafka111 hash table не хочешь попробовать?
Автор: unknownPS1
Дата сообщения: 18.08.2011 15:36
как рыбка об лед ... банальность слишком затянулась - нужно всего лишь заполучить имя (имя, сестра, имя?!) ps1-файла во время выполнения скрипта; полдня перекапывания iNetа что-то результатов не дают; в Windows Shell эта банальность выглядит катастрофически просто %~n0
Автор: jeykey
Дата сообщения: 18.08.2011 19:17
$MyInvocation.MyCommand.Name
Автор: DiZka
Дата сообщения: 18.10.2011 13:17
Подскажите пожалуйста по скрипту.

$arrComputers = get-Content -Path "C:\s\txt\2003.txt"
ForEach($strComputer in $arrComputers)
{
get-wmiobject -Class "win32_TimeZone" -namespace "root\CIMV2" -computername $strComputer | Format-List -property __SERVER, Caption | Out-File -Append "C:\s\txt\Report-2003.txt"
}

Скрипт собирает по списку из файлика временные зоны с машин. Если машина в сети (включена) все хорошо пишется в лог результат. Если машина выключена PS просто в консоль выдает ошибку без назавния компа на котором споткнулся. Хочется чтобы в Report-2003.txt писалось имя компа на котором споткнулся скрипт. Что то типа (server1 - connect fail)
Автор: DiZka
Дата сообщения: 19.10.2011 08:19
Может кому будет полезно решение:


Код: get-Content -Path "C:\s\txt\2003.txt" | Foreach {
    $data = get-wmiobject win32_TimeZone -computername $_ -ErrorAction SilentlyContinue
    if ($data) { "{0} - {1}" -f $data.__Server,$data.Caption}
    else { "$_ - connection fail"}
}
Автор: vertigoavi
Дата сообщения: 02.11.2011 10:34
Помогите, пожалуйста, переписать скрипт

Код: @echo off
for /R %1 %%I in (*.png) do (
if not exist "E:%%~pnxI" (
2>nul mkdir "E:%%~pI"
convert "%%~I" -background black -channel A -combine "E:%%~pnxI"
)
)
Автор: dvasilev
Дата сообщения: 14.11.2011 10:22
Помогите разобраться, пожалуйста:
Имею домен на 2003 контроллере. Раскатал на серваки и рабочие станции Powershell 2.0, создал скрипт под свои задачи, но вот проблема:
Скрипт работает из Powershell ISE и если в cmd написать powershell, тем самым войдя в интерпретатор и запустить файл PS1. Если же в планировщик поместить команду - powershell "d:\script.ps1", то срабатывает он не целиком, а имено не отрабатывают строчки:
$smtp = New-Object net.mail.smtpclient($SmtpServer)
$smtp.Send($EmailFrom, $EmailTo, $Subject, $Body)
На недоменных компьютерах все работает отлично, после ввода их в домен - такая же ерунда.
Execution-policy - remotesigned
Автор: vasili777
Дата сообщения: 06.12.2011 13:46
Немного поправил шапку.


Было:

Оболочки для работы с PowerShell 1.0
*PowerShell Analyzer (релиз, платный)
*PowerShell Analyzer (Последный RC, бесплатный)
*PowerShellIDE для PowerShell (не развивается)
*PowerGUI Build 2.3.0.1503

Стало:

Оболочки для работы с PowerShell
*PowerShell Analyzer (бесплатный)
*PowerShellIDE для PowerShell (не развивается, бесплатный) Заметка: в их новом продукте планируется поддержка PowerShell)
*PowerGUI (бесплатный)


Старая версия шапки: http://pastebin.com/3y5ff9G9
Автор: KapralBel
Дата сообщения: 06.12.2011 13:51
vasili777
Включи, плиз еще это
http://www.powershellinside.com/powershell/asp/download.aspx?utm_source=PowerShellInside&utm_campaign=57e7d047ce-PowerShell_ASP_V3_Released&utm_medium=email

Автор: vasili777
Дата сообщения: 06.12.2011 14:29
KapralBel

Добавил в раздел "Расширение возможностей PowerShell" в новом подразделе "Программы для расширения возможностей PowerShell". Проверьте пожалуйста правильно ли выбрано место расположения в шапке и описание.
Автор: KapralBel
Дата сообщения: 06.12.2011 14:31
Это тоже оболчки
Цитата:
Оболочки для работы с PowerShell

платная и бесплатная

2ю скачал но пока руки не дошли попробовать
Автор: vasili777
Дата сообщения: 06.12.2011 15:18
KapralBel

Исправил.
Автор: Baggurd
Дата сообщения: 27.12.2011 13:15
Что я делаю не так?
Взял скрипт отсюда http://www.howtogeek.com/50187/how-to-create-multiple-users-in-server-2008-with-powershell/

тупо скопировал его
поменял домен
$objOU=[ADSI]“LDAP://OU=abc,DC=contoso,DC=com”
$dataSource=import-csv “users.csv”
foreach($dataRecord in $datasource) {
$cn=$dataRecord.FirstName + ” ” + $dataRecord.LastName
$sAMAccountName=$dataRecord.FirstName + “.” + $dataRecord.LastName
$givenName=$dataRecord.FirstName
$sn=$dataRecord.LastName
$sAMAccountName=$sAMAccountName.ToLower()
$displayName=$sn + “, ” + $givenName
$userPrincipalName=$sAMAccountName + “@contoso.com”
$objUser=$objOU.Create(“user”,”CN=”+$cn)
$objUser.Put(“sAMAccountName”,$sAMAccountName)
$objUser.Put(“userPrincipalName”,$userPrincipalName)
$objUser.Put(“displayName”,$displayName)
$objUser.Put(“givenName”,$givenName)
$objUser.Put(“sn”,$sn)
$objUser.SetInfo()
$objUser.SetPassword(“P@assw0rd”)
$objUser.psbase.InvokeSet(“AccountDisabled”,$false)
$objUser.SetInfo()
}

так выглядит csv
FirstName;LastName
Avis;Flamm
Kurt;Pharris


В результате получаю кучу ошибок

Исключение при вызове "Create" с "2" аргументами: "Был передан недопустимый путь службы каталогов
"
C:\ADscripts\testscript.ps1:11 знак:23
+ $objUser=$objOU.Create <<<< (“user”,”CN=”+$cn)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "Put" с "2" аргументами: "Неопознанная ошибка (Исключение из HRESULT: 0x80004005 (E_FAIL))"
C:\ADscripts\testscript.ps1:15 знак:13
+ $objUser.Put <<<< (“givenName”,$givenName)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "Put" с "2" аргументами: "Неопознанная ошибка (Исключение из HRESULT: 0x80004005 (E_FAIL))"
C:\ADscripts\testscript.ps1:16 знак:13
+ $objUser.Put <<<< (“sn”,$sn)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Указан недопустимый dn-синтаксис. (Исключение из HRESULT: 0x80072032)"
C:\ADscripts\testscript.ps1:17 знак:17
+ $objUser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetPassword" с "1" аргументами: "Указан недопустимый dn-синтаксис. (Исключение из HRESULT: 0x80072032)"
C:\ADscripts\testscript.ps1:18 знак:21
+ $objUser.SetPassword <<<< (“P@assw0rd”)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "InvokeSet" с "2" аргументами: "Свойства службы каталогов не могут быть найдены в кэше.
"
C:\ADscripts\testscript.ps1:19 знак:26
+ $objUser.psbase.InvokeSet <<<< (“AccountDisabled”,$false)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodTargetInvocation

Исключение при вызове "SetInfo" с "0" аргументами: "Указан недопустимый dn-синтаксис. (Исключение из HRESULT: 0x80072032)"
C:\ADscripts\testscript.ps1:20 знак:17
+ $objUser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "Create" с "2" аргументами: "Был передан недопустимый путь службы каталогов
"
C:\ADscripts\testscript.ps1:11 знак:23
+ $objUser=$objOU.Create <<<< (“user”,”CN=”+$cn)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "Put" с "2" аргументами: "Неопознанная ошибка (Исключение из HRESULT: 0x80004005 (E_FAIL))"
C:\ADscripts\testscript.ps1:15 знак:13
+ $objUser.Put <<<< (“givenName”,$givenName)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "Put" с "2" аргументами: "Неопознанная ошибка (Исключение из HRESULT: 0x80004005 (E_FAIL))"
C:\ADscripts\testscript.ps1:16 знак:13
+ $objUser.Put <<<< (“sn”,$sn)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetInfo" с "0" аргументами: "Указан недопустимый dn-синтаксис. (Исключение из HRESULT: 0x80072032)"
C:\ADscripts\testscript.ps1:17 знак:17
+ $objUser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "SetPassword" с "1" аргументами: "Указан недопустимый dn-синтаксис. (Исключение из HRESULT: 0x80072032)"
C:\ADscripts\testscript.ps1:18 знак:21
+ $objUser.SetPassword <<<< (“P@assw0rd”)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Исключение при вызове "InvokeSet" с "2" аргументами: "Свойства службы каталогов не могут быть найдены в кэше.
"
C:\ADscripts\testscript.ps1:19 знак:26
+ $objUser.psbase.InvokeSet <<<< (“AccountDisabled”,$false)
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodTargetInvocation

Исключение при вызове "SetInfo" с "0" аргументами: "Указан недопустимый dn-синтаксис. (Исключение из HRESULT: 0x80072032)"
C:\ADscripts\testscript.ps1:20 знак:17
+ $objUser.SetInfo <<<< ()
+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI
Автор: korggrodno
Дата сообщения: 19.01.2012 13:49
подскажите как можно найболее оптимально получить список дисков такого то компьютера в сети. Нынче делаю так http://www.everfall.com/paste/id.php?9tvk54zs52se . Но этот скрипт уж учень туповат. Мот есть готовая какая утилитка консольная. Или как нибудь по другому переписать?
Автор: Scaramanga
Дата сообщения: 31.01.2012 08:32

Цитата:
Что я делаю не так?



Цитата:
Был передан недопустимый путь службы каталогов


Видимо нет доступа к КД по LDAP у вас
Автор: tashkent
Дата сообщения: 02.02.2012 18:26
Други, не силен в программировании, потому нужна ваша помощь. Нужно провести некую инвентаризацию компов в домене. Права админа на всех компах есть. Не админ домена. Есть 2 подсети - 192.168.0.0/24 и 192.168.1.0/24. Все компы WINXP. Требуется:

1. Именно по IP определить доступность компа в сети
2. Узнать по IP имя компа
3. Узнать кто владелец компа (для кого инсталлировался)
4. Кто в данный момент залогинен в системе
5. По каждому компу вывести инфу в общий файл в формате ("Имя_компа";"IP";"Владелец";"Кто_залогинен")

Скрипт достаточно простой для знающего человека. Спасибо тому, кто поможет в этом деле.
Автор: Oldster
Дата сообщения: 02.02.2012 18:45
tashkent

Цитата:
Все компы WINXP

Боюсь не по теме обратился, на XP по умолчанию нет PowerShell, если только сам не ставил. Попробуй тут спросить.
А если все таки установлен везде PowerShell, то можно накидать скрипт.
Автор: tashkent
Дата сообщения: 02.02.2012 18:58
Oldster
На всех компах стоит PSh. Потому и обратил взор на него. Пасиб, почитаю там тоже.
Автор: Oldster
Дата сообщения: 03.02.2012 14:14
tashkent
почитай по запуску скриптов на удаленных компах, думаю это то, что надо.
Автор: Freiberufler2
Дата сообщения: 03.02.2012 15:31
По Remoting из свеженького можно поискать по автору Ravikanth Chaganti
""Learn the basics of PowerShell 2.0 remoting, methods of remoting and how to use remoting to manage systems in a datacenter. ""
Автор: tashkent
Дата сообщения: 03.02.2012 20:06
Oldster
Да уже кучу всякого набрал Скрипт написал по своим требованиям. Не красивый по стилю, но главное результат выдает какой мне надо. А щас вот попутно наполеоновские планы появились по модернизации и дальнейшему использованию его. Тут уж dsquery со всем набором пришлось подтянуть

Страницы: 123456789101112131415161718192021222324

Предыдущая тема: Не понятная проблема с видеокартой.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.