여러 URL이 경우 멀리 명령 줄에서 로직의 일부를 밀어 PowerShell 스크립트 파일에 논리의 일부를 이동하는 가장 좋은 것입니다. 명령 줄에이 모든 것을 넣을 수는 없지만 powershell의 -File
매개 변수를 사용하여 쉽게 읽고 쉽게 읽을 수있는 방법이 될 것입니다. 먼저 다음 내용으로 "Get-WebStrings.ps1"이라는 파일을 만들어야합니다.
# Check to be sure we have at least one argument.
If($args.Count -gt 0){
# Treat each argument as a URL that we need to download.
ForEach($singleURL in $args){
# Download the string
(New-Object Net.WebClient).DownloadString($singleURL)
# Optional depending on your needs
# (New-Object Net.WebClient).DownloadString($singleURL) | Out-Null
}
}
이 스크립트가 수행 할 인수는 각각의 URL을 하나의 URL로 취급하고 데이터를 다운로드하는 것으로 전송 된 인수를 취합니다. 기본적으로 이것은 콘솔에 출력됩니다. 단순히 다운로드를 수행하는 것이 모두 원하는 경우 출력을 Out-Null
(위의 주석이 달린 코드 참조)로 파이프 할 수 있습니다.
다음으로 이미 완료 한 것처럼 명령 줄에서 작업을 만들어야합니다. 참고이 파일은 작업이 호출되는 로컬 시스템에서 액세스 할 수 있어야합니다. 각 URL은 문자열의 작은 따옴표 안에 들어 있습니다.
schtasks /create /tn "My Task Title" /tr "powershell -ExecutionPolicy unrestricted -File 'C:\Temp\Get-WebStrings.ps1' 'https://www.google.com' 'http://www.purple.com'" /sc daily /ru username /rp pass
작업 스케줄러 내부의 작업을 살펴보면이 작업은 실행 된 것처럼 보입니다.
-ExecutionPolicy unrestricted -File "C:\Temp\Get-WebStrings.ps1" "https:\\www.google.com" "https:\\employee.firstair.ca"
모두 인용되고 올바르게 이스케이프 처리되면 세미콜론으로 다른 명령을 입력 할 수 있습니다. 이것이 얼마나 복잡한 지에 따라 스크립트에 넣고 PowerShell의'-File' 인수를 사용하는 것을 고려할 수도 있습니다. – Matt
개인적으로 쉼표로 구분 된 목록 URL의 경로를 탐색 한 다음 다운로드를 실행하는 ForEach 루프에 파이핑합니다 . – TheMadTechnician
이 명령을 실행될 .ps1 파일로 옮겨야한다고 생각합니다. 유지 관리가 더 쉬워집니다. – kevmar