2016-06-15 24 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、そしてStack Overflowへようこそ! – 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] 
関連する問題