PowerShell에서 blob 파일에 액세스하려고 시도하고 있으며이를 FTP 서버에 직접 저장하려고합니다.
FTP 서버가 Windows 기반 인 경우 FTP 서버에서 스크립트를 실행하고이 FTP 서버의 로컬 경로에 BLOB를 다운로드하면됩니다.
blob 파일 URL을 통해이 작업을 수행 할 수 있습니까?
"Get-AzureStorageBlobContent"명령은 매개 변수로 URL을 허용하지 않습니다. 즉,이를 달성하기 위해 코드 또는 스크립트를 작성해야합니다. 다음은 나에 의해 작성된 간단한 데모입니다 :
$url = "https://accountname.blob.core.windows.net/testcontainer/Test01.txt"
$separator = "://"
$option = [System.StringSplitOptions]::RemoveEmptyEntries
$temp = $url.Split($separator,4,$option)
$Protocol = $temp[0]
$HostName = $temp[1]
$Container = $temp[2]
$BlobName = $temp[3]
이 아니면 내가 어떻게 든 파워 쉘 메모리에 생성 된 파일이 다음 FTP 폴더에 저장 $ webclient.UploadFile를 사용할 수 있습니까?
RAM에 파일을 저장하는 것이 이상적이지는 않습니다. 위에서 언급했듯이 FTP 서버가 Windows 기반 인 경우 FTP 서버에서 직접 스크립트를 실행하십시오.
어떤 이유로 든 스크립트를 서버에서 실행할 수없는 경우 FTP 서비스에서 사용하는 폴더를 공유하고 스크립트를 실행할 컴퓨터의 네트워크 드라이버로 매핑하십시오. 따라서이 네트워크 드라이버에 파일을 저장할 수 있습니다.
하지만 내가 대신 사용자 지정 경로를하거나 하위 폴더를 제거하고 C로 저장할 수 있습니다 : \ MyFolder에 \ my_blob_file 대신 C의 : \ MyFolder에 \ dataload \ 파일 \ my_blob_file? 물론
, 그냥 대상 매개 변수로 경로와 파일 이름을 지정합니다
![Destination](https://i.stack.imgur.com/F1TL7.jpg)
참고 : 사실, 푸른 저장에 "폴더"의 개념이 없다. 경로는 BLOB 이름의 일부입니다. BLOB를 다운로드 할 때 대상 경로에 파일 이름을 지정하여 BLOB의 이름을 바꿀 수 있습니다. 따라서 추가 폴더는 로컬 폴더에 생성되지 않습니다.
============================================== ===========================
업데이트 :이 스크립트의 일환으로 푸른에서 실행하는 것입니다
Azure 자동화. 하지만 FTP 서버 (현재 내 로컬 컴퓨터)를 호출하려고하면 "원격 서버에 연결할 수 없습니다"오류가 발생합니다.
목표를 달성하려면 Hybrid Runbook Worker이 필요할 수 있습니다. 그들은 애저 클라우드에서 실행하기 때문에 푸른 자동화에
규범집은 해당 지역의 데이터 센터 리소스에 액세스 할 수 없습니다. Azure Automation의 Hybrid Runbook Worker 기능을 사용하면 데이터 센터에있는 컴퓨터에서 runbooks를 실행하여 로컬 리소스를 관리 할 수 있습니다.
나는 기본 21 포트를 사용하고 있는데 나는 또한 사용하지 않는 것이 좋습니다 인터넷에 FTP 서버를 노출 내 공개 IP 주소를
사용했습니다. Hybrid Runbook Worker를 사용하는 것이 좋습니다.
또한 내 Blob 파일의 내용을 Powershell 변수로 가져와 스크립트에서 사용할 수 있습니까?
내 지식에 따라 Get-AzureStorageBlobContent은 RAM에 객체를 반환하는 것을 지원하지 않습니다. 먼저 내용을 다운로드 한 다음 Get-Content를 사용하여 파일 내용을 가져와야합니다. Hybrid Runbook Worker를 사용하면 파일을 로컬에 저장할 수 있습니다.
============================================== ====================================== 업데이트 2 :
나는 (개발/테스트의 목적을 위해 내 컴퓨터에 현재있는, 그러나 생산의 다른 외부 서버에있을 수 있습니다) 외부 FTP 서버를 호출, 나는 푸른 자동화에서 PowerShell 스크립트에서 실행해야합니다. 그래서 귀하의 회신 : 귀하의 목표를 달성하기 위해 하이브리드 Runbook 작업자가 필요할 수 있습니다 ... 나를 위해 올바르게 작동하지 않습니다?
하이브리드 Runbook 작업자가 당신을 위해 작동합니다. 그리고 그것은 일을 더 쉽게 만듭니다. Hybrid Runbook Worker를 사용하면 Runbook이 로컬 시스템에서 실행되기 때문입니다.
나는 내 로컬 컴퓨터에 모양을 다운로드하고 문제없이 공공 FTP 서버에 업로드 할 수 있어요.
현재 Azure Powershell Automation의 외부 FTP 서버에서 파일을 업로드하고 다운로드 할 수있는 방법이 없다고하니?
블로 브를 공개 FTP 서버에 업로드하지 못했습니다. 나는 방울을 업로드하려고 블롭의 이름 만 빈 파일이 FTP 서버에 업로드 할 때 예외가 발생합니다. PowerShell 스크립트가 샌드 박스에서 실행되기 때문에 권한 문제 일 수 있습니다. Hybrid Runbook Worker가 일을 더 쉽게 만들어 준다고하는 이유입니다.
마지막으로, FTP는 사용자를 인증하고 일반 텍스트로 날짜를 전송하므로 보안 문제가 발생할 수 있습니다. FTPS 및 SFTP는 FTP보다 안전합니다.
답장을 보내 주셔서 감사합니다. 이 스크립트는 Azure 자동화의 일부로 Azure에서 실행됩니다. 하지만 FTP 서버 (현재 내 로컬 컴퓨터)를 호출하려고하면 "원격 서버에 연결할 수 없습니다"오류가 발생합니다. 나는 모든 사용자 익명 액세스를 위해 서버를 설치하고 심지어 방화벽을 끄려고했는데 기본 21 포트를 사용하고 공용 IP 주소를 사용해 보았으며 FTP 서버를 "Windows에서 응용 프로그램 허용"으로 추가했습니다. 방화벽 "설정이지만 다른 무엇이 필요한지 잘 모르겠습니다. – Payal
또한 Blob 파일의 내용을 Powershell 변수로 가져와 스크립트에서 사용할 수 있습니까? 예를 들어 Powershell에서 다른 CSV 파일과 병합하려는 CSV BLOB 파일이 있는데이 파일 내용에 어떻게 액세스 할 수 있습니까? – Payal
참고로, 로컬 컴퓨터에서 스크립트를 실행하고 FTP에 연결할 수 있습니다. 또한 모든 사용자에게 내 FTP 폴더를 공개적으로 공유했습니다. Windows Defender를 실행하고 해제했지만 Azure에서도 같은 오류가 발생합니다. – Payal