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

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

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

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

Q&A

解決済

1回答

5353閲覧

PowerShell実行時に定数の上書きエラーが発生する

yoshit

総合スコア12

PowerShell

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

0グッド

0クリップ

投稿2020/03/04 01:33

環境

Windows10 Pro 1909 ビルド18363.657
Visual Studio Code バージョン1.42.1

  • ms-vscide.powershell v2020.1.0

VSCodeのターミナルはPowerShell Integrated Consoleを利用

不明点

VSCode上でPowerShellのコードを書き、デバッグの開始(F5)で実行しています。
書いては実行し、エラーが出たら修正やロジックが間違っていないかチェックしたりする等、同じ画面上でブレイクポイントを設定し複数回実行・停止をしたい状態です。
コード中に
set-variable -name Hoge -value "ほげ" -option constant
のように定数を設定している箇所があるのですが、1度ブレイクポイントで停止し再度デバッグの停止(Shift+F5)で実行を停止した後に再度デバッグの開始(F5)を行うと

Poweshell

1set-variable : 変数 Hoge は読み取り専用または定数であるため、上書きできません。 2発生場所 D:\hogehoge\fugafuga.ps1:99 文字:1 3+ set-variable -name Hoge -value "ほげ" -option constant ... 4+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 + CategoryInfo : WriteError: (OutputPath:String) [Set-Variable], SessionStateUnauthorizedAccessException 6 + FullyQualifiedErrorId : VariableNotWritable,Microsoft.PowerShell.Commands.SetVariableCommand

といったエラーが発生します。
これを回避するには一旦VSCodeを終了し、再度起動して対象のps1ファイルを開くしか思いつかなかったのですがこの方法しかないのでしょうか?
PowerShell ISEも全く同様の問題が出てしまうのできっと何か大きな思い違いをしてるのではと思い、ご助力頂きたくよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Set-Variable の仕様によるものの可能性があります

本件を調査するにあたって見つけたWebサイトには
定数定義にすると PowerShell ISE とかのデバッグで何度も同じスクリプトを走らせる時に定義済みの変数に値をセットすることになってしまい、扱いが面倒になるので僕は使っていません。
という記述も見られました

一応、文字列限定にはなりますが、このような形で回避できるのを確認しております。如何でしょうか。

Powershell

1if ([System.String]::IsNullOrEmpty($Hoge) -eq $TRUE) { 2 set-variable -name Hoge -value "ほげ" -option constant 3 # この echo はデバッグ用です 4 echo "Hoge Set" 5} 6echo Hoge

投稿2020/03/04 01:50

cocoalix

総合スコア62

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

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

yoshit

2020/03/05 01:55

言語仕様だったのですね、ご回答頂きありがとうございました。 てっきり毎回クリアされるものだと思い込んでおりましたので、助かりました。 サンプルコードまで記載頂き本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問