2017-05-02 6 views
1

これは誰かにとっては簡単なことですが、私は経験がありません。私はマップされたネットワークドライブ情報をPCから引き出しています。私はパスがアクティブかどうか、そしてその人がまだアクセスできることを確認するためにパスをテストしています。テストは正常に動作します。ここに私の問題があります...出力から新しいスクリプトを作成する

テストが$ trueの場合、ドライブの再マッピングのために新しい.ps1ファイルにコード行を出力します。私はちょうどそこにいると思っていますが、行の出力ではなく、行のコードを出力することについて私の頭を覆すことはできません。助けてくれてありがとう!

コメントパー
foreach ($Drive IN $Drives) 
{ 
    $MND = $Network.OpenSubKey("$Drive") 
    $Share = $MND.GetValue("RemotePath") 
    $Path = Test-Path "$Share\*" 
    IF ($Path -eq $true) 
    { 
     $ErrorActionPreference = "SilentlyContinue" 
     Stop-Transcript | out-null 
     $ErrorActionPreference = "Continue" 
     Start-Transcript -path C:\output.ps1 -append 
     "New-PSDrive -Name "$Drive" -PSProvider FileSystem -Root "$Share" -Persist" 
     Stop-Transcript 
    } 
} 
+0

私はばかです。自分自身でそれをとても難しくするのではなく、IF全体を単一の行に変更しました。 "New-PSDrive -Name $ Drive -PSProvider FileSystem -Root $ Share -Persist" Out-File C:\ output.ps1 -Append –

答えて

1

(あなたがしたくないヘッダーの内容の多くを得るだろうと)、あなたはおそらくStart-Transcriptを使用したくないが、むしろOut-File -Appendのようなファイルに出力し、何かまたはAdd-Content

あなたはまた、おそらく不要な内部二重引用符を削除する必要があります(または、単一引用符でそれらを置き換えることができます):

"New-PSDrive -Name $Drive -PSProvider FileSystem -Root $Share -Persist" | Add-Content c:\output.ps1 

それはまた、あなたがCのルートにファイルを書き込むための権限を持ってチェックする価値があります:\、これは、Windows以外のバージョンのWindowsでは管理者以外のユーザーに対してはデフォルトでブロックされます。

+1

ヒントを気に入ってください!ルートファイルは単なる例に過ぎませんでした。デスクトップのフォルダに書き込んでいます。私はこれをもう少し変更したいと思っていました。なぜなら私はこれを遠隔操作しており、私に許可があるかどうかを知りたくないからです。だから私はそれが同様に、テストパス全体とスクリプトを作成しています。ちょうど "今どこにいますか"をお知らせしたいと思っています。再度、感謝します! –

関連する問題