invoke-command와 관련된 오류/예외를 처리하는 데 문제가 있습니다.Powershell 오류/예외 처리
대상 컴퓨터가 존재하지 않을 때 오류를 잡으려고하는데, 메시지가 표시되고 catch 블록의 스크립트가 작동하는 방식으로 내가 놓친 것이 있거나 잘못 이해 한 것으로 생각됩니다. $computerName
가 네트워크의 유효한 컴퓨터가 아닌 경우
$session = New-Pssession -computername $computerName
Invoke-Command -session $session -ScriptBlock $command -ArgumentList $sqlServerName, $userToGivePermisions
Remove-PSsession -session $session
은 기본적으로 내가 오류를 처리 할 :
이
문제와 스크립트의 부분이다. 나는 의도적으로 그것을 테스트하기 위해 그것을 잘못된 이름을주고, 나는 다음과 같은 오류가 발생합니다 :[dcd] Connecting to remote server failed with the following error message : WinRM cannot process the request. The following error occured while using Kerberos authentication: The network path was not found.
Possible causes are:
-The user name or password specified are invalid.
-Kerberos is used when no authentication method and no user name are specified.
-Kerberos accepts domain user names, but not local user names.
-The Service Principal Name (SPN) for the remote computer name and port does not exist.
-The client and remote computers are in different domains and there is no trust between the two domains.
After checking for the above issues, try the following:
-Check the Event Viewer for events related to authentication.
-Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
Note that computers in the TrustedHosts list might not be authenticated.
-For more information about WinRM configuration, run the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic.
+ CategoryInfo : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionOpenFailed
[DCD]
가 아닌 기존 시스템의 이름입니다. try catch에 코드를 넣고-contains
을 사용하여 오류 메시지를 확인했습니다. 조건은 항상 거짓으로 나왔고 나는 위의 오류에서 거의 한 단어를 시도했다.
$_.exception.message
을 사용하여 catch 블록에 오류 메시지를 표시 할 때 $ session이 (가) null 인 오류가 발생했습니다.
내가 $ 012에 대한 표시된 오류 메시지의 단어를 사용하여 -contains
을했을 때 테스트 한 모든 단어에 대해 여전히 false를 반환했습니다.
나는 이것들 중 어느 것이 오류이며, 왜 -contains
이 사실을 반환하지 않는지 이해하지 못합니다. 나는 모든 비 종료 오류를 잡기 위해 모든 3 줄에 -ea stop
을 추가했지만 아무 소용이 없습니다.
누구나 무슨 일이 벌어지고 있는지 알 수 있습니까?
thnx. 늦게 받아 들여서 미안하지만 내 문제가 해결되었습니다. – user1752736