1

StreamWriterスクリプトでオブジェクトが開いているか、既に閉じているかを判断しようとしています。閉じていない場合は、ファイルに新しい行を書き込むことができます。閉じている場合は、他のアクションを実行する必要があります....

ストリームがまだ開いているかどうかを確認するにはどうすればよいですか?

サンプル テスト スクリプト。

$stream = [System.IO.StreamWriter] "C:\testing.txt"
$stream.WriteLine("TEST")
$stream.close()
if($stream)){
    #stream still open, write new line
    $stream.WriteLine("Stream is still open.  Write.")
    $stream.close()
}else(
    #stream not open... end script, send reponse.
}
4

1 に答える 1

5

-objectにBaseStreamが存在するかどうかを確認できます。Streamwriterこのような:

if($stream.BaseStream)){
    #Stream is open
}

例:

$sw = New-Object System.IO.StreamWriter "C:\test.txt"

PS > $sw | fl *


AutoFlush      : False
BaseStream     : System.IO.FileStream
Encoding       : System.Text.UTF8Encoding
FormatProvider : nb-NO
NewLine        : 

PS > if($sw.BaseStream) { "yes" }
yes

PS > $sw.Close()

PS > if($sw.BaseStream) { "yes" }

PS > $sw


AutoFlush      : False
BaseStream     : 
Encoding       : 
FormatProvider : nb-NO
NewLine        : 

EDITまたは、次のいずれかを確認できます。

if($sw.BaseStream.CanWrite) {
    #You have permission to write = stream open and writeable
    }

#or

if($sw.BaseStream.SafeFileHandle) {
    #you have a filehandle = stream open
    }
于 2013-05-09T16:10:17.453 に答える