ファイルサーバーに新しいユーザー用のフォルダーを作成するスクリプトを作成しようとしています。次に、そのフォルダーから継承された権限を取り除き、特定の権限を再度追加します。フォルダーを正常に追加し(スクリプトに静的エントリを指定した場合)、ドメイン管理者権限を付与したり、継承を削除したりします。ユーザーとして設定した変数を使用するのに問題があります。毎回静的ユーザーになりたくありません。このスクリプトを実行し、ユーザー名を尋ねてもらい、それからフォルダーを作成して、同じユーザーにその完全な権限を与えます。提供したユーザー名に基づいたフォルダ。次のように、ユーザーとしてSmithdを使用できます。
New-Item \\ fileserver\home $\Smithd –Type Directory
しかし、次のようにユーザーを参照することはできません:
New-Item \\ fileserver\home $\$ username –Type Directory
ここに私が持っているものがあります:
$username = read-Host -Prompt "Enter User Name"
New-Item \\\fileserver\home$\$username –Type Directory
Get-Acl \\\fileserver\home$\$username
$acl = Get-Acl \\\fileserver\home$\$username
$acl.SetAccessRuleProtection($True, $False)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain\Domain Admins","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain\"+$username,"FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl \\\fileserver\home$\$username $acl
私はそれを機能させるためにいくつかの方法を試しましたが、うまくいきませんでした。どんなアイデアや提案も歓迎します、ありがとう。
私の以前の仕事では、古い 'mkdir'コマンドを使用してpowershellスクリプトにフォルダーを作成できることを思い出しましたが、最初にパスを引用し、echo/write-Hostでテストすることをお勧めします。ただテストするためにこれを試してください:
_write-Host "\\${file_server}\home$\${user_name}"
_
テストするWindowsマシンにアクセスできませんが、「$」も問題である可能性があると思います。
_$
_をエスケープするには、バックティックでこれを試してください:
_write-Host "\\${file_server}\home`$\${user_name}"
_
そして、文字列があなたの好みに合うことがわかるまで、続けないでください。おそらく問題ではありませんが、read-Hostに-Promptが必要だとは思いません。書き込みホスティングは常に、適切な健全性チェックです。
より良いサポートを提供できるように、すぐにWindowsマシンにアクセスしたいと思っています。
また、興味がある場合は、プログラムの先頭でユーザー名をパラメーターとして指定できるため、$ file_serverと$ user_nameのペアのファイルから名前を読み取る別のスクリプトからスクリプトを繰り返し呼び出すことができます。ただparam( [string] $file_server, [string] $user_name )
を
幸運を! :)