2016-06-15 2 views
2

어떤 지점의 서버가 다운되는지를 묻는 파일을 설정 한 다음 그에 따라 이메일을 보내 재시작을 알리고 싶습니다. 2 개의 변수 $ server와 $ setTime이 있습니다. PowerShell 스크립트를 읽어서 변수를 텍스트로 변환하려면 어떻게해야합니까?입력 변수를 powershell 스크립트에 배치 양식을 보내십시오.

PowerShell 스크립트 :

$MyEmail = "[email protected]" 
$SMTP= "mail.email.net" 
$To = "[email protected]" 
$Subject = "$server Server Restart" 
$Body = "All, 

We will be restarting the $server server at $setTime. 
Printing and folder access wil be offline during the restart. 
The server will be offline for 5 minutes. 

Helpdesk" 

Start-Sleep 2 

Send-MailMessage -To $to -From $MyEmail -Subject $Subject -Body $Body -SmtpServer $SMTP -DeliveryNotificationOption never 

배치 파일 :

@echo off 

set /p server = What server is being restarted? 
set /p setTime = What time? 

PowerShell.exe -Command c:\users\%username%\Desktop\dotComEmails\xServerIsDown.ps1 -server 
+0

코드를 제공해 주셔서 감사합니다. 당신은 당신의 질문에 옳은 길을 묻고 있습니다. +1, 스택 오버플로에 오신 것을 환영합니다! – rojo

답변

1

첫째, 일괄 set /P 명령에 등호 주위의 공간을 잃게됩니다.

set /P "server=What server is being restarted? " 
set /P "setTime=What time? " 

... 등이어야한다.

귀하의 질문에 대한 답변을 보려면 PowerShell 스크립트에서 env 범위의 변수 - $env:server$env:setTime을 참조하십시오.

$Body = @" 
All, 

We will be restarting the $env:server server at $env:setTime. 
Printing and folder access will be offline during the restart. 
The server will be offline for 5 minutes. 

Helpdesk 
"@ 
+0

고마워 이것이 완벽하게 작동했습니다! –

1

배치 파일은 다음과 같이해야합니다 :

@echo off 

set /p server=What server is being restarted? 
set /p setTime=What time? 

PowerShell.exe "& 'c:\users\%username%\Desktop\dotComEmails\xServerIsDown.ps1' '%server%' '%setTime%'" 

당신이 SET 명령에 = 기호 앞에 공백을 넣으면, 그것은 깰 것을 유의하시기 바랍니다!

그런 다음 PowerShell 스크립트에서 이러한 인수 값을 변수에 할당 할 수 있습니다. 가장 짧고 달콤한 방법은 다음과 같습니다.

$server = $args[0] 
$time = $args[1] 
관련 문제