[解決済み] powershellスクリプトで、最後に改行を入れずにWrite-Warningすることはできますか?
質問
PowerShellでWarningをプロンプトとして表示し、同じ行で答えを読みたい。問題点は
Write-Warning
はメッセージの末尾に改行を表示し、1つの選択肢となります。
Read-Host -Prompt
は、プロンプトを警告ストリームに出力しません(または黄色で出力します)。私が見たのは
Write-Warning -WarningAction Inquire
しかし、これは少し冗長で、私が必要としないオプションを提供しているように思います。
私が行ったことのあるベストは
$warningMsg= "Something is wrong. Do you want to continue anyway Y/N? [Y]:"
Write-Host -ForegroundColor yellow -NoNewline $warningMsg
$cont = Read-Host
黄色のプロンプトが表示され、同じ行に入力が読み込まれるという素晴らしい仕組みです。
Write-Host
もし、改行せずに警告ストリームにプリントする方法を見つけた方が適切であれば、教えてください。そのような方法はあるのでしょうか?私が気づいたのは
Write-Host
は Info ストリームに書き込むためのラッパーであるようですが、改行せずに警告に書き込む方法はないようです (
[Console]::Warning.WriteLine()
は存在しないなど)。
どのように解決するのですか?
でやりたいことができない。
Write-Warning
.
そこで、もう一つのご懸念についてお答えします。
Write-Host
は、PowerShell 5+のスクリプトで使用しても全く問題ありません。
その使用を推奨している記事を見ると、(すべてではないにしても)その大半がPowerShell 5の導入前に書かれたものであることに気づくでしょう。
現在では
Write-Host
のラッパーです。
Write-Information
.
は 公式ドキュメント を確認することができます。
Windows PowerShell 5.0 で起動します。
Write-Host
のラッパーです。Write-Information
これによりWrite-Host
に出力することができます。 情報ストリームに を捕捉または抑制することができます。 を使用して書き込まれたデータはWrite-Host
後方互換性を維持しながら 互換性があります。は
$InformationPreference
プリファレンス変数と-InformationAction
共通パラメータはWrite-Host
のメッセージを表示します。ただし、例外として このルールは-InformationAction Ignore
を効果的に抑制することができます。Write-Host
を出力します。
を使った情報ストリームへの書き込み
Write-Host
と/または
Write-information
は、出力文字列に問題を生じさせません。
Stream # Description Introduced in
1 Success Stream PowerShell 2.0
2 Error Stream PowerShell 2.0
3 Warning Stream PowerShell 3.0
4 Verbose Stream PowerShell 3.0
5 Debug Stream PowerShell 3.0
6 Information Stream PowerShell 5.0
* All Streams PowerShell 3.0
ボーナス
また、高度な機能を使用する場合は、情報ストリームの可視性を
-InformationAction
パラメータにバインドしている場合、与えられたパラメータ値を
Write-Host
ステートメントを関数内で使用します。
例えば、特に要求がない限り、情報ストリームをデフォルトで無効にしたい場合。
function Get-Stuff {
[CmdletBinding()]
param ()
if (!$PSBoundParameters.ContainsKey('InformationAction')) {
$InformationPreference = 'Ignore'
}
Write-Host 'This is the stuff' -InformationAction $InformationPreference -ForegroundColor Green
}
# Hidden by default
Get-Stuff
# Force it to show
Get-Stuff -InformationAction Continue
備考
技術的には
Write-Warning -NoNewLine
カーソル位置を操作して、前の行の末尾にリセットすることで、同じことができます。
しかし、私はその経験が少なく、このテーマに関して私が見たところ、一部のコンソール環境の制限に準拠するために例外を作成する必要が出てくるかもしれません。私見ですが、これは少しやりすぎだと思います...。
追加リファレンス リダイレクトについて
関連
-
[解決済み] PowerShellで改行するには?
-
[解決済み] PowerShellでコンソールに書き込むには?
-
[解決済み] 現在のPowerShellスクリプトの場所を特定する最良の方法は何ですか?
-
[解決済み] PowerShellスクリプトに引数を渡すにはどうしたらいいですか?
-
[解決済み] PowerShellでスクリプトを終了させる
-
[解決済み】PowerShellスクリプトを実行する方法
-
[解決済み】PowerShellでBOMなしのUTF-8でファイルを書き込む場合
-
[解決済み】PowerShellでエコーと同等のスクリプトテストが可能
-
[解決済み】最初のエラーでPowerShellスクリプトを停止する方法は?
-
[解決済み] PowerShellで改行なしのテキストを出力するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Invoke-Command エラー "Parameter set cannot be resolved using specified named parameters".
-
[解決済み] OutVariableを使用してArrayListを作成する
-
[解決済み] Get-ADUser でのエラー: 無効な列挙コンテキスト
-
[解決済み] AzureのAdd-AzureDiskが動作しない
-
[解決済み] 管理者として実行しても、「要求されたレジストリへのアクセスは許可されません」と表示される。
-
[解決済み] PowerShellでLDAPクエリ
-
[解決済み] 'Connect-MsolService' はコマンドレット名として認識されません。
-
[解決済み] PowerShellでディレクトリを変更する
-
[解決済み] Windows PowerShellでファイルが存在するかどうかをチェックする?
-
[解決済み] 実行中のPowerShellスクリプトからすべての環境変数を表示する