1

ログイン名を作成し、別のシステムにインポートされる別の csv にデータをエクスポートする csv ファイル (学生、学校、誕生日などのリスト) を読み込んでいます。私のcsvファイル(最後のユーザー名)で1行のデータしか取得できないことを除いて、すべてがうまく機能しています。毎回同じ行を上書きしていると思います。これをpowershellで行います。ヘルプ。これが私のコードです:

Add-PSSnapin Quest.ActiveRoles.ADManagement

#import list of students from hourly IC extract
$users = Import-Csv C:\Users\edge.brandon\Desktop\enrollment\mbcextract.csv | 
  where {$_.'grade' -ne 'PK' -and $_.'name' -ne 'Ombudsman' -and $_.'name' -ne 'Ombudsman MS' -and $_.'name' -ne 'z Transition Services' -and $_.'name' -ne 'z Home Services'}

if ($users) {
  foreach ($u in $users) {

    # sets middle name and initial to null so that variable does not cary over to next student if they have no middle name
    $middle= $null
    $mi= $null

    $first= ($u.'firstname')
    $last= ($u.'lastname')
    $middle= ($u.'middlename')
    $birth= ($u.'birthdate')
    $grade= ($u.'grade')
    $id= ($u.'studentNumber')
    $schoolid= ($u.'sch.number') 

    #Removes spaces, apostrophes, hyphens, periods, commas from name
    $first=$first.Replace(" ", "")
    $middle=$middle.Replace(" ", "")
    $last=$last.Replace(" ", "")
    $first=$first.Replace("'", "")
    $middle=$middle.Replace("'", "")
    $last=$last.Replace("'", "")
    $first=$first.Replace("-", "")
    $middle=$middle.Replace("-", "")
    $last=$last.Replace("-", "")
    $first=$first.Replace(".", "")
    $middle=$middle.Replace(".", "")
    $last=$last.Replace(".", "")
    $first=$first.Replace(",", "")
    $middle=$middle.Replace(",", "")
    $last=$last.Replace(",", "")

    # sets 1st and middle initial. also sets mmdd of birth
    $fi= $first.substring(0,1)
    $mi= $middle.substring(0,1)
    $mmdd =$birth.substring(0,4)

    #sets username and then makes sure it truncates anything after 20 characters
    $un= ($last + $fi + $mi +$mmdd)
    $un= $un.substring(0,20)
  }
}  **$users | 
  select $id,$un,$first,$last,$schoolid,$grade,$upn,"1"," ","0" | export-csv MBC.csv**

Remove-PSSnapin Quest.ActiveRoles.ADManagement

間違いを見つけて変更し$usersました$u ($u | select $id,$un,$first,$last,$schoolid,$grade,$upn,"1"," ","0" | export-csv mbc.csv -NoTypeInformation)

コードを介してブレークポイントステップを追加し、コードが実行されているときにcsvファイルを開くと、csvファイルの最初の行がパスごとに正しく入力されます。最初の行に書き続けます...追加ステートメントを試しましたが、役に立ちませんでした...csvファイルの次の行に移動するにはどうすればよいですか(つまり、行1にデータ行を書き込み、行 2 に移動し、別の行のデータを書き込みます)

4

2 に答える 2

1

私は完全な答えを提供することはできません(私はオフハンドでテストするためのcsvデータを持っておらず、メモリから具体的にコメントするのに十分なパワーシェルの関連ビットを知りません)が、少なくとも問題の一部はselectステートメントで変数の値を使用していますが、実際にそうするつもりだったとは想像できません。

select id,un,first,last,...代わりに(の代わりに)それらの名前でプロパティを取得するつもりだったと思いますselect $id,$un,$first,$last,...

于 2013-08-23T19:17:03.850 に答える