Лучший отвечающий
Orchestrator

Вопрос
-
Хочу выполнить элементарный скрипт на powershell в orchestrator 2012 R2 возвращает ошибку:
Connecting to remote server failed with the following error message : Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.
Exception: PSRemotingTransportException
Target site: AsyncResult.EndInvokeStack trace:
at System.Management.Automation.Runspaces.AsyncResult.EndInvoke()
at System.Management.Automation.Runspaces.Internal.RunspacePoolInternal.EndOpen(IAsyncResult asyncResult)
at System.Management.Automation.Runspaces.Internal.RemoteRunspacePoolInternal.Open()
at System.Management.Automation.Runspaces.RunspacePool.Open()
at System.Management.Automation.RemoteRunspace.Open()
at ExecutePS.PSConnectAndExecute.RunspaceConnect(String authMethod, Uri uri, String psSchema, PSCredential psCred, Runspace& psRunspace, Int32 connTimeout, Int32 scriptTimeout, Boolean executeAsync)
at ExecutePS.PSConnectAndExecute.ExecutePS(String authMethod, String uri, String account, String inputPassword, String script, Int32 connTimeout, Int32 scriptTimeout, Boolean executeAsync)
at ExecutePS.ExecutePSScript.Execute(IActivityRequest request, IActivityResponse response)сам скрипт:
Get-Service -ComputerName server01 | select Status, Name, DisplayName | export-Csv -Encoding Unicode -NoTypeInformation -Append -Path 'c:\temp\service.csv'
на Server01 установлен SC Orchestrator и на нем пытаюсь отработать скрипт. Права у пользователя, который забит в поле username на этом сервере "Администратор".
Подгружен модуль в орчестратор с пощью котого пытаюсь реализовать скрипт: Orchestrator Integration Pack for PowerShell Script Execution 1.2
Что я не так делаю?
- Изменено Sergey O O 18 февраля 2014 г. 14:23
- Перемещено Denis DyagilevEditor 18 февраля 2014 г. 18:04
18 февраля 2014 г. 14:17
Ответы
-
- Помечено в качестве ответа Sergey O O 26 февраля 2014 г. 11:49
26 февраля 2014 г. 11:49
Все ответы
-
Попробуйте конструкцию
$Session = New-PSSession -ComputerName server01
Invoke-Command -Session $Session -ScriptBlock {
# Скрипт
}Ну и конечно на server01 должно быть корректно настроено разрешение на удалённый запуск PS-скриптов.
UPD:
Да, ещё попробуйте через "Execute PS Global"
Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.
- Изменено Dismantled 19 февраля 2014 г. 9:40
19 февраля 2014 г. 8:07 -
Попробовал, как вы посоветовали, та же ошибка. Сделал через "Execute PS Global", опять та же ошибка.
PS C:\> Get-ExecutionPolicy
RemoteSigned
PS C:\>- Изменено Sergey O O 19 февраля 2014 г. 15:16
19 февраля 2014 г. 14:58 -
Добавил пользователя в Remote Management Users, хоть он и так администратор на этом сервере. Выполнил 2 команды, которые указаны ниже и сценарий в орчестраторе выполнился. Но файл отсутствует 'c:\temp\service.csv', в который должен выгрузиться список сервисов.
PS C:\Windows\system32> Get-PSSessionConfiguration
Name : microsoft.powershell
PSVersion : 4.0
StartupScript :
RunAsUser :
Permission : BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowedName : microsoft.powershell.workflow
PSVersion : 4.0
StartupScript :
RunAsUser :
Permission : BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowedName : microsoft.powershell32
PSVersion : 4.0
StartupScript :
RunAsUser :
Permission : BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowedName : microsoft.windows.servermanagerworkflows
PSVersion : 3.0
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowedPS C:\Windows\system32> Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI
PS C:\Windows\system32> Enable-PSRemotingСам скрипт:
$Session = New-PSSession -ComputerName server01 Invoke-Command -Session $Session -ScriptBlock {
Get-Service -ComputerName server01 | select Status, Name, DisplayName | export-Csv -Encoding Unicode -NoTypeInformation -Append -Path '\\server\c$\Temp\service.csv'
}
... когда выполнил этот скрипт в powershell run administrator файл есть, когда делаю просто в powershell без run administrator, ошибка. Как это можно исправить , чтоб не понижать User Account Controll?
- Изменено Sergey O O 19 февраля 2014 г. 16:23
19 февраля 2014 г. 15:53 -
SPN для сервисной у\з оркестратора (или той у\з, под которой выполняется скрипт) настроен корректно? WinRM? Есть ошибки в эвентах системы (особенно ошибки Kerberos)?
http://technet.microsoft.com/en-us/magazine/ff700227.aspx
Попробуйте отладку:
Try { # Скрипт } Catch { $_ | Out-File log.txt -Append }
Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.
- Изменено Dismantled 20 февраля 2014 г. 6:57
20 февраля 2014 г. 6:54 -
Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.
- Предложено в качестве ответа Dismantled 20 февраля 2014 г. 7:07
- Отменено предложение в качестве ответа Dismantled 21 февраля 2014 г. 13:09
20 февраля 2014 г. 7:06 -
Попробовал вашу конструкцию:
Try
{
$Session = New-PSSession -ComputerName windows7
Invoke-Command -Session $Session -ScriptBlock {
Get-Service -ComputerName windows7 | select Status, Name, DisplayName | export-Csv -Encoding Unicode -NoTypeInformation -Path 'C:\Temp\service.csv'
}
}
Catch
{
$_ | Out-File c:\temp\log32432.txt -Append
}Вот результат:
Invoke-Command : Cannot validate argument on parameter 'Session'. The argument
is null or empty. Provide an argument that is not null or empty, and then try
the command again.
At line:4 char:25
+ Invoke-Command -Session $Session -ScriptBlock {
+ ~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Invoke-Command],
ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerSh
ell.Commands.InvokeCommandCommand
- Изменено Sergey O O 21 февраля 2014 г. 9:36
21 февраля 2014 г. 9:29 -
Это результат влоге? Или скрипт вообще не исполнился?
А так?
$Session = New-PSSession -ComputerName windows7 Invoke-Command -Session $Session -ScriptBlock { Try { Get-Service -ComputerName windows7 | select Status, Name, DisplayName | export-Csv -Encoding Unicode -NoTypeInformation -Path 'C:\Temp\service.csv' } Catch { $_ | Out-File c:\temp\log32432.txt -Append } }
Естественно, запуск скрипта подразумевается не на машине "windows7".
Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.
21 февраля 2014 г. 10:43 -
Это в логе.
Когда скрипт работает в командной строке и результат есть, файл присутствует со списком сервисов.
Когда скрипт отрабатывает в орчестреторе ошибок нету в орчестраторе. Но результата нету, самого файла со списком сервисов нету. А в логе есть ошибка.
При конструкции "А так?" лога нету и файла с результатом тоже нету.
Credential как-то передать можно в скрипт, те которые забиты в настройках "Execute Powershell Script"?
- Изменено Sergey O O 21 февраля 2014 г. 11:51
21 февраля 2014 г. 11:40 -
Credential как-то передать можно в скрипт, те которые забиты в настройках "Execute Powershell Script"?
Зачем? Оркестратор и так их использует при запуске скрипта.
Connecting to remote server failed with the following error message : Access is denied.
Проверяйте настройки SPN для у\з Оркестратора и службы Windows Remoting. Ссылка выше.
Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.
- Изменено Dismantled 21 февраля 2014 г. 12:22
21 февраля 2014 г. 12:19 -
Здесь написано, что такая конструкция не используется...........
NOTE: You will see that there is no extraneous PSSession or
для меня не понятно как эти spn прописывать.
ScriptBlock code required. There is also no need to string all the lines
of script together separated by ";". Because this is just like a
standard OIS object, you can use Published Data and Variables to make
the script 100% dynamic (I have left the script static so you can see
what I am executing in the example).- Изменено Sergey O O 21 февраля 2014 г. 13:28
21 февраля 2014 г. 12:44 -
Атворизацию Kerberos пробовали ставить в настройках?
Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.
21 февраля 2014 г. 13:30 -
Да пробовал Kerberos.
У меня даже нету в справке ключа -A
C:\Windows\system32>setspn /?
Usage: setspn [modifiers switch] [accountname]
Where "accountname" can be the name or domain\name
of the target computer or user accountEdit Mode Switches:
-R = reset HOST ServicePrincipalName
Usage: setspn -R accountname
-S = add arbitrary SPN after verifying no duplicates exist
Usage: setspn -S SPN accountname
-D = delete arbitrary SPN
Usage: setspn -D SPN accountname
-L = list SPNs registered to target account
Usage: setspn [-L] accountnameEdit Mode Modifiers:
-C = specify that accountname is a computer account
-U = specify that accountname is a user accountNote: -C and -U are exclusive. If neither is specified, the tool
will interpret accountname as a computer name if such a computer
exists, and a user name if it does not.Query Mode Switches:
-Q = query for existence of SPN
Usage: setspn -Q SPN
-X = search for duplicate SPNs
Usage: setspn -XNote: searching for duplicates, especially forestwide, can take
a long period of time and a large amount of memory. -Q will execute
on each target domain/forest. -X will return duplicates that exist
across all targets. SPNs are not required to be unique across forests,
but duplicates can cause authentication issues when authenticating
cross-forest.Query Mode Modifiers:
-P = suppresses progress to the console and can be used when redirecting
output to a file or when used in an unattended script. There will be no
output until the command is complete.
-F = perform queries at the forest, rather than domain level
-T = perform query on the speicified domain or forest (when -F is also used)
Usage: setspn -T domain (switches and other parameters)
"" or * can be used to indicate the current domain or forest.Note: these modifiers can be used with the -S switch in order to specify
where the check for duplicates should be performed before adding the SPN.
Note: -T can be specified multiple times.Examples:
setspn -R daserver1
It will register SPN "HOST/daserver1" and "HOST/{DNS of daserver1}"
setspn -S http/daserver daserver1
It will register SPN "http/daserver" for computer "daserver1"
if no such SPN exists in the domain
setspn -D http/daserver daserver1
It will delete SPN "http/daserver" for computer "daserver1"
setspn -F -S http/daserver daserver1
It will register SPN "http/daserver" for computer "daserver1"
if no such SPN exists in the forest
setspn -U -S http/daserver dauser
It will register SPN "http/daserver" for user account "dauser"
if no such SPN exists in the domain
setspn -T * -T bar -X
It will report all duplicate registration of SPNs in this domain and bar
setspn -T bar -F -Q */daserver
It will find all SPNs of the form */daserver registered in the forest to
which bar belongs21 февраля 2014 г. 13:43 -
А попробуйте выполнение скрипта не на сервере Оркестратора, а на стороне, например, сервера SCSM (если они на разных хостах). Также, через Runbook Designer.
Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.
21 февраля 2014 г. 14:06 -
не знаю после чего, но оно заработало на ПК. И конструкция изначальная:
Get-Service -ComputerName windows7 | select Status, Name, DisplayName | export-Csv -Encoding Unicode -NoTypeInformation -Path 'C:\Temp\service1.csv'
и на 2003 тоже работает.
Но на windows 2012R2 не работает, сил нету уже- Изменено Sergey O O 21 февраля 2014 г. 14:42
21 февраля 2014 г. 14:35 -
Не работает под Вин2012? Или не работает на сервере Оркестратора под Вин2012 в момент отладки ранбука?
Если второе, то ставьте Ранбук Дизайнер на любую другую машину, делайте и отлаживайте ранбук там. Всё должно работать.
Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.
24 февраля 2014 г. 8:05 -
- Помечено в качестве ответа Sergey O O 26 февраля 2014 г. 11:49
26 февраля 2014 г. 11:49