연결된 컴퓨터 실행 명령에 대한 PowerShell 명령을 사용하면 원격 데스크톱 프로토콜 또는 SSH를 통해 직접 연결하지 않고도 Arc 지원 가상 머신에서 스크립트 또는 명령을 원격으로 안전하게 실행할 수 있습니다.
이 문서에서는 여러 PowerShell 명령을 사용하여 Arc 지원 서버에서 PowerShell을 사용하여 스크립트 또는 명령을 실행하는 방법을 이해하는 데 도움이 되는 예제를 제공합니다.
필수 조건
- Arc 지원 서버의 Connected Machine 에이전트 버전은 1.33 이상이어야 합니다.
PowerShell 샘플 요청
다음 예제에서는 다양한 PowerShell 명령을 사용하여 Arc 지원 서버에서 실행 명령과 작업합니다.
컴퓨터에서 스크립트 실행
이 명령은 스크립트를 컴퓨터에 전달하고, 실행하고, 캡처된 출력을 반환합니다.
New-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -Location "eastus" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
비고
매개 변수에 -SourceScript 여러 명령을 추가할 수 있습니다. 각 명령을 구분하는 데 사용합니다 ; .
예: –SourceScript "id; echo Hello World!"
스토리지의 스크립트 파일을 사용하여 컴퓨터에서 스크립트 실행
이 명령은 스크립트가 업로드된 스토리지 Blob에 대한 SAS(공유 액세스 서명) URI로 Connected Machine 에이전트를 지시한 다음, 에이전트가 스크립트를 실행하고 캡처된 출력을 반환하도록 지시합니다.
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScriptUri “< SAS URI of a storage blob with read access or public URI>”
비고
scriptUri는 스토리지 Blob에 대한 SAS(공유 액세스 서명) URI로, Blob에 대한 읽기 액세스를 제공해야 합니다. SAS URI에 대해 24시간의 만료 시간이 제안됩니다. 를 사용하여 Blob 옵션 또는 SAS 토큰을 사용하여 Azure Portal에서 SAS URI를 생성할 수 있습니다 New-AzStorageBlobSASToken.
New-AzStorageBlobSASToken를 사용하여 SAS 토큰을 생성하는 경우, SAS URI 형식은 base blob URL + "?"에 New-AzStorageBlobSASToken의 SAS 토큰을 더한 것입니다.
배포된 모든 실행 명령 리소스를 컴퓨터에 나열합니다.
이 명령은 속성과 함께 이전에 배포된 실행 명령의 전체 목록을 반환합니다.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine"
실행 상태 및 결과 가져오기
이 명령은 실행의 최신 출력, 시작/종료 시간, 종료 코드 및 터미널 상태를 포함하여 실행 명령에 대한 현재 실행 진행률을 검색합니다.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" - MachineName "myMachine" -RunCommandName "RunCommandName"
인스턴스 보기를 통해 실행 명령에 대한 상태 정보 가져오기
인스턴스 보기를 사용하여 컴퓨터에서 실행 명령에 대한 상태 정보를 가져옵니다. 인스턴스 뷰에는 실행 명령(성공, 실패 등), 종료 코드, 표준 출력 및 스크립트를 실행하여 생성된 표준 오류의 실행 상태가 포함됩니다. 0이 아닌 종료 코드는 실패한 실행을 나타냅니다.
Get-AzConnectedMachineRunCommand -ResourceGroupName "MyRG" -MachineName "MyMachine" -RunCommandName "MyRunCommand"
응답은 다른 정보 외에도 다음 필드를 반환합니다.
InstanceViewExecutionState: 명령 스크립트 실행의 상태입니다. 스크립트가 성공했는지 여부를 확인하려면 이 상태를 참조하세요.ProvisioningState: 일반 확장 프로비저닝의 전반적인 상태(확장 플랫폼이 명령 실행 스크립트를 트리거할 수 있는지 여부).
컴퓨터에서 실행 명령을 만들거나 업데이트하고 표준 출력 및 표준 오류 메시지를 캡처합니다.
컴퓨터에서 실행 명령을 만들거나 업데이트하고 표준 출력 및 표준 오류 메시지를 출력 및 오류 추가 Blob으로 스트리밍합니다.
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" - MachineName "MyMachine" -RunCommandName "MyRunCommand3" -Location "eastus" -SourceScript "id; echo HelloWorld" -OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri <ErrorBlobUri>
비고
출력 및 오류 Blob은 AppendBlob 형식이어야 하며 해당 SAS URI는 Blob에 대한 읽기, 추가, 만들기 및 쓰기 액세스를 제공해야 합니다. SAS URI에는 24시간의 만료 시간이 제안됩니다. 출력 또는 오류 Blob이 없으면 AppendBlob 형식의 Blob이 만들어집니다. Blob의 옵션 또는 SAS 토큰을 사용하여 Azure Portal에서 SAS URI를 생성할 수 있습니다 New-AzStorageBlobSASToken.
컴퓨터에서 실행 명령을 다른 사용자로 만들거나 업데이트합니다.
RunAsUser 및 RunAsPassword 매개 변수를 사용하여 다른 사용자로 컴퓨터에서 실행 명령을 만들거나 업데이트합니다.
이러한 매개 변수를 사용하려면 다음을 수행해야 합니다.
- 컴퓨터의 관리자에게 문의하고 사용자가 컴퓨터에 액세스할 수 있는지 확인합니다.
- 사용자가 실행 명령으로 액세스하는 리소스에 액세스할 수 있는지 확인합니다. 예: 디렉터리, 파일, 네트워크 등
- Windows 컴퓨터에서 '보조 로그온'이 실행 중인지 확인합니다.
New-AzMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword
로컬 스크립트 파일을 사용하여 컴퓨터에서 실행 명령 만들기 또는 업데이트
클라이언트에서 cmdlet이 실행되는 컴퓨터의 로컬 스크립트 파일을 사용하여 실행 명령을 만들거나 업데이트합니다.
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -VMName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"
중요한 입력을 스크립트에 전달하는 동안 컴퓨터에서 실행 명령을 만들거나 업데이트합니다.
암호 또는 키와 같은 스크립트에 중요한 입력을 전달하는 데 사용합니다 ProtectedParameter .
$privateParametersArray = @{name='inputText';value='privateParam1value'}
New-AzConnectedMachineRunCommand -MachineName "MyMachine" -ResourceGroupName "MyRG0" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScriptUri <SourceScriptUri> -ProtectedParameter $privateParametersArray
inputText를 캡처하기 위한 샘플 스크립트:
param ([string]$inputText)
Write-Output $inputText
를 사용하여 Parameter유사한 방식으로 공용 매개 변수를 전달할 수도 있습니다.
Windows - Parameter 및 ProtectedParameter는 다음 예와 유사한 스크립트로 전달됩니다.
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2valueLinux - Named
Parameter와 해당 값이 PowerShell 스크립트 내에서 액세스할 수 있는 환경 구성으로 설정되어 있습니다. Nameless 인수의 경우 빈 문자열을 이름 입력으로 전달합니다. 이름 없는 인수는 다음 예제와 유사한 스크립트에 전달됩니다.myscript.sh publicParam1value publicParam2value secret1value secret2value
컴퓨터에서 RunCommand 리소스 삭제
이전에 컴퓨터에 배포된 명령 실행 리소스를 제거합니다. 스크립트 실행이 아직 진행 중이면 실행이 종료됩니다.
Remove-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"