このページの例は単なる間違っています。彼らはパスC:\Scripts\WindowsPowerShell
を参照することを意味したか、またはスペースを含むディレクトリを引用するのを忘れてしまったようです。
だから、これらの一つとなっている必要があります。
New-Item c:\scripts\WindowsPowerShell -type directory
New-Item 'c:\scripts\Windows PowerShell' -type directory
New-Item "c:\scripts\Windows PowerShell" -type directory
は自問し、何PowerShell
だけに言及しているのでしょうか?どのパラメータに対応していますか?
編集:コメンターが指摘したように、実施例は、別個-Path
と-Name
が指定され、そしてその称するところPowerShell
が-Name
パラメータの値になっていたnameSet
パラメータを表示するようになっていました。それは正しいように見えます。この例がうまくいかなかった理由は、-Name
パラメータを位置指定することができないためです。これについては、MSDNの記事「リンク先」と組み込みヘルプにあります:
その場合
Type: String
Parameter Sets: nameSet
Aliases:
Required: True
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
、その例としては、これらのようなものされている必要があります:
New-Item c:\scripts\Windows -Name PowerShell -type directory
New-Item -Path c:\scripts\Windows -Name PowerShell -type directory
だから反復する、名前付きパラメータは、ここで働いているだろう、と混乱を避けているだろう。一般
彼らは非常に明確だ(とその後も、私は避けることをお勧めしたい)場合を除き、あなたは、スクリプト内の位置パラメータを使用すべきではありません。
名前付きパラメータを使用すると、このことがわかりやすくなりました。また、タブの補完は、パラメータ名の入力やパスの補完(通常は適切な引用符付き)に役立ちます。
私はあなたがあなたのものに変更すべきだと思う:
New-Item -Path $backupPath -Type Directory -Force
そして、そのTechNetの記事を見ている、それは本当に良いではありません。 MSDN article on New-Itemのほうが優れています。これはGet-Help New-Item
を実行したときに表示される情報です。
サイド質問:
その後、再びスクリプトがあまりにも長くなったときに、PowerShellが失敗する可能性があります。
何ですか?
私は冗談ではありません。我々は、サーバのセットアップ、設定、メンテナンスタスクスケジューリングを行う5000行のPSモノリスを持っています。それは大きすぎるので壊れた。パラメータは、透過的な理由がなくなるように、機能をお互いの位置に置くだけです。LLVMの静的解析ツールを使用して、データフローを書かれたとおりに検証しました。 5400行の後、それはそれだけで崩れます。私たちは複数のスクリプトレットに分割しています。 – patrickjp93
合意。この例では、 'C:\ Scripts'フォルダ内に' Windows PowerShell'という名前の新しいフォルダを作成すると明記しています。 – andyb
@andybさらなる見方私はあなたに同意し、(今削除された)他のコメントがありますが、位置パラメータが混乱する可能性があるという点をさらに強調していると思います。私は明確に編集しました。ありがとう! – briantist