āĻĒāĻžāĻ“āϝāĻŧāĻžāϰāĻļ⧇āϞ āχāύāĻ­ā§‹āĻ•-āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĨ⧇āϕ⧇ SQL āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻāĻœā§‡āĻ¨ā§āĻŸā§‡ āĻāĻ•āϟāĻŋ āĻŽāĻžāύ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāĻšā§āϛ⧇

āĻāĻ•āĻžāϧāĻŋāĻ• 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]

āĻāϟāĻŋ āφāϰāĻ“ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧāĨ¤ āφāωāϟāĻĒ⧁āĻŸā§‡ āĻŦāĻžāĻ°ā§āϤāĻžāϟāĻŋ āϕ⧋āĻĨāĻžāĻ“ āĻ…āĻĻ⧃āĻļā§āϝ āĻšāϝāĻŧ⧇ āϗ⧇āϛ⧇:

Out to host.
ExitCode: 2
ERRORLEVEL=0

āĻāĻ–āύ, āĻāĻ•āϟāĻŋ āϞāĻŋāϰāĻŋāĻ•ā§āϝāĻžāϞ āĻĄāĻŋāĻ—ā§āϰ⧇āĻļāύ āĻšāĻŋāϏāĻžāĻŦ⧇, āφāĻŽāĻŋ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰāĻŦ āϝ⧇ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰāĻļ⧇āϞ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻ­āĻŋāϤāϰ⧇ āφāĻĒāύāĻŋ āϞāĻŋāϖ⧁āύ-āφāωāϟāĻĒ⧁āϟ āĻŦāĻž āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋ āϞāĻŋāϖ⧁āύ āϝ⧇āϟāĻŋ āϕ⧋āύ⧋ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻŦāϰāĻžāĻĻā§āĻĻ āύāĻž āĻ•āϰ⧇ (āĻāĻŦāĻ‚ āĻāϟāĻŋ āφāωāϟāĻĒ⧁āϟ āĻšā§āϝāĻžāύ⧇āϞ⧇ āφāωāϟāĻĒ⧁āϟāϕ⧇ āĻŦā§‹āĻāĻžāϝāĻŧ), āϤāĻžāϰāĻĒāϰāĻ“ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āϚāĻžāϞāĻžāύ⧋āϰ āϏāĻŽāϝāĻŧāĻ“, āĻ•āĻŋāϛ⧁āχ āĻĒāĻ°ā§āĻĻāĻžāϝāĻŧ āĻĒā§āϰāĻĻāĻ°ā§āĻļāĻŋāϤ āĻšāĻŦ⧇ āύāĻž! āĻāϟāĻŋ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰāĻļ⧇āϞ āĻĒāĻžāχāĻĒāϞāĻžāχāύ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ⧇āϰ āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāĻŖāϤāĻŋ - āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āφāωāϟāĻĒ⧁āϟ āĻĒāĻžāχāĻĒāϞāĻžāχāύ āĻĨāĻžāϕ⧇, āĻāϟāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāϰ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻāϤ⧇ āϝāĻž āĻ•āĻŋāϛ⧁ āϝāĻžāϝāĻŧ āϤāĻž āĻĢāĻžāĻ‚āĻļāύ āϏāĻŽā§āĻĒāĻžāĻĻāύ⧇āϰ āĻĢāϞāĻžāĻĢāϞ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāĻŋāϤ āĻšāϝāĻŧ, āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ…āĻĒāĻžāϰ⧇āϟāϰ āĻāĻ•āχ āϏāĻžāĻĨ⧇ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻŽāĻžāύ āϝ⧋āĻ— āĻ•āϰ⧇ āĻĒāĻžāχāĻĒāϞāĻžāχāύ āĻļ⧇āώ āωāĻĒāĻžāĻĻāĻžāύ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻāĻŦāĻ‚ āĻ•āϞāĻŋāĻ‚ āĻĢāĻžāĻ‚āĻļāύ⧇ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧇āĨ¤ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāϏ⧁āύ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϟāĻŋ āϚāĻžāϞāĻžāχ:

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

āĻĒā§āϰāϧāĻžāύ āĻĢāĻžāĻ‚āĻļāύ (āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻŦāĻĄāĻŋ) āĻāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āφāωāϟāĻĒ⧁āϟ āĻĒāĻžāχāĻĒāϞāĻžāχāύ āϰāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āφāĻŽāϰāĻž āϏāĻŋāĻāĻŽāĻĄāĻŋ āĻĨ⧇āϕ⧇ āĻĒā§āϰāĻĨāĻŽ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϚāĻžāϞāĻžāχ, āφāωāϟāĻĒ⧁āϟāϟāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ⧇ āĻĒ⧁āύāσāύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇,

PowerShell .TestOutput1.ps1 1 > TestOutput1.txt

āϤāĻžāϰāĻĒāϰ āφāĻŽāϰāĻž āĻĒāĻ°ā§āĻĻāĻžāϝāĻŧ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ

ERRORLEVEL=1

āĻāĻŦāĻ‚ āĻĢāĻžāχāϞ⧇

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

āϝāĻĻāĻŋ āφāĻŽāϰāĻž āĻĒāĻžāĻ“āϝāĻŧāĻžāϰāĻļ⧇āϞ āĻĨ⧇āϕ⧇ āĻ…āύ⧁āϰ⧂āĻĒ āĻ•āϞ āĻ•āϰāĻŋ

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

āϤāĻžāϰāĻĒāϰ āĻāϟāĻŋ āĻĒāĻ°ā§āĻĻāĻžāϝāĻŧ āĻšāĻŦ⧇

Out to host.
ExitCode: 1

āĻāĻŦāĻ‚ āĻĢāĻžāχāϞ⧇

Out to output.
1

āĻāϟāĻŋ āϘāĻŸā§‡ āĻ•āĻžāϰāĻŖ āϏāĻŋāĻāĻŽāĻĄāĻŋ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰāĻļ⧇āϞ āϚāĻžāϞ⧁ āĻ•āϰ⧇, āϝāĻž āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀āϰ āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇ āĻĻ⧁āϟāĻŋ āĻĨā§āϰ⧇āĻĄ (āĻšā§‹āĻ¸ā§āϟ āĻāĻŦāĻ‚ āφāωāϟāĻĒ⧁āϟ) āĻŽāĻŋāĻļā§āϰāĻŋāϤ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϏ⧇āϗ⧁āϞāĻŋ āϏāĻŋāĻāĻŽāĻĄāĻŋāϕ⧇ āĻĻ⧇āϝāĻŧ, āϝāĻž āĻāϟāĻŋ āĻĒā§āϰāĻžāĻĒā§āϤ āϏāĻŽāĻ¸ā§āϤ āĻ•āĻŋāϛ⧁ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ⧇ āĻĒāĻžāĻ āĻžāϝāĻŧ āĻāĻŦāĻ‚ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰāĻļ⧇āϞ āĻĨ⧇āϕ⧇ āϚāĻžāϞ⧁ āĻ•āϰāĻžāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āĻāχ āĻĻ⧁āϟāĻŋ āĻĨā§āϰ⧇āĻĄ āφāϞāĻžāĻĻāĻžāĻ­āĻžāĻŦ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ, āĻāĻŦāĻ‚ āĻĒā§āϰāϤ⧀āĻ• āĻĒ⧁āύāσāύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āφāωāϟāĻĒ⧁āϟāϕ⧇ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰ⧇āĨ¤

āĻŽā§‚āϞ āĻŦāĻŋāώāϝāĻŧ⧇ āĻĢāĻŋāϰ⧇ āφāϏāĻž, āφāĻŽāĻžāĻĻ⧇āϰ āĻŽāύ⧇ āϰāĻžāĻ–āĻž āϝāĻžāĻ• āϝ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰāĻļ⧇āϞ⧇āϰ āĻ­āĻŋāϤāϰ⧇ .NET āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻŽāĻĄā§‡āϞāϟāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ (āĻāĻ•āϟāĻŋ āĻ“āĻāϏ), āϝāĻ–āύ WSMAN-āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀āĻ­āĻžāĻŦ⧇ āϕ⧋āĻĄ āϚāĻžāϞāĻžāύ⧋ āĻšāϝāĻŧ, āϤāĻ–āύ XML āϏāĻŋāϰāĻŋāϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻŦāĻ¸ā§āϤ⧁āϰ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ āϘāĻŸā§‡, āϝāĻž āĻ…āύ⧇āĻ• āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āφāĻ—ā§āϰāĻš āύāĻŋāϝāĻŧ⧇ āφāϏ⧇āĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āĻ—āĻŦ⧇āώāĻŖāĻžāϝāĻŧāĨ¤ āφāϏ⧁āύ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϕ⧋āĻĄāϟāĻŋ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒāϰ⧀āĻ•ā§āώāĻžāϗ⧁āϞāĻŋ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāχ:

$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

āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ āĻĢāϞāĻžāĻĢāϞ! āĻāϰ āĻŽāĻžāύ⧇ āĻšāϞ āχāύāĻ­ā§‹āĻ•-āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻĒāĻžāχāĻĒāϞāĻžāχāύāϗ⧁āϞāĻŋāϰ āĻĻ⧁āϟāĻŋ āĻĨā§āϰ⧇āĻĄā§‡ (āĻšā§‹āĻ¸ā§āϟ āĻāĻŦāĻ‚ āφāωāϟāĻĒ⧁āϟ) āĻŦāĻŋāĻ­āĻžāϜāύ āĻŦāϜāĻžāϝāĻŧ āϰāĻžāĻ–āĻž āĻšāϝāĻŧ, āϝāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻžāĻĢāĻ˛ā§āϝ⧇āϰ āφāĻļāĻž āĻĻ⧇āϝāĻŧāĨ¤ āφāϏ⧁āύ āφāωāϟāĻĒ⧁āϟ āĻ¸ā§āĻŸā§āϰ⧀āĻŽā§‡ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āĻŽāĻžāύ āϛ⧇āĻĄāĻŧ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋ, āϝāĻžāϰ āϜāĻ¨ā§āϝ āφāĻŽāϰāĻž āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀āĻ­āĻžāĻŦ⧇ āϚāĻžāϞāĻžāύ⧋ āĻĒā§āϰāĻĨāĻŽ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϟāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻŦ:

$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

āĻ•āĻŋ āϘāĻŸā§‡āϛ⧇ āϤāĻž āĻŦ⧇āϰ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻž āϝāĻžāĻ•āĨ¤ āφāĻŽāϰāĻž āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰāĻļ⧇āϞāϕ⧇ āĻ•āϞ āĻ•āϰ⧇āĻ›āĻŋāϞāĻžāĻŽ, āϝāĻž āϰāĻŋāĻŽā§‹āϟ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰāĻļ⧇āϞāϕ⧇ āĻ•āϞ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϏ⧇āĻ–āĻžāύ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϟāĻŋ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰ⧇āĨ¤ āϰāĻŋāĻŽā§‹āϟ āĻŽā§‡āĻļāĻŋāύ āĻĨ⧇āϕ⧇ āĻĻ⧁āϟāĻŋ āĻ¸ā§āĻŸā§āϰ⧀āĻŽ (āĻšā§‹āĻ¸ā§āϟ āĻāĻŦāĻ‚ āφāωāϟāĻĒ⧁āϟ) āϏāĻŋāϰāĻŋāϝāĻŧāĻžāϞāĻžāχāϜ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āĻāĻŦāĻ‚ āĻĒāĻŋāĻ›āύ⧇ āĻĒāĻžāϏ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āϝāĻ–āύ āφāωāϟāĻĒ⧁āϟ āĻ¸ā§āĻŸā§āϰ⧀āĻŽ, āĻāϤ⧇ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• āĻĄāĻŋāϜāĻŋāϟāĻžāϞ āĻŽāĻžāύ āϰāϝāĻŧ⧇āϛ⧇, āϟāĻžāχāĻĒ Int32 āϤ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āĻāĻŦāĻ‚ āĻāχāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāĻžāĻĒā§āϤāĻŋāϰ āĻĻāĻŋāϕ⧇ āϚāϞ⧇ āĻ—āĻŋāϝāĻŧ⧇āĻ›āĻŋāϞ āĻāĻŦāĻ‚ āĻ—ā§āϰāĻšāĻŖāĻ•āĻžāϰ⧀ āĻĒāĻ•ā§āώ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋāϞāĨ¤ āĻ•āϞāĻžāϰ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰāĻļ⧇āϞ⧇āϰ āĻĒā§āϰāĻ¸ā§āĻĨāĻžāύ āϕ⧋āĻĄ āĻšāĻŋāϏāĻžāĻŦ⧇āĨ¤

āĻāĻŦāĻ‚ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻšāĻŋāϏ⧇āĻŦ⧇, āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϝāĻžāĻ• āϏāĻžāĻ°ā§āĻ­āĻžāϰ "āĻ…āĻĒāĻžāϰ⧇āϟāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ (cmdexec)" āϧāϰāϪ⧇āϰ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ•-āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ SQL āϟāĻžāĻ¸ā§āĻ• āϝāĻžāϰ āϞ⧇āĻ–āĻžāϟāĻŋ āύāĻŋāĻŽā§āύ⧋āĻ•ā§āϤ:

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.  Đ¨Đ°Đŗ СавĐĩŅ€ŅˆĐ¸ĐģŅŅ ҁ ĐžŅˆĐ¸ĐąĐēОК.

āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ⧇:

  • āϞāĻŋāϖ⧁āύ-āφāωāϟāĻĒ⧁āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϚāϞ⧁āύ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧁āύāĨ¤ āϏāĻšā§‡āϤāύ āĻĨāĻžāϕ⧁āύ āϝ⧇ āĻāχ āϕ⧋āĻĄāϟāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āĻŸā§‡āϰ āĻ…āĻ¨ā§āϝ āϕ⧋āĻĨāĻžāĻ“ āϏāϰāĻžāύ⧋ āĻšāϞ⧇ āĻ…āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻŋāϤ āĻĢāϞāĻžāĻĢāϞ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞ āϞāĻžā§āĻšā§‡āϰ āϜāĻ¨ā§āϝ āύāϝāĻŧ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻĒāύāĻžāϰ āĻ…āĻŸā§‹āĻŽā§‡āĻļāύ āĻŽā§‡āĻ•āĻžāύāĻŋāϜāĻŽāϗ⧁āϞāĻŋāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻļ⧇āώāϤ WINRM-āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀ āĻ•āϞāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϗ⧁āϞāĻŋāϤ⧇, āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧁āύ/āĻ•ā§āϝāĻžāĻšā§‡āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞ āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āϝ⧇, āχāϭ⧇āĻ¨ā§āĻŸā§‡āϰ āϝ⧇āϕ⧋āύ⧋ āĻŦāĻŋāĻ•āĻžāĻļ⧇, āĻāχ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϟāĻŋ āĻ āĻŋāĻ• āĻāĻ•āϟāĻŋ āφāĻĻāĻŋāĻŽ āϧāϰāύ⧇āϰ āĻŽāĻžāύ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ . āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻ•ā§āϞāĻžāϏāĻŋāĻ• āĻ¤ā§āϰ⧁āϟāĻŋāϰ āĻ¸ā§āϤāϰ āĻĒ⧇āϤ⧇ āϚāĻžāύ āϤāĻŦ⧇ āĻāχ āĻŽāĻžāύāϟāĻŋ āĻ…āĻŦāĻļā§āϝāχ āϏāĻžāĻ‚āĻ–ā§āϝāĻŋāĻ• āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster