2017-11-28 7 views
0

GET-ACLを使用してファイルの所有者を取得し、ドメインパスではなくユーザー名で変数を作成する方法が必要です。単にドメインを置き換えることはできませんでした。ドメインパスのないGET-ACLファイルの所有者

$user = GET-ACL $lastImage.FullName | Select Owner 
$user = $user.Replace('ANT\', '') 

このエラーを提供します。これが動作するため、私は文字列を置換することを知っている

Method invocation failed because [Selected.System.Security.AccessControl.FileSecurity] does not contain a method named 'Replace'. 
At line:1 char:1 
+ $user = $user.Replace('ANT\', '') 

は正しいです:

$user = 'ANT\username' 
$user = $user.Replace('ANT\', '') 

私も成功しませんスプリットを使用してみました:

$user = GET-ACL | Select Owner 
$user.Split('\')[1] 

これは、bu出力tの不要なヘッダが含まれています

$user = Get-ChildItem $lastImage.FullName | select @{Name='Owner';E= 
{(($_.GetAccessControl().Owner.Split('\'))[1])}} 

誰もがGET-ACLを使用して変数としてだけでユーザー名を取得する簡単な方法を知っていますか?そうでない場合は、使用する必要があるより優れたコマンドレットがありますか?

$user = GET-ACL $lastImage.FullName | Select Owner 

これに:この

答えて

2

変更

$user = GET-ACL $lastImage.FullName | Select -ExpandProperty Owner 

説明:文字列の代わりにPSCustomObject種類を交換しようとしている

は、.Replace()方法があります文字列メソッド、これはエラーが発生する理由ですdoes not contain a method named 'Replace'.

-ExpandPropertyを追加すると文字列の値が取得され、replaceメソッドが機能します。

参照:$user.Owner.Replace('ANT\', '')MSDN Blogs

+0

、 '取得-ACL | Get-Member'は、拡張された文字列があなたの望むものではないことがあるので、あなたが利用できるものを見る良い方法です。 – zzxyz

0

変更$user.Replace('ANT\', '')-ExpandPropertyさらに詳しい説明。あなたがやっていることは、オブジェクトのOwnerプロパティを参照しているからです。必要がないため、最初の行から| Select Ownerを削除することができます。

だから、次のようにこれらの線に沿って

$user = Get-Acl $lastImage.FullName 
$user = $user.Owner.Replace('ANT\', '') 
関連する問題