2014-12-19 7 views
-2

다음 일정 작업을 만들었지 만 첫 번째 끝에서 실행될 두 번째 URL을 추가하고 싶습니다. 아무도 그것을 어떻게 할 수 있습니까?2 개의 URL이 cmd와 함께 powershell에 있음

미리 감사드립니다.

schtasks /create /tn "My Task Title" /tr "powershell -ExecutionPolicy unrestricted -Command \"(New-Object Net.WebClient).DownloadString(\\\"Url1\\\")\"" /sc DAILY /ru username /rp pass 
+2

모두 인용되고 올바르게 이스케이프 처리되면 세미콜론으로 다른 명령을 입력 할 수 있습니다. 이것이 얼마나 복잡한 지에 따라 스크립트에 넣고 PowerShell의'-File' 인수를 사용하는 것을 고려할 수도 있습니다. – Matt

+0

개인적으로 쉼표로 구분 된 목록 URL의 경로를 탐색 한 다음 다운로드를 실행하는 ForEach 루프에 파이핑합니다 . – TheMadTechnician

+4

이 명령을 실행될 .ps1 파일로 옮겨야한다고 생각합니다. 유지 관리가 더 쉬워집니다. – kevmar

답변

1

여러 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"