āĻāĻāĻžāĻ§āĻŋāĻ 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)â āĻāĻžāĻāĻĒ āĻ¸āĻš āĻāĻāĻāĻŋ āĻāĻ-āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻāĻžāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ:
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