배치에서 PowerShell 스크립트를 호출하고 싶습니다.
배치에서 PowerShell을 호출하는 방법
powershell (コマンドまたはps1ファイル)
에서 실행할 수 있습니다.
하지만 PowerShell의 실행 정책 설정을 활성화하지 않으면 호출 할 수 없으므로 다음과 같이 작성되었습니다.
powershell -ExecutionPolicy RemoteSigned (ps1ファイルを指定)
(2017/3/10 변경) 한 줄로 쓰는 법 가르쳐 주셨습니다!
오시마
여기서부터는 무엇을 하려고 배치에 스크립트를 채웠는지
시행착오한 것을 써 보았습니다.
PowerShell을 호출하려는 이유
일괄 처리로 PowerShell 스크립트를 호출하려는 경위는 어떤 구현만으로는
할 수 없는 무언가를 하고 싶었기 때문입니다.
$ なにか = "アプリケーションのリモートインストールとエラー通知"
뭔가를하려고 배치를 쓴 결과
응용 프로그램을 원격으로 설치하려고
처음 쓴 배치가 이런 느낌이었습니다.
AppInstall.batSET APP_NAME=(アプリのフォルダ名)
rem インストールフォルダのマウント
net use W: /delete
net use W: (フォルダパス)
rem インストールフォルダの移動
cd /d W:\%APP_NAME%
rem インストールの実行
(インストールを実行するコマンド記載)
rem インストールフォルダのアンマウント
net use W: /delete
exit
설치는 할 수 있지만 설치 실패를 깨닫지 못하고 여러가지 곤란했습니다.
라고 하는 것으로 성공/실패 메일 통지의 기능 추가를 검토했습니다.
일괄 처리로 이메일 알림 구현
빙글빙글 보았다
배치에서는 메일 통지 기능 구현을 할 수 없는 것만은 파악할 수 있었습니다.cscript うにゃにゃっ
라는 내용만うにゃうにゃ
의 내용은 VB이거나, JavaScript이거나 사람 각각이었습니다.
PowerShell...
PowerShell에서 모두 다시 작성?
MaLi와 한 자산 관리 도구를 통해 원격 설치한다고 가정했습니다.
그 도구가 ps1 파일을 호출하지 않고 포기했습니다.
메일 알림 부분만 PowerShell로 구현
발신 메일은 이런 식으로, 성공용과 실패용의 양쪽 모두 준비했습니다.
SendMail.ps1# メールの設定内容
$EmailFrom = (送信元)
$EmailTo = (送信先)
$PCName = hostname
$Subject = (メールの件名)
$SMTPServer = (SMTPサーバー)
$Port = "25"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer,$Port)
$SMTPClient.EnableSsl = $false
# メールの本文
[string]$body = @()
$body += "成功しました。`n`n"
$body += ""
# メールの送信
Send-MailMessage -To $EmailTo -From $EmailFrom -SmtpServer $SMTPServer -Subject $Subject -Body $body -Encoding UTF8
뭔가를 시도하기 위해 배치를 다시 작성한 결과
AppInstall2.batSET APP_NAME=(アプリのフォルダ名)
rem インストールフォルダのマウント
net use W: /delete
net use W: (フォルダパス)
rem インストールフォルダの移動
cd /d W:\%APP_NAME%
rem インストールの実行
(インストールを実行するコマンド記載)
@if ERRORLEVEL 1 goto NG
@if ERRORLEVEL 0 goto OK
:NG
rem インストール失敗通知
powershell -ExecutionPolicy RemoteSigned W:\SendMailError.ps1
rem インストールフォルダのアンマウント
net use W: /delete
rem バッチファイルの削除
cd /d %~dp0
del /f "%~dp0%~nx0"
goto end
:OK
rem インストール成功通知
powershell -ExecutionPolicy RemoteSigned W:\SendMailSuccess.ps1
rem インストールフォルダのアンマウント
net use W: /delete
rem バッチファイルの削除
cd /d %~dp0
del /f "%~dp0%~nx0"
goto end
end:
rem 終了
exit
에러 처리는 물론, 배치의 자살 명령도 함께 추가.
보다 더 나은 구현의 방법은 있을지도 모릅니다만, 무엇인가를 실현할 수 있었으므로 일단은 좋았습니다.
이것을 계기에 흩어져 있는 배치들을 PowerShell에 이식하려고 생각했지만,
엄청난 허들 높기 때문에 배치에 PowerShell 묻어 조금씩 침식시킵니다.
참고문헌
Reference
이 문제에 관하여(배치에서 PowerShell 스크립트를 호출하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tkdrecord/items/b92c97598c62543e1b98
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
powershell -ExecutionPolicy RemoteSigned (ps1ファイルを指定)
일괄 처리로 PowerShell 스크립트를 호출하려는 경위는 어떤 구현만으로는
할 수 없는 무언가를 하고 싶었기 때문입니다.
$ なにか = "アプリケーションのリモートインストールとエラー通知"
뭔가를하려고 배치를 쓴 결과
응용 프로그램을 원격으로 설치하려고
처음 쓴 배치가 이런 느낌이었습니다.
AppInstall.batSET APP_NAME=(アプリのフォルダ名)
rem インストールフォルダのマウント
net use W: /delete
net use W: (フォルダパス)
rem インストールフォルダの移動
cd /d W:\%APP_NAME%
rem インストールの実行
(インストールを実行するコマンド記載)
rem インストールフォルダのアンマウント
net use W: /delete
exit
설치는 할 수 있지만 설치 실패를 깨닫지 못하고 여러가지 곤란했습니다.
라고 하는 것으로 성공/실패 메일 통지의 기능 추가를 검토했습니다.
일괄 처리로 이메일 알림 구현
빙글빙글 보았다
배치에서는 메일 통지 기능 구현을 할 수 없는 것만은 파악할 수 있었습니다.cscript うにゃにゃっ
라는 내용만うにゃうにゃ
의 내용은 VB이거나, JavaScript이거나 사람 각각이었습니다.
PowerShell...
PowerShell에서 모두 다시 작성?
MaLi와 한 자산 관리 도구를 통해 원격 설치한다고 가정했습니다.
그 도구가 ps1 파일을 호출하지 않고 포기했습니다.
메일 알림 부분만 PowerShell로 구현
발신 메일은 이런 식으로, 성공용과 실패용의 양쪽 모두 준비했습니다.
SendMail.ps1# メールの設定内容
$EmailFrom = (送信元)
$EmailTo = (送信先)
$PCName = hostname
$Subject = (メールの件名)
$SMTPServer = (SMTPサーバー)
$Port = "25"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer,$Port)
$SMTPClient.EnableSsl = $false
# メールの本文
[string]$body = @()
$body += "成功しました。`n`n"
$body += ""
# メールの送信
Send-MailMessage -To $EmailTo -From $EmailFrom -SmtpServer $SMTPServer -Subject $Subject -Body $body -Encoding UTF8
뭔가를 시도하기 위해 배치를 다시 작성한 결과
AppInstall2.batSET APP_NAME=(アプリのフォルダ名)
rem インストールフォルダのマウント
net use W: /delete
net use W: (フォルダパス)
rem インストールフォルダの移動
cd /d W:\%APP_NAME%
rem インストールの実行
(インストールを実行するコマンド記載)
@if ERRORLEVEL 1 goto NG
@if ERRORLEVEL 0 goto OK
:NG
rem インストール失敗通知
powershell -ExecutionPolicy RemoteSigned W:\SendMailError.ps1
rem インストールフォルダのアンマウント
net use W: /delete
rem バッチファイルの削除
cd /d %~dp0
del /f "%~dp0%~nx0"
goto end
:OK
rem インストール成功通知
powershell -ExecutionPolicy RemoteSigned W:\SendMailSuccess.ps1
rem インストールフォルダのアンマウント
net use W: /delete
rem バッチファイルの削除
cd /d %~dp0
del /f "%~dp0%~nx0"
goto end
end:
rem 終了
exit
에러 처리는 물론, 배치의 자살 명령도 함께 추가.
보다 더 나은 구현의 방법은 있을지도 모릅니다만, 무엇인가를 실현할 수 있었으므로 일단은 좋았습니다.
이것을 계기에 흩어져 있는 배치들을 PowerShell에 이식하려고 생각했지만,
엄청난 허들 높기 때문에 배치에 PowerShell 묻어 조금씩 침식시킵니다.
참고문헌
Reference
이 문제에 관하여(배치에서 PowerShell 스크립트를 호출하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tkdrecord/items/b92c97598c62543e1b98
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
SET APP_NAME=(アプリのフォルダ名)
rem インストールフォルダのマウント
net use W: /delete
net use W: (フォルダパス)
rem インストールフォルダの移動
cd /d W:\%APP_NAME%
rem インストールの実行
(インストールを実行するコマンド記載)
rem インストールフォルダのアンマウント
net use W: /delete
exit
빙글빙글 보았다
배치에서는 메일 통지 기능 구현을 할 수 없는 것만은 파악할 수 있었습니다.
cscript うにゃにゃっ
라는 내용만うにゃうにゃ
의 내용은 VB이거나, JavaScript이거나 사람 각각이었습니다.PowerShell...
PowerShell에서 모두 다시 작성?
MaLi와 한 자산 관리 도구를 통해 원격 설치한다고 가정했습니다.
그 도구가 ps1 파일을 호출하지 않고 포기했습니다.
메일 알림 부분만 PowerShell로 구현
발신 메일은 이런 식으로, 성공용과 실패용의 양쪽 모두 준비했습니다.
SendMail.ps1# メールの設定内容
$EmailFrom = (送信元)
$EmailTo = (送信先)
$PCName = hostname
$Subject = (メールの件名)
$SMTPServer = (SMTPサーバー)
$Port = "25"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer,$Port)
$SMTPClient.EnableSsl = $false
# メールの本文
[string]$body = @()
$body += "成功しました。`n`n"
$body += ""
# メールの送信
Send-MailMessage -To $EmailTo -From $EmailFrom -SmtpServer $SMTPServer -Subject $Subject -Body $body -Encoding UTF8
뭔가를 시도하기 위해 배치를 다시 작성한 결과
AppInstall2.batSET APP_NAME=(アプリのフォルダ名)
rem インストールフォルダのマウント
net use W: /delete
net use W: (フォルダパス)
rem インストールフォルダの移動
cd /d W:\%APP_NAME%
rem インストールの実行
(インストールを実行するコマンド記載)
@if ERRORLEVEL 1 goto NG
@if ERRORLEVEL 0 goto OK
:NG
rem インストール失敗通知
powershell -ExecutionPolicy RemoteSigned W:\SendMailError.ps1
rem インストールフォルダのアンマウント
net use W: /delete
rem バッチファイルの削除
cd /d %~dp0
del /f "%~dp0%~nx0"
goto end
:OK
rem インストール成功通知
powershell -ExecutionPolicy RemoteSigned W:\SendMailSuccess.ps1
rem インストールフォルダのアンマウント
net use W: /delete
rem バッチファイルの削除
cd /d %~dp0
del /f "%~dp0%~nx0"
goto end
end:
rem 終了
exit
에러 처리는 물론, 배치의 자살 명령도 함께 추가.
보다 더 나은 구현의 방법은 있을지도 모릅니다만, 무엇인가를 실현할 수 있었으므로 일단은 좋았습니다.
이것을 계기에 흩어져 있는 배치들을 PowerShell에 이식하려고 생각했지만,
엄청난 허들 높기 때문에 배치에 PowerShell 묻어 조금씩 침식시킵니다.
참고문헌
Reference
이 문제에 관하여(배치에서 PowerShell 스크립트를 호출하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tkdrecord/items/b92c97598c62543e1b98
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
발신 메일은 이런 식으로, 성공용과 실패용의 양쪽 모두 준비했습니다.
SendMail.ps1
# メールの設定内容
$EmailFrom = (送信元)
$EmailTo = (送信先)
$PCName = hostname
$Subject = (メールの件名)
$SMTPServer = (SMTPサーバー)
$Port = "25"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer,$Port)
$SMTPClient.EnableSsl = $false
# メールの本文
[string]$body = @()
$body += "成功しました。`n`n"
$body += ""
# メールの送信
Send-MailMessage -To $EmailTo -From $EmailFrom -SmtpServer $SMTPServer -Subject $Subject -Body $body -Encoding UTF8
뭔가를 시도하기 위해 배치를 다시 작성한 결과
AppInstall2.batSET APP_NAME=(アプリのフォルダ名)
rem インストールフォルダのマウント
net use W: /delete
net use W: (フォルダパス)
rem インストールフォルダの移動
cd /d W:\%APP_NAME%
rem インストールの実行
(インストールを実行するコマンド記載)
@if ERRORLEVEL 1 goto NG
@if ERRORLEVEL 0 goto OK
:NG
rem インストール失敗通知
powershell -ExecutionPolicy RemoteSigned W:\SendMailError.ps1
rem インストールフォルダのアンマウント
net use W: /delete
rem バッチファイルの削除
cd /d %~dp0
del /f "%~dp0%~nx0"
goto end
:OK
rem インストール成功通知
powershell -ExecutionPolicy RemoteSigned W:\SendMailSuccess.ps1
rem インストールフォルダのアンマウント
net use W: /delete
rem バッチファイルの削除
cd /d %~dp0
del /f "%~dp0%~nx0"
goto end
end:
rem 終了
exit
에러 처리는 물론, 배치의 자살 명령도 함께 추가.
보다 더 나은 구현의 방법은 있을지도 모릅니다만, 무엇인가를 실현할 수 있었으므로 일단은 좋았습니다.
이것을 계기에 흩어져 있는 배치들을 PowerShell에 이식하려고 생각했지만,
엄청난 허들 높기 때문에 배치에 PowerShell 묻어 조금씩 침식시킵니다.
참고문헌
Reference
이 문제에 관하여(배치에서 PowerShell 스크립트를 호출하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tkdrecord/items/b92c97598c62543e1b98
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
SET APP_NAME=(アプリのフォルダ名)
rem インストールフォルダのマウント
net use W: /delete
net use W: (フォルダパス)
rem インストールフォルダの移動
cd /d W:\%APP_NAME%
rem インストールの実行
(インストールを実行するコマンド記載)
@if ERRORLEVEL 1 goto NG
@if ERRORLEVEL 0 goto OK
:NG
rem インストール失敗通知
powershell -ExecutionPolicy RemoteSigned W:\SendMailError.ps1
rem インストールフォルダのアンマウント
net use W: /delete
rem バッチファイルの削除
cd /d %~dp0
del /f "%~dp0%~nx0"
goto end
:OK
rem インストール成功通知
powershell -ExecutionPolicy RemoteSigned W:\SendMailSuccess.ps1
rem インストールフォルダのアンマウント
net use W: /delete
rem バッチファイルの削除
cd /d %~dp0
del /f "%~dp0%~nx0"
goto end
end:
rem 終了
exit
Reference
이 문제에 관하여(배치에서 PowerShell 스크립트를 호출하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tkdrecord/items/b92c97598c62543e1b98텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)