11

私はPowershellに次のコードを持っています

$filePath = "C:\my\programming\Powershell\output.test.txt"

try
{
    $wStream = new-object IO.FileStream $filePath, [System.IO.FileMode]::Append, [IO.FileAccess]::Write, [IO.FileShare]::Read

    $sWriter = New-Object  System.IO.StreamWriter $wStream

    $sWriter.writeLine("test")
 }

エラーが発生し続けます:

引数「1」を値「[IO.FileMode]::Append」で変換できません。「FileStream」のタイプは「System.IO.FileMode」:「値「[IO.FileMode]::Append」を変換できません」列挙値が無効なため、「System.IO.FileMode」と入力します。次の列挙値のいずれかを指定して、再試行してください。可能な列挙値は、「CreateNew、Create、Open、OpenOrCreate、Truncate、Append」です。

私はC#で同等のものを試しました、

    FileStream fStream = null;
    StreamWriter stWriter = null;

    try
    {
        fStream = new FileStream(@"C:\my\programming\Powershell\output.txt", FileMode.Append, FileAccess.Write, FileShare.Read);
        stWriter = new StreamWriter(fStream);
        stWriter.WriteLine("hahha");
    }

それはうまくいきます!

PowerShellスクリプトの何が問題になっていますか?ところで、私はPowerShellで実行しています

Major  Minor  Build  Revision
-----  -----  -----  --------
3      2      0      2237
4

4 に答える 4

23

もう1つの方法は、値の名前だけを使用して、PowerShellにそれをターゲットタイプにキャストさせることです。

New-Object IO.FileStream $filePath ,'Append','Write','Read'
于 2013-01-13T06:46:25.013 に答える
9

コマンドレットを使用しNew-Object、ターゲット型コンストラクターがパラメーターを受け取る場合は、-ArgumentList(New-Objectの)パラメーターを使用するか、パラメーターを括弧で囲む必要があります。コンストラクターを括弧で囲むことをお勧めします。

# setup some convenience variables to keep each line shorter
$path = [System.IO.Path]::Combine($Env:TEMP,"Temp.txt")
$mode = [System.IO.FileMode]::Append
$access = [System.IO.FileAccess]::Write
$sharing = [IO.FileShare]::Read

# create the FileStream and StreamWriter objects
$fs = New-Object IO.FileStream($path, $mode, $access, $sharing)
$sw = New-Object System.IO.StreamWriter($fs)

# write something and remember to call to Dispose to clean up the resources
$sw.WriteLine("Hello, PowerShell!")
$sw.Dispose()
$fs.Dispose()

New-Objectコマンドレットオンラインヘルプ: http: //go.microsoft.com/fwlink/?LinkID = 113355

于 2013-01-12T16:16:41.760 に答える
4

さらに別の方法は、列挙型を括弧で囲むことです。

$wStream = new-object IO.FileStream $filePath, ([System.IO.FileMode]::Append), `
    ([IO.FileAccess]::Write), ([IO.FileShare]::Read)
于 2013-01-13T09:40:47.053 に答える
0

ログファイルまたはテキストファイルに書き込むことが目標の場合、PowerShellでサポートされているコマンドレットを試してこれを実現できますか?

Get-Help Out-File -Detailed
于 2013-01-12T16:02:10.300 に答える