0

問題に取り組んでいますが、正しい構文を取得できないようです。

古い IIS6 マシンからの仮想ディレクトリとパスのリストをそれぞれ含む一連の csv ファイルを含むディレクトリがあります。これらを新しい IIS7.5 マシンで再作成しています。ディレクトリ「iis:\sites\Atlanta」に移動してこのコマンドを実行すると、一度に 1 つのディレクトリを追加できます。

Import-Csv C:\Users\MIGXHZ700\Desktop\Atlanta.csv | Where-Object {$_.Path -match "\\"} | ForEach-Object {New-Item $_.Name -Type VirtualDirectory -physicalPath $_.Path}

私の人生では、スクリプトでこれを実行するための構文を正しく取得できません。連結の問題だと思いますが、100%確実ではありません。これが私がスクリプトを使用している場所です。

$dirs = ls C:\Users\[blah]\Desktop\*.csv | foreach-object {
    Import-Csv $_ | 
    Where-Object {$_.Path -match "\\"} |
    ForEach-Object {New-Item 'IIS:\Sites\'+$_.Name -Type VirtualDirectory -physicalPath $_.Path}
}

Foreach 内で Foreach を実行することも問題になる可能性がありますか?

助けてくれてありがとう。

4

1 に答える 1

2

'IIS:\Sites\'+$_.Name-Pathパラメーターは文字列引数を取りますが、それは式であるため、New-Itemの有効な引数ではありません。これは、作成するアイテムのパスを表す文字列として評価される式ですが、括弧で囲んで評価する必要があります。

New-Item ('IIS:\Sites\' + $_.Name) -Type VirtualDirectory -PhysicalPath $_.Path

ところで、$dirsの意図は何ですか? New-Itemコマンドの出力が割り当てられます。これは、DirectoryInfo オブジェクトの配列になります ($dirs = Get-ChildItem IIS:\Sites\これらすべてのディレクトリを作成した後に得られるものと同じです)。それはあなたが望むものですか?

于 2013-09-16T22:12:52.130 に答える