
ISEでスクリプト作成しています。
ISEは正常に動作していて正しい結果が得られるのですが、
同じスクリプトを実際にコンソールの方で実行すると違う結果になります。
例えば以下の様な簡単なスクリプトだと、
ISEでは100、コンソールでは1が表示されます。
-------------------------------------
$a = 1
function test{
$global:a = 100
}
test
Write-Host $a
Start-Sleep -s 10
-------------------------------------
原因と解決策はありますでしょうか?
$PSVersionTableで調べたところバージョンは4.0です。
No.1ベストアンサー
- 回答日時:
調べてみたところ、スコープの問題でした。
「Windows PowerShell: スクリプト作成の短期集中講座 - TechNet」(http://technet.microsoft.com/ja-jp/magazine/hh55 …)によると、
>ISE では、スクリプトは、グローバル スコープで実行されますが、通常のシェルのコンソールでは、スクリプトごとにスコープが設定されます。
とのことです。
つまり、1行目の「$a = 1」が、ISEではグローバルスコープで、ISE以外からの実行ではスクリプトスコープ(?)になります。
1行目を「$global:a = 1」にすればPowerShellのコマンドライン。
「PowerShell: スコープ」(http://mtgpowershell.blogspot.jp/2010/06/blog-po …) も参考になります。
参考URL:http://technet.microsoft.com/ja-jp/magazine/hh55 …
$global:aに変更したところ動きました。なるほどスコープの問題でしたか。
つまりglobal:付けた変数には全てglobal:付けておけと言う事ですかね。
正直ISEもコンソールと同じ動きであって欲しいです。
有難うございました。
No.2
- 回答日時:
No.1です。
お礼をいただきありがとうございます。
よく見たら回答が途中で切れておかしな文になっていました。
もう不要かもしれませんが念のために書くと
1行目を「$global:a = 1」にすればPowerShellのコマンドラインとISEで動作が同じになります。
と書くつもりでした。
>つまりglobal:付けた変数には全てglobal:付けておけと言う事ですかね。
そういうことなのでしょうね。
>正直ISEもコンソールと同じ動きであって欲しいです。
同感です。
途中で切れていた件は大丈夫です。
やはりglobalを付けとくべきなのですね。
とりあえず解決策が見つかってよかったです。
二度も回答有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォトショのアクションを別のM...
-
Excelのマクロで実行時エラー”1...
-
初期フォーカスについて
-
レーザのスポット径の計算式
-
ComboBoxのフォーカスをはずす
-
[化学基礎] μmのμはどうして...
-
HPのコンセプト
-
Galaxy s5のデスクホーム画面の...
-
DAMのデンモクの使い方
-
ASP.NETにてロストフォーカス処理
-
C#でButtonのフォーカス枠を消...
-
TDSマジックランプシアター 箱...
-
Chrome フォーカス時に枠が表示...
-
iPhone SE (第2世代)のeSIMでm...
-
トップページの上部の広告宣伝...
-
他の人には声だして挨拶してる...
-
CPUの交換について
-
Windows10 32ビットから64ビッ...
-
Dual CPU
-
自作パソコンのCPU使用率が急に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SPREAD(GrapeCity)のセルにフォ...
-
メッセージボックスを前面に表...
-
Excelのマクロで実行時エラー”1...
-
レーザのスポット径の計算式
-
C#でButtonのフォーカス枠を消...
-
コンボボックスの開いたリスト...
-
Chrome フォーカス時に枠が表示...
-
初期フォーカスについて
-
雷のようなアニメーションをウ...
-
除光液の正しい捨て方がわかり...
-
DataGridViewで入力チェック後...
-
androidブラウザ開発について
-
DAMのデンモクの使い方
-
PowershellでCLIとISEの結果が違う
-
予算は5万円ぐらいで ノートパ...
-
TDSマジックランプシアター 箱...
-
eclipseでフォーカスされた変数...
-
JavaScript でpk戦のゲームを作...
-
コンボボックスの三角を一時的...
-
[化学基礎] μmのμはどうして...
おすすめ情報