αžαŸ’αžšαž‘αž”αŸ‹αžαž˜αŸ’αž›αŸƒαž–αžΈ powershell invoke-command αž‘αŸ…αž—αŸ’αž“αžΆαž€αŸ‹αž„αžΆαžš SQL Server

αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ MS-SQL αž‡αžΆαž…αŸ’αžšαžΎαž“ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαž·αž€αŸ’αžŸαžΆαž’αŸ†αž–αžΈαž™αž“αŸ’αžαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αžαž˜αŸ’αž›αŸƒαž“αŸ…αž€αŸ’αž“αž»αž„ Powershell αž’αŸ†αž‘αž»αž„αž–αŸαž›αž€αžΆαžšαž αŸ…αž–αžΈαž…αž˜αŸ’αž„αžΆαž™ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž€αŸ†αž–αž»αž„αžŸαžšαžŸαŸαžšαž€αžΆαžšαžšαŸ†αž›αžΉαž€αžŠαž›αŸ‹αžαŸ’αž›αž½αž“αžαŸ’αž‰αž»αŸ†αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αžœαžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαŸ” αž‘αŸ…αž’αŸ’αž“αž€αž•αŸ’αžŸαŸαž„αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŸαžΌαž˜αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŸαžΆαž˜αž‰αŸ’αž‰ αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ–

$exitcode = $args[0]
Write-Host 'Out to host.'
Write-Output 'Out to output.'
Write-Host ('ExitCode: ' + $exitcode)
Write-Output $exitcode
$host.SetShouldExit($exitcode)

αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αŸ’αžšαžΎαž―αž€αžŸαžΆαžš CMD αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αž·αž“αž”αž‰αŸ’αž…αžΌαž›αžœαžΆαžšαžΆαž›αŸ‹αž–αŸαž›αž‘αŸαŸ–

@Echo OFF
PowerShell .TestOutput1.ps1 1
ECHO ERRORLEVEL=%ERRORLEVEL%

αž“αŸ…αž›αžΎαž’αŸαž€αŸ’αžšαž„αŸ‹αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜:

Out to host.
Out to output.
ExitCode: 1
1
ERRORLEVEL=1


αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαžΌαž…αž‚αŸ’αž“αžΆαžαžΆαž˜αžšαž™αŸˆ WSMAN (αž–αžΈαž…αž˜αŸ’αž„αžΆαž™)αŸ–

Invoke-Command -ComputerName . -ScriptBlock { &'D:sqlagentTestOutput1.ps1' $args[0] } -ArgumentList $args[0]

αž αžΎαž™αž“αŸαŸ‡αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αŸ–

Out to host.
Out to output.
ExitCode: 2
2
ERRORLEVEL=0

αž›αŸ’αž’αžŽαžΆαžŸαŸ‹ Errorlevel αž”αžΆαž“αž”αžΆαžαŸ‹αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž˜αž½αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αžαŸ’αžšαžΌαžœαž‘αž‘αž½αž›αž”αžΆαž“αžαž˜αŸ’αž›αŸƒαž–αžΈαžŸαŸ’αž‚αŸ’αžšαžΈαž”! αžαŸ„αŸ‡αžŸαžΆαž€αž›αŸ’αž”αž„αž€αžΆαžšαžšαž…αž“αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

$res=Invoke-Command -ComputerName . -ScriptBlock { &'D:sqlagentTestOutput1.ps1' $args[0] } -ArgumentList $args[0]

αž“αŸαŸ‡αž€αžΆαž“αŸ‹αžαŸ‚αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαŸ” αžŸαžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ Output αž”αžΆαž“αž”αžΆαžαŸ‹αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž˜αž½αž™αŸ–

Out to host.
ExitCode: 2
ERRORLEVEL=0

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž€αŸ’αž“αž»αž„αž“αžΆαž˜αž‡αžΆαž€αžΆαžšαž”αŸ†αž”αŸ’αž›αŸ‚αž„αžŸαžΆαžšαž‡αžΆαž’αž€αŸ’αžŸαžš αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžš Powershell αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžš Write-Output αž¬αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž€αž“αŸ’αžŸαŸ„αž˜αž˜αž½αž™αžŠαŸ„αž™αž˜αž·αž“αž€αŸ†αžŽαžαŸ‹αžœαžΆαž‘αŸ…αž’αžαŸαžšαžŽαžΆαž˜αž½αž™ (αž αžΎαž™αž“αŸαŸ‡αž”αž„αŸ’αž€αž”αŸ‹αž“αŸαž™αž›αž‘αŸ’αž’αž•αž›αž‘αŸ…αž†αžΆαž“αŸ‚αž› Output) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αŸαžŠαŸ„αž™αŸ” αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž›αžΎαž’αŸαž€αŸ’αžšαž„αŸ‹αž‘αŸ! αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž•αž›αžœαž·αž”αžΆαž€αž“αŸƒαžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž”αŸ†αž–αž„αŸ‹ powershell - αž˜αž»αžαž„αžΆαžšαž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“ Output pipeline αžšαž”αžŸαŸ‹αžœαžΆ αž’αžΆαžšαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆ αž αžΎαž™αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž˜αž»αžαž„αžΆαžš αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžαŸ’αžšαž‘αž”αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αžαž˜αŸ’αž›αŸƒαžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ…αžŠαžΌαž…αž‚αŸ’αž“αžΆ αž”αŸ†αž–αž„αŸ‹αžŠαŸ‚αž›αž‡αžΆαž’αžΆαžαž»αž…αž»αž„αž€αŸ’αžšαŸ„αž™ αž αžΎαž™αž•αŸ’αž‘αŸαžšαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‘αŸ…αž˜αž»αžαž„αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž αžΆαž‰ αžŸαžΌαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ–

Function Write-Log {
  Param( [Parameter(Mandatory=$false, ValueFromPipeline=$true)] [String[]] $OutString = "`r`n" )
  Write-Output ("Function: "+$OutString)
  Return "ReturnValue"
}
Write-Output ("Main: "+"ParameterValue")
$res = Write-Log "ParameterValue"
$res.GetType()
$res.Length
$res | Foreach-Object { Write-Host ("Main: "+$_) }

αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž›αž‘αŸ’αž’αž•αž›αŸ–

Main: ParameterValue

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array
2
Main: Function: ParameterValue
Main: ReturnValue

αž˜αž»αžαž„αžΆαžšαž…αž˜αŸ’αž”αž„ (αžαž½αžŸαŸ’αž‚αŸ’αžšαžΈαž”) αž€αŸαž˜αžΆαž“ Output pipeline αžšαž”αžŸαŸ‹αžœαžΆαžŠαŸ‚αžš αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš script αžŠαŸ†αž”αžΌαž„αž–αžΈ CMD αž”αŸ’αžαžΌαžšαž‘αž·αžŸ output αž‘αŸ…αž‡αžΆ fileαŸ”

PowerShell .TestOutput1.ps1 1 > TestOutput1.txt

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰αž“αŸ…αž›αžΎαž’αŸαž€αŸ’αžšαž„αŸ‹

ERRORLEVEL=1

αž“αž·αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš

Out to host.
Out to output.
ExitCode: 1
1

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž’αŸ’αžœαžΎαž€αžΆαžšαž αŸ…αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž–αžΈ powershell

PS D:sqlagent> .TestOutput1.ps1 1 > TestOutput1.txt

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαž“αžΉαž„αž“αŸ…αž›αžΎαž’αŸαž€αŸ’αžšαž„αŸ‹

Out to host.
ExitCode: 1

αž“αž·αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš

Out to output.
1

αžœαžΆαž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚ CMD αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš powershell αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž›αžΆαž™αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž–αžΈαžš (Host αž“αž·αž„ Output) αž αžΎαž™αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž–αž½αž€αž‚αŸαž‘αŸ… CMD αžŠαŸ‚αž›αž•αŸ’αž‰αžΎαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αžœαžΆαž”αžΆαž“αž‘αž‘αž½αž›αž‘αŸ…αž―αž€αžŸαžΆαžšαž˜αž½αž™ αž αžΎαž™αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΈ powershell αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž›αžΆαž™αž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸαŸ‡αž˜αžΆαž“αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸ’αž“αžΆ αž αžΎαž™αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαž”αŸ’αžαžΌαžšαž‘αž·αžŸαž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž›αž‘αŸ’αž’αž•αž›αžαŸ‚αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αžαŸ’αžšαž›αž”αŸ‹αž‘αŸ…αž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŸαŸ†αžαžΆαž“αŸ‹ αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž…αž„αž…αžΆαŸ†αžαžΆ αž‚αŸ†αžšαžΌαžœαžαŸ’αžαž» .NET αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ powershell αž˜αžΆαž“αž™αŸ‰αžΆαž„αž–αŸαž‰αž›αŸαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž˜αž½αž™ (αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž˜αž½αž™) αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαžŠαž–αžΈαž…αž˜αŸ’αž„αžΆαž™αžαžΆαž˜αžšαž™αŸˆ WSMAN αž€αžΆαžšαž•αŸ’αž‘αŸαžšαžœαžαŸ’αžαž»αž€αžΎαžαž‘αžΎαž„αžαžΆαž˜αžšαž™αŸˆ XML serialization αžŠαŸ‚αž›αž“αžΆαŸ†αž˜αž€αž“αžΌαžœαž…αŸ†αžŽαžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž”αž“αŸ’αžαŸ‚αž˜αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αžαŸ„αŸ‡αž”αž“αŸ’αžαž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ„αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

$res=Invoke-Command -ComputerName . -ScriptBlock { &'D:sqlagentTestOutput1.ps1' $args[0] } -ArgumentList $args[0]
$res.GetType()
$host.SetShouldExit($res)

αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž˜αžΆαž“αž“αŸ…αž›αžΎαž’αŸαž€αŸ’αžšαž„αŸ‹αŸ–

Out to host.

ExitCode: 3

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array
НС удаСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ "exitCode", со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ: "System.Object[]", для "SetShouldExit" Π² Ρ‚ΠΈΠΏ "System.Int32": "НС удаСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "System.Object[]" Ρ‚ΠΈΠΏΠ° "System.Object[]" Π² Ρ‚ΠΈΠΏ "System
.Int32"."
D:sqlagentTestOutput3.ps1:3 Π·Π½Π°ΠΊ:1
+ $host.SetShouldExit($res)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument

ERRORLEVEL=0

αž›αž‘αŸ’αž’αž•αž›αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™! αžœαžΆαž˜αžΆαž“αž“αŸαž™αžαžΆαž“αŸ…αž–αŸαž›αž αŸ… Invoke-Command αž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αž”αŸ†αž–αž„αŸ‹αž‘αŸ…αž‡αžΆαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž–αžΈαžš (αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž„αž‘αž·αž“αŸ’αž“αž•αž›) αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž™αžΎαž„αž“αžΌαžœαž€αŸ’αžαžΈαžŸαž„αŸ’αžƒαžΉαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž‡αŸ„αž‚αž‡αŸαž™αŸ” αžαŸ„αŸ‡αž–αŸ’αž™αžΆαž™αžΆαž˜αž‘αž»αž€αžαž˜αŸ’αž›αŸƒαžαŸ‚αž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„ Output stream αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš script αžŠαŸ†αž”αžΌαž„αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž™αžΎαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΈαž…αž˜αŸ’αž„αžΆαž™αŸ–

$exitcode = $args[0]
Write-Host 'Out to host.'
#Write-Output 'Out to output.'
Write-Host ('ExitCode: ' + $exitcode)
Write-Output $exitcode
$host.SetShouldExit($exitcode)

αžαŸ„αŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαžŠαžΌαž…αž“αŸαŸ‡αŸ–

$res=Invoke-Command -ComputerName . -ScriptBlock { &'D:sqlagentTestOutput1.ps1' $args[0] } -ArgumentList $args[0]
$host.SetShouldExit($res)

αž αžΎαž™... αž”αžΆαž‘ αžœαžΆαž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž‡αžΆαž‡αŸαž™αž‡αŸ†αž“αŸ‡!

Out to host.
ExitCode: 4

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Int32                                    System.ValueType


ERRORLEVEL=4

αž…αžΌαžšαž™αžΎαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αžαžΆαžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„αŸ” αž™αžΎαž„αž”αžΆαž“αž αŸ… powershell αž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€ αžŠαŸ‚αž›αž“αŸ…αž€αŸ’αž“αž»αž„αžœαŸαž“αž‚αŸαž αŸ…αžαžΆ powershell αž“αŸ…αž›αžΎαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž–αžΈαž…αž˜αŸ’αž„αžΆαž™ αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ” αžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž–αžΈαžš (αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž„αž‘αž·αž“αŸ’αž“αž•αž›) αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž–αžΈαž…αž˜αŸ’αž„αžΆαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ€αžšαŸ€αž› αž“αž·αž„αž”αž‰αŸ’αž‡αžΌαž“αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž›αž‘αŸ’αž’αž•αž›αžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαžŒαžΈαž‡αžΈαžαž›αžαŸ‚αž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž˜αŸ’αž›αŸ‚αž„αž‘αŸ…αž‡αžΆαž”αŸ’αžšαž—αŸαž‘ Int32 αž αžΎαž™αžŠαžΌαž…αž“αŸ„αŸ‡αž”αžΆαž“αž†αŸ’αž›αž„αž‘αŸ…αž•αŸ’αž“αŸ‚αž€αž‘αž‘αž½αž› αž αžΎαž™αž•αŸ’αž“αŸ‚αž€αž‘αž‘αž½αž›αž”αžΆαž“αž”αŸ’αžšαžΎαžœαžΆαŸ” αž‡αžΆαž›αŸαžαž€αžΌαžŠαž…αŸαž‰αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž αŸ…αž…αžΌαž› powershell αŸ”

αž αžΎαž™αž‡αžΆαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™ αž…αžΌαžšαž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž„αžΆαžšαž˜αž½αž™αž‡αŸ†αž αžΆαž“αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ SQL αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ’αžšαž—αŸαž‘ "αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš (cmdexec)" αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αžαŸ’αžαž”αž‘αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

PowerShell -NonInteractive -NoProfile "$res=Invoke-Command -ComputerName BACKUPSERVER -ConfigurationName SQLAgent -ScriptBlock {&'D:sqlagentTestOutput1.ps1' 6}; $host.SetShouldExit($res)"

αž αžΌαžšαŸ‰αžΆαž™! αž€αž·αž…αŸ’αž…αž€αžΆαžšαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αž˜αžΆαž“αž€αŸ†αž αž»αžŸ αž’αžαŸ’αžαž”αž‘αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αŸ–

ВыполняСтся ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: DOMAINagentuser. Out to host. ExitCode: 6.  Код Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСсса 6.  Π¨Π°Π³ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΡΡ с ошибкой.

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“:

  • αž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαž”αŸ’αžšαžΎ Write-Output αž“αž·αž„αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αž“αŸ’αžŸαŸ„αž˜αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž…αžΆαžαŸ‹αžαžΆαŸ†αž„αŸ” αžαŸ’αžšαžΌαžœβ€‹αžŠαžΉαž„β€‹αžαžΆβ€‹αž€αžΆαžšβ€‹αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈβ€‹αž€αžΌαžŠβ€‹αž“αŸαŸ‡β€‹αž‘αŸ…β€‹αž€αž“αŸ’αž›αŸ‚αž„β€‹αž•αŸ’αžŸαŸαž„β€‹αž€αŸ’αž“αž»αž„β€‹αžŸαŸ’αž‚αŸ’αžšαžΈαž”β€‹αž’αžΆαž…β€‹αž“αžΉαž„β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž›αž‘αŸ’αž’αž•αž›β€‹αžŠαŸ‚αž›β€‹αž˜αž·αž“β€‹αž“αžΉαž€β€‹αžŸαŸ’αž˜αžΆαž“β€‹αžŠαž›αŸ‹αŸ”
  • αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ†αžŽαž„αž˜αž·αž“αž˜αŸ‚αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αžŠαŸƒ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž™αž“αŸ’αžαž€αžΆαžšαžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž‡αžΆαž–αž·αžŸαŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž αŸ…αž–αžΈαž…αž˜αŸ’αž„αžΆαž™αžαžΆαž˜αžšαž™αŸˆ WINRM αž’αŸ’αžœαžΎαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸ†αž αž»αžŸαžŠαŸ„αž™αžŠαŸƒαžαžΆαž˜αžšαž™αŸˆ Try/Catch αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΆαž€αžŠαžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžŽαžΆαž˜αž½αž™ αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž“αŸαŸ‡αž•αŸ’αž‰αžΎαžαž˜αŸ’αž›αŸƒαž”αŸ’αžšαž—αŸαž‘αž”αž»αž–αŸ’αžœαž€αžΆαž›αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ” . αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž‘αž‘αž½αž›αž”αžΆαž“αž€αž˜αŸ’αžšαž·αžαž€αŸ†αž αž»αžŸαž”αž»αžšαžΆαžŽ αžαž˜αŸ’αž›αŸƒαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαžαŸ‚αž‡αžΆαž›αŸαžαŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹