質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

3601閲覧

Powershellでの実行方法について

jackal1978

総合スコア33

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2022/08/01 02:54

編集2022/08/03 16:20

前提

Poweshellの実行方法について
「XX.ps1」を開くでテキストをすべてコピーを行い、powershellの画面を開いて貼り付けを行ってスクリプトを
実行させると問題なくスクリプトは動作しますが、「XX.ps1」を右クリックで「Powershellで実行」を行うと
うまく動作をしてくれません。
関係はあるか不明ですが編集でスクリプトを見たときに日本語の部分が文字化けしていることも確認しました。

実現したいこと

「XX.ps1」を右クリックして「Powershellで実行」をクリックしてスクリプトが動くようにしたい。

発生している問題・エラーメッセージ

一瞬画面が立ち上がりすぐに画面が落ちてしまう。 下記のソースコードのここから~ここまでの間のどの行に「pause」をいれても止まることはありませんでした。

該当のソースコード

下記の「--ここから~ここまで----」のスクリプトが入っていると最終行のストップをかけていてもpowershellが落ちてしまいます。 $TargetLogFolder = "C:\copy" ---ここから if(-not (Test-Path $TargetLogFolder)){ Add-Type -Assembly System.Windows.Forms [System.Windows.Forms.MessageBox]::Show("ファイルが存在していません。","注意","OK","Warning","button3") EXIT } ---ここまで $g = "C:\hoge" $o = Get-Date -format "yyyyMMdd_HHmmss" New-Item $g\"$o.txt"

試したこと

実行権限のポリシーの変更
⇒RemoteSignedへ変更をしました。
文字化けについてはchcpコマンドで65001や932へは変更済です。
コマンドプロンプトからpowershellへ変更しても動作しません。
サイトを色々調べてみましたが当てはまりそうな不具合が見つけられませんでした。

補足情報(FW/ツールのバージョンなど)

当方Powershellの使い方については初心者なのでご教示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

novelistory

2022/08/01 03:21

>発生している問題・エラーメッセージ >一瞬画面が立ち上がりすぐに画面が落ちてしまう。 ⇒すぐに画面が落ち、処理が実行されていないのでしょうか。  それとも画面が落ちるだけで処理は実行されているのでしょうか。 >該当のソースコード >ソースコード 「XX.ps1」の中身の記載がございません。 記載した方が皆さん回答しやすいかと思います。 実際に試していないこと、ご容赦ください。 調べたところ以下記述を見つけました。 参考になりましたら幸いです。 ■右クリックメニューの「PowerShell で実行」を拡張する http://www.vwnet.jp/windows/w10/2015121601/ExtendRightClickMenu.htm >ところが、この右クリックメニューの「PowerShell で実行」は、実行後 PowerShell プロンプトを閉じてしまうので使い勝手が良いものではありません。そこで、スクリプト実行後にプロンプト閉じないようにする -NoExit オプションを以下レジストリに付加します。
ccc-

2022/08/01 03:33

$a = 1 $b = 1 $c = $a + $b Write-host $c pause # ← 最後に pause を付ける
dodox86

2022/08/01 08:15

pauseコマンドはコマンドレットではなくコマンドプロンプト(cmd.exe)の内部コマンドなので、実行する際の形態によっては効かないかもです。
guest

回答1

0

ベストアンサー

保存時の文字コードが原因のようです。この回答は削除致します。

投稿2022/08/01 07:06

編集2022/08/03 07:20
ccc-

総合スコア328

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jackal1978

2022/08/01 07:28

該当箇所に「pause」を入れてみましたが赤い文字が一瞬書かれているように見えますが閉じてしまうため内容がわからないです。ちなみにこのif文の終わりにもpauseを入れましたがpowershellは落ちてしまいます。 ここから~ここまでの処理がない場合は問題なく動作します。 あった場合でも全文コピーでpowersellへの貼り付けで実行であれば問題なく動作します。
ccc-

2022/08/01 07:39

コメント行になっていますか? # ----ここから--- # ←←←←←←←←←← 先頭にシャープ記号は付いていますか? if (-not (Test-Path $TargetLogFolder)){ Add-Type -Assembly System.Windows.Forms [System.Windows.Forms.MessageBox]::Show("フォルダにアクセスできません。","注意","OK","Warning","button3") pause EXIT } # ---ここまで-------------- # ←←←←←←←←←← 先頭にシャープ記号は付いていますか?
jackal1978

2022/08/01 07:47 編集

はい。動作に不要な箇所については先頭に「#」はつけて実行しています。 ちなみに実行している環境のPCは3台使っていて全部同じ挙動になります。 そのためPC単体での不具合とは考えにくいと推測しています
ccc-

2022/08/01 08:17

もしかして、Windows7 でしょうか? Windows7なら以下の手順が必要です。 ①バッチファイルを作成します。 ②powershell.exe -sta -Command Set-ExecutionPolicy Unrestricted を保存します。 ③バッチファイルを管理者として実行します。 ④ps1を以下に変更して保存します。 $Hostname = $Env:COMPUTERNAME $TargetLogFolder = "C:\copy" $f = Get-Date -format "yyyyMMdd_HHmmss" $g = "C:\hoge" # ----ここから--- if (-not (Test-Path $TargetLogFolder)){ Add-Type -Assembly System.Windows.Forms [System.Windows.Forms.MessageBox]::Show("フォルダにアクセスできません。","注意","OK","Warning","button3") cmd /c "pause" # ■■■■■■■■■■ Windows7の時は cmd /c "pause" にします。 EXIT } # ---ここまで-------------- ⑤ps1をコンテキストメニューから「Powershell で実行」します。
ccc-

2022/08/01 23:34

以下のように変更して試していただけますか? ■XX.ps1を保存する時に、文字コードを SHIFT-JIS または ANSI で保存する。 ■UTF8BOM(無)で保存しているの場合は「 。」 と 「意」 を消す。 [System.Windows.Forms.MessageBox]::Show("ファイルが存在していません","注","OK","Warning","button3")
jackal1978

2022/08/02 02:44

保存をANSIで実施したところ問題なく動作いたしました。UTF-8ではだめだったようです。 ちなみにANSIにした状態で「 。」 と 「意」を付与した状態で実行したところ問題なく文字化けもせず実行ができました。今回の問題は文字コードがスクリプトを実行する際の妨げになっていたという認識であっていますでしょうか?
ccc-

2022/08/03 07:17

はい。その認識で正しいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問