0

上でコマンドを実行します。Get-Adcomputerの私のフィルタリングされたリストを取得するスクリプトを作成する しようとしています。毎回私は正確にやろうとしています何は、私はPowerShellのに非常に新しいです、まず各

...

ADからすべてのコンピュータを取得します。これは、bashが、それはなどとても簡単になりました場合、私は..私はWTFを行くロジックを取得すると思うと出会いますXiopwb*基準。私はリストを持っていたら、私はへ\\Xiopwb20\Nsiwebrootディレクトリのパーミッションを変更する必要がある唯一のドメイン管理者とAセキュリティグループ「webadmins」が含ま

マイロジック:

Xio*PWB* はただ乗り満たすADからすべてのコンピュータを取得そのリストで、これまで「名前」のためにそのリスト 内のオブジェクトのNAME Get-ACL \\Name from list\Nsiwebroot 削除します* は、ユーザー/グループを追加します。

私が持っているもの:

シンプル可能性として、私はドン..

PS C:\Windows\system32> Get-ADComputer -filter * | Where-Object {$_.Name -like "xiopwb*"} | Select Name | ForEach-Object { Get-Acl \\$_.Name\nsiwebroot} 

すべて「のForEach」までは...働く私は等の必要があるとPCのの名前だけを取得します」 100行のスクリプトが必要です。

おかげ

**更新**

それは二重である\そのちょうどそれが表示されない...私が度に望むものをやっているよう

が見える理由は全く分かりません。しかし、その形式のうちの吐き出しは、ファンキーな。 @{Name=XIOPWB09}

PS C:\Windows\system32> Get-ADComputer -filter * | Where-Object {$_.Name -like "xiopwb*"} | Select Name | ForEach-Object {get-acl "\\$_\D$\nsiwebroot"} 

取得-ACL:パスが見つかりません '\ @ {名前= XIOPWB09} \ D $ \ nsiwebroot' が存在しないため。ラインで :1文字:99 + ... OPWB * "} |選択名|をForEach-Objectに{取得-ACL "\ $ _ \ D $ \ nsiwebroot"} + ~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ + CategoryInfo:ObjectNotFound:(:) [取得-ACL]、ItemNotFoundException + FullyQualifiedErrorId:GetAcl_PathNotFound_Exception、Microsoft.PowerShell.Commands.GetAclCommand

get-acl: '\ @ {Name = XIOPWB06} \ D $ \ nsiwebroot'が存在しないため、パスを見つけることができません。名前| ForEach-Objectに{取得-ACLを "\ $ _ \ D $ \ nsiwebroot"} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:ObjectNotFound:(:)、ItemNotFoundException + FullyQualifiedErrorId [-ACL取得]:GetAcl_PathNotFound_Exception、Microsoft.PowerShell.Commands.GetAclCommand

+0

は '\ Xiopwb20 \ Nsiwebroot'は何ですか?それは有効な方法ではありません。それは '\\ Xiopwb20 \ Nsiwebroot'で、あなたは* share *権限を変更したいと思っていますか?または、管理共有を介してリモートディスク上に何かを得るには、 '\\ Xiopwb20 \ c $ \ Nsiwebroot \'であるはずですか?それとも 'c:\ xiopwb20 \ nsiwebroot'のように、コンピュータの名前を付けたローカルディスク上のパスですか? – TessellatingHeckler

+1

1)ADコンピュータを入手してWindows ACLをbashで変更するのは簡単ではありません。 2) '$ .Name'は物ではないので、あなたの' where-object'は壊れています。 '$ _。Name'である必要があります。そして、あなたは 'Get-ADComputer-Filter 'の名前のような' xiopwb * '"部分でフィルタリングを行うことができます。 3)あなたの '|名前| 'を選択すると効果的に何もしません。 4)あなたの 'get-acl \ $。Name'はあなたが' $ _。Name 'を必要とするのと同じ理由で壊れており、パスの周りに二重引用符が必要な場合があります。 – TessellatingHeckler

+1

パスを二重引用符で囲む必要があり、$ _。Nameを$($ _。Name)に変更して正しく処理する必要があります。これはまた、ACLオブジェクトを持っているところまで到達するだけです。Set-ACLを使って操作して適用する必要があります。これは、単一のパイプラインで行うのは簡単ではありません。 –

答えて

1

"Select Name" 表ヘッダ名前のオブジェクトを返しています。 "Select -ExpandProperty Name"はここに必要なもので、Stringに変換します。

よろしく、

kvprasoon

関連する問題