2011-08-19 50 views
1

好日子,为什么我的PowerShell结果重复?

PowerShell的新人在这里...

如果我输出到屏幕这样的:

foreach($databasePermission in $database.EnumDatabasePermissions($user.Name)) 
{ 
    Write-Host $databasePermission.PermissionState $databasePermission.PermissionType "TO" $databasePermission.Grantee 
} 

我得到这个,这是我想要的:

Grant CONNECT TO dbo 

但是,如果我尝试输出到像这样的文本文件:

foreach($databasePermission in $database.EnumDatabasePermissions($user.Name)) 
{ 
    "$databasePermission.PermissionState $databasePermission.PermissionType TO $databasePermission.Grantee" | Out-File $filename 
} 

我的结果重复这样的:

[dbname] Database: cust_serv, Grant, CONNECT.PermissionState [dbname] Database: cust_serv, Grant, CONNECT.PermissionType TO [dbname] Database: cust_serv, Grant, CONNECT.Grantee 

谢谢!

回答

3

如果您访问字符串中的一个对象的属性,你必须把它们放在$(...)

"$databasePermission.PermissionState" 

"$($databasePermission.PermissionState)" 
+0

谢谢!!!!!! –

2

好方式之间的区别构造长字符串是使用字符串格式。这是更可读(IMO ATLEAST,因为你没有做$($...)等):

"{0} {1} TO {2}" -f $databasePermission.PermissionState,$databasePermission.PermissionType,$databasePermission.Grantee 
相关问题