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

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

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

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

Q&A

解決済

1回答

1373閲覧

PowerShellで出力結果を破棄する方法

as00000

総合スコア21

PowerShell

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

0グッド

0クリップ

投稿2021/11/19 05:15

編集2021/11/19 23:02

前提・実現したいこと

PowerShellでファイルを操作するコードを書いていますが
関数内で発生する意図しない出力を破棄する方法が理解出来ず悩んでいます
検索すると色々出てきて
・| Out-Null
・[void]
・> $null
などは見つけたのですが、その通りに書くと必要なデータが取得出来ず困っています

やむなく
$aaa = t_FileTimeDifferent $files "t?????.txt"
$aaa[$aaa.Count - 1]
で配列の末尾を使用していますが良くない方法でしょうか?

どの様に記述したらboolの結果だけを取得出来るかご教示ください

該当のソースコード

ps1

1# 【呼び出され側 ※本当はboolのみを返したい】 2function t_FileTimeDifferent { 3 param ( 4 $files , [string] $t_FileString 5 ) 6 7 $hhhFile 8 $t_File 9 [bool] $timeDiffTargetFileExits = $false 10 11 foreach ($item in $files) { 12 if ($item -like "*HHH*.txt") { 13 $hhhFile = $item.LastWriteTime 14 } 15 elseif ($item -like $t_FileString) { 16 $t_File = $item.LastWriteTime 17 } 18 19 # 両方取得したらフラグを立ててループを抜ける 20 If ( ($t_File -ne $null) -and ($hhhFile -ne $null )) { 21 $timeDiffTargetFileExits = $true 22 break 23 } 24 } 25 26 # 両方の情報を取得済みだったら 27 If ($timeDiffTargetFileExits) { 28 # 時刻の差を算出 29 $diff = New-TimeSpan $hhhFile $t_File | Out-Null # 【←$diffに時差を取得したいが$nullになってしまい】 30 31 # 30秒以上差があったらエラー 32 If ([Math]::Abs($diff.TotalSeconds) -gt 30) { #【←ここが正しく判定出来なくなる】 33 return $true 34 } 35 } 36 37 return $false 38 39} 40 41 42# 【呼び出し側】 43function ErrorCheck { 44 param ([string]$targetFolder) 45 46 47 # ファイル一覧を取得 48 [string] $files 49 $files = Get-ChildItem -Path $targetFolder 50 51 52--- 中略 --- 53 54 55 # ファイルの更新時間に差が無いか をチェック 56 $aaa = t_FileTimeDifferent $files "t?????.txt" 57 # ↑試しに変数で受けてみたら 58 # [0]: $null 59 # [1]: $null 60 # [2]: $false 61 # の配列になっています 62 63 if (t_FileTimeDifferent $files "t?????.txt") { 64 return 8 65 } 66 67 68--- 以下 略 --- 69 70} 71 72

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

・PSVersion 5.1.19041.1237

・Visual Studio Code
バージョン: 1.62.2 (system setup)
OS: Windows_NT x64 10.0.19043

・PowerShell v2021.10.2
の拡張を入れてコーディングしています

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

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

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

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

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

Zuishin

2021/11/19 05:20

> $diff = New-TimeSpan $hthFile $t_File | Out-Null # 【←$diffに時差を取得したいが$nullになってしまい】 | Out-Null を取ればいいだけなんじゃないですか?
Zuishin

2021/11/19 06:15

> $hhhFile > $t_File $null の原因はこれ。
Zuishin

2021/11/19 23:21

なんだ、人の言葉が理解できないやつか。 あきらめろ。お前には無理。
guest

回答1

0

自己解決

Zuishinさんの

Zuishin 2021/11/19 15:15

$hhhFile
$t_File

$null の原因はこれ。

を元に色々試した結果、ご指摘のあった
先頭部分の
$hhhFile
$t_File
をコメントアウトした所期待通りの値を取得出来ました
ベストアンサーを付ける事が出来ないのですが
おかげ様で解決出来ました
ありがとうございました

投稿2021/11/20 02:11

as00000

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問