web-dev-qa-db-ja.com

PowerShellがCSVセット変数から読み取る

ガイダンスが欲しいと思っていました。

「Path」と「Owner」の2つの列を持つcsvファイルがあります。

Belkowスクリプトを作成しましたが、CSVファイルから読み取ることができますが、csvから変数を割り当てようとすると失敗します。

どこが悪いのかわかりません。任意の助けいただければ幸いです。

import-csv c:\test\output.csv | foreach-object {
  $Path = $_.path
  $owner =$_.owner
  "The username is $Path and the owner is $owner"
}
ForEach-Object {
         $Path = $_.path
         $owner =$_.owner
         $Account = New-Object -TypeName System.Security.Principal.NTAccount -ArgumentList '$owner';
         $Acl = Get-Acl -Path $path ; 
    $Acl.SetOwner($Account);
    Set-Acl -Path $owner -AclObject $Acl; 
    }

最初のセグメントからの出力は正しく、パスと所有者が表示されますが、2番目の部分はパスに従って所有者を設定していません。

ありがとう

2
Norrin Rad

2番目のforeachには、反復する入力オブジェクトがありません。だからどちらか

  • 変数にインポートし、それをforeachループに2回パイプします。
  • 2回インポート

$csv = import-csv c:\test\output.csv 
$csv | foreach-object {
  $Path = $_.path
  $owner =$_.owner
  "The username is $Path and the owner is $owner"
}
$csv | ForEach-Object {
    $Path = $_.path
    $owner =$_.owner
    $Account = New-Object -TypeName System.Security.Principal.NTAccount -ArgumentList "$owner"
    $Acl = Get-Acl -Path $path
    $Acl.SetOwner($Account);
    Set-Acl -Path $Path -AclObject $Acl
}
3
LotPings