PowerShell スクリプトでの先頭ゼロの記述

このQ&Aのポイント
  • Windows Powershell のスクリプトを使用して、検証環境で多数のユーザーを一括作成する方法について紹介します。
  • 先頭ゼロを付与したアカウント名を作成するための処理について、具体的な方法を求めています。
  • アカウント名に付与する数字の桁数を3桁に統一するためのアドバイスをお願いします。
回答を見る
  • ベストアンサー

PowerShell スクリプトでの先頭ゼロの記述

検証環境で多数のユーザーを一括作成するため、Windows Powershell のスクリプト (.ps1) を使用して 以下の通り記述しています。 for ($i = 1; $i -le 100; $i++) { $username = "user-" + $i $computer= [ADSI]"WinNT://." $user = $computer.Create("user", $username) $user.SetPassword("p@ssw0rd") $user.SetInfo() } 上述のスクリプトで 100 ユーザーを作成できる (user-1 から user-100 まで作れます) のですが、アカウント名に付与する数字の桁数を 3 桁に統一したいのです。 しかしながら、上述のスクリプトでは、アカウント名に付与する通し番号 (user- の後) の先頭が 0 (ゼロ) であるとゼロを表示せず、たとえば user-1 のようにユーザーを作成してしまいます。 これを、user-001 のように本来作成したいのですが。。。 http://gallery.technet.microsoft.com/scriptcenter/eba74819-4e66-477d-aefd-a7f939521009 上記サイトなどを参考に先頭にゼロを付与する処理を作るべく頑張ってみましたが、うまくいっていません。 恐縮ですが、どうにか目的を達成できるようなアドバイスをいただきたく書き込みしました。 アドバイスくだされば幸いです。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

やりようはいくらでもありそうな気がするんだけど.... $username = "user-%{0:d3}" -f $i とか.

関連するQ&A

  • スクリプトの拡張子を教えてください

    http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/feb08/hey0201.mspx 「サウンドをサウンド イベントにランダムに割り当てる方法はありますか」MSN SCriputing Guy!より 上のスクリプトを作成したいのですが、メモ帳で作成していいのでしょうか? その場合は保存の拡張子は何になりますか? あるいは、サイトにあるソフトでダウンロードしてスクリプトを作成するべきでしょうか? http://www.microsoft.com/japan/technet/scriptcenter/tools/default.mspx このサイトにはいくつかソフトがありますが、どれでもいいのでしょうか? スクリプトは初心者なので、見当がつきません。 教えてください。

  • このサイトのコードを利用したいです。

    http://gallery.technet.microsoft.com/scriptcenter/d73b2ae1-2997-4952-8946-18dea79ba827 「Set objUser = GetObject("LDAP://cn=ken myer, ou=Finance, dc=fabrikam, dc=com") Wscript.Echo objUser.WhenCreated」 知らないユーザーアカウントがあったため、作成日を知りたいと思ったところ上記のサイトの上記のコードにたどり着きました。しかし私にはこのコードの使い方が分かりません。どなたか使い方を教えてください。

  • ユーザーへのディレクトリ権限付与について

    WindowsXPのOracle9i環境にて、 まず、以下のようにしてユーザ「username」を作成しました。 create user username identified by Password default tablespace tab_space temporary tablespacetemp; grant dba,resource,connect to username; 次にsysユーザにて、CREATE DIRECTORY FILE_PATH as 'd:\temp'; ディレクトリを作成しました。 そして、そのディレクトリに対して、以下のように権限付与しようとすると、「ユーザ"username"が存在しません。」エラーが発生します。 grant READ,WRITE ON directory dir to username; また、grant READ,WRITE ON directory dir to public; とすると、権限付与は成功しますが、ユーザusernameにはディレクトリ参照権限は与えられていませんでした。 何か間違っておりますでしょうか? それとも何か手順で足らないものがあるのでしょうか? ご教示いただければと思います。

  • WSHでテキストファイルの値を代入

    WSHについての質問です。 環境はwindows2003サーバです。 初歩的な質問かと思いますが・・・ マイクロソフトのサイトで、 WSHでユーザアカウントを作成するサンプルが ありまして、 http://www.microsoft.com/japan/technet/scriptcenter/scripts/ad/users/manage/usmgvb05.mspx (以下スクリプト) Set objOU = GetObject("LDAP://OU=management,dc=fabrikam,dc=com") Set objUser = objOU.Create("User", "cn=MyerKen") objUser.Put "sAMAccountName", "myerken" objUser.SetInfo これで1人分のアカウントを作成できるわけですが、 他のテキストファイルに複数のユーザの情報を記入し、 それを自動的に連続して読み込んで、 複数ユーザを一気に作成するには、 どのようなコードを書けばよいでしょうか。 用意するテキストファイルは下記のようなものです。 OU名,ユーザ名 newou,user1 newou,user2 newou1,user101 ・   ・ ・   ・ ・   ・ (任意の値が入ります) スクリプトの、ユーザ情報の部分をカスタマイズして テキストの1行目から代入して、 それを繰り返すコードにすればよいのでしょうが、 わかりません・・・ ヒントだけでも助かります。どうかよろしくお願いいたします。

  • ActiveDirectoryにおけるパスワード一括登録

    Windows2003Serverで構築したActiveDirectoryにおいて、1000以上のアカウントに対してパスワードを一括登録したいと思っています。 色々検索した結果、マイクロソフトのスクリプトセンターで見つけたWSHで実施するのが簡単そうです。 http://www.microsoft.com/japan/technet/scriptcenter/scripts/ad/users/pwds/uspwvb01.mspx そこにあったサンプルは以下で、3行になっています。 Set objUser = GetObject _ ("LDAP://cn=MyerKen,ou=management,dc=fabrikam,dc=com") objUser.SetPassword "i5A2sj*!" WSHのことは初心者のため、初歩的な質問で恐縮ですが、 上記スクリプトを1行で記述したいのですが、「_」のところでエラーになってしまいます。 どのように変更したらいいのでしょうか? 1000以上のデータをEXCLEで作成しBATで実行したいので 複数行になるのはまずいのです。ご教授よろしくお願いします。

  • ローカルユーザー削除スクリプト作成(VBScript)

    ローカルユーザー削除スクリプト作成(VBScript) 先日、ネットワーク上のWindowsXPに、任意の管理者権限付きユーザーをVBScriptを用いて作成しました。(スクリプトは自身で作成しました) 本日、このユーザーは必要なくなったので、削除するスクリプトを作成しようとしましたが、うまく動かないのでご教授いただければ幸いです。 スクリプトを下記に記します。 スクリプトのユーザー作成部分です。うまく動いてくれました。 Set objComputer = GetObject("WinNT://" & strComputer & ",Computer") Set objNewUser = objComputer.Create("user", strUserName ) Set objAdminGroup = GetObject("WinNT://" & strComputer & "/Administrators,group") *strComputerは、ネットワーク上のPC名。strUserNameは、任意のユーザー名です。 スクリプトのユーザー削除部分です。 Set objComputer = GetObject("WinNT://" & strComputer & ",Computer") Set objNewUser = objComputer.Delete("user", strUserName ) *strComputerは、ネットワーク上のPC名。strUserNameは、任意のユーザー名です。 ユーザー作成の情報は、数多く見つけたのですが、削除の方法は見つけることは出来なかったです。ですので、objComputer.Delete("user", strUserName )この辺は自身の推測で記述しました。 作成がこの記述なら、削除はこんな感じかなって思いまして…。 情報でもよろしいので、ご教授お願いします。

  • ユーザ追加のスクリプト作成について教えてください

    Linuxでスクリプトを作りたいのですが初めてでしてアドバイスいただきたいのですが。「ユーザを加え、パスワードの設定。その後確認画面として/etc/passwordと/etc/shadowにて新規に作成したユーザとパスワード”のみ”表示される」とゆうのが条件です。更にwhileを使ったユーザを作成したのちのy/nの応答でnを入力するまでは繰り返しユーザの追加が行えるようにしたいのですが。 途中まで教科書片手に作りましたが行き詰まってしまいました。 Variableに混乱しています。 CONTINUE=y while [ "$CONTINUE" != "n" ] do echo "adding a user" useradd -d /etc/shadow "$USERNAME" echo -e "type a user name" /c read USERNAME passwd "$PASSWORD" echo -e "type a password" /c read PASSWORD

  • telnet 110 のシェルスクリプトについて

    linux初心者です。 telnet localhost 110 の確認スクリプトを作成したいのですが、調べた結果以下のスクリプトを作成しましたがうまく動作してくれません。 お分かりになる方ご教授ください。 test.sh #!/bin/bash sleep 1; echo user $1 sleep 1; echo pass $2 sleep 1; echo stat sleep 1; echo quit test1.sh #!/bin/bash sh ./test.sh | telnet localhost 110 ./test1.sh hogeuser hogepass 同じアカウントの場合$1 $2の部分にuser名 パスワードを記入すればいいのは分かるのですが、毎回アカウント・パスワードが違うため引数に渡したいと思います。 よろしくお願いいたします。

  • Outlook Expressのユーザー切り替えスクリプト

    現在OSはWindowsXP sp3 Windows Script HostはVersion5.7です。 以前どこかのサイトに載っていた下記のOutlook Expressのユーザー切り替えスクリプトを作成し動かしてみたのですが全く反応がありません。 何が原因でしょうか??お教え下さい。 スクリプトの内容 Dim WshShell On Error Resume Next Set WshShell =WScript.CreateObject("WScript.Shell") WshShell.RegWrite "HKCU\Identities\Last Username","ユーザー名" WshShell.RegWrite "HKCU\Identities\Last User ID","{Identitiesのファイルの英数字}" WshShell.Run """C:\Program Files\Outlook Express\msimn.exe""" Set WshShell=Nothing

  • Cドライブから新規に増設したHDDへの“Desktop”の移動に関して

    先日、VISTA SP1搭載のPCにて、HDDの増設を行いました。 その際に、C:\Users\Username\Desktopを、新しく増設したIドライブ内に移動させようと考え、Computer→Userを開き、Desktopを右クリック→プロパティをクリック、そして場所タブを開き、保存場所をI:\Users\Usernameと書き換える方法で移動させました。 こうしてDesktopをIドライブ内にコピーした後、C:\Users\Username\Desktopの方は削除しました。ですが、その後、デスクトップ上にI:\Users\Username\Desktopの内容が反映されず、また、デスクトップ上に新規にフォルダ等を作成した場合も、消去したはずのDesctopフォルダがCドライブ上に作成されてしまい、結果的には何もIドライブ上には反映されません。 今までデスクトップの状態がC:\Users\Username\Desktopと同期していた様に、現在のデスクトップの状態とI:\Users\Username\Desktopの状態をリンクさせたいのですが、どの様にすれば良いのか分かりません。 一応http://okwave.jp/qa2952712.htmlの質問やhttp://www.microsoft.com/japan/athome/magazine/ucontents/users/winxp/0503/01.aspx等の記事は読んだのですが、どうも解決には繋がりませんでした。対処法をご存知の方、御助力の方を頂ければ幸いです。