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

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

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

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

Q&A

0回答

1491閲覧

シェルから実行するとエラーが発生しないコマンドレットをスクリプトファイルから実行するとエラーが発生する

subka

総合スコア8

PowerShell

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

0グッド

1クリップ

投稿2021/04/16 07:46

環境

Windows Server 2016

知りたいこと

以下事象の原因。

事象

以下コマンドレットのみが記載されたスクリプトファイルを実行すると、後述のエラーが発生する。

PowerShell

1Remove-SmbShare -Name "E"

全く同じコマンドレットをスクリプトファイルからコピペしてシェルから実行するとエラーは発生しない。
操作実行の確認が表示される。

エラー

PowerShell

1Remove-SmbShare : コマンドレットの動的パラメーターを取得できません。null 値の式ではメソッドを呼び出せません。 2発生場所 C:\~~.ps1:1 文字:1 3+ Remove-SmbShare -Name "E" 4+ ~~~~~~~~~~~~~~~~~~~~~~~~~ 5 + CategoryInfo : InvalidArgument: (:) [Remove-SmbShare]、ParameterBindingException 6 + FullyQualifiedErrorId : GetDynamicParametersException,Remove-SmbShare

試したこと

1.同じWindows Server 2016の他のマシンにスクリプトファイルをコピーして実行するとエラーは発生しない。
2.同マシン内でスクリプトファイルをコピペして違うファイル名を付けて実行してもエラーが発生する。
3.同マシン内で新規にテキストファイルを作成して、該当のコマンドレットをスクリプトファイルからコピペして、このテキストファイルの拡張子をsp1に変更して実行してもエラーが発生する。
4.事象が発生したスクリプトファイルの先頭にWrite-Host "test"を記載すると、この箇所ではエラーは発生しない。
5.最終的に、該当のマシンでシェルを再起動して該当のスクリプトファイルを実行するとエラーが発生しなかった。

そもそもコマンドレットに動的パラメータが存在しないので発生し得ないエラーと思います。

間違いなく当該事象の前に操作していた中で対象のシェルの挙動がおかしくなっていたものと思いますが、
今後同様の事象が発生しないとも言えないので、原因に心当たりがある方がおりましたらご回答頂けますと幸甚です。

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

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

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

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

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

haihaikazuma

2021/04/16 08:57

すでにお試しのこととかと存じますが、-ErrorAction Stopを記載しておりますでしょうか。
subka

2021/04/16 09:42

記載しておりません。 単一コマンドレットの実行なので止める必要はないと思うのですが、 -ErrorAction Stopを記載することで何か切り分けが可能なのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問