我在 foreach 循环中有变量 $a 。
我想为文件名设置一个字符串。
$server = "mysqlservername"
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SmoEnum') | out-null
$My='Microsoft.SqlServer.Management.Smo'
$srv = new-object ("$My.Server") $Server
$scripter = new-object ("$My.Scripter") $srv
$scripter.Options.ToFileOnly = $true
$a = new-object System.Data.Datatable
$a=$srv.databases[$Database].EnumObjects([long]0x1FFFFFFF -band $all)
$a | FOREACH-OBJECT
{
$scripter.Options.Filename = "$($_.schema).$($_.name)"
#then script out an object using that filename)
$UrnCollection = new-object ('Microsoft.SqlServer.Management.Smo.urnCollection')
$URNCollection.add($_.urn)
$scripter.script($URNCollection)
}
我希望文件名是“schema.name”,但前提是 $_.schema 存在(并非所有对象都有模式)。如果不是,我希望它只是“名称”
我不确定,当它为空时,$a.schema 是否为空、null 或空。不确定这是否重要。
当前设置的方式,如果架构为空(?),文件名是“.myobjectnamehere”。
有没有办法在一行中做到这一点?我可以用大量的 IF 条件来做到这一点,但如果可以的话,我宁愿内联。谢谢。
这是 $a | 的内容 通用汽车
TypeName: System.Data.DataRow
Name MemberType Definition
---- ---------- ----------
AcceptChanges Method void AcceptChanges()
BeginEdit Method void BeginEdit()
CancelEdit Method void CancelEdit()
ClearErrors Method void ClearErrors()
Delete Method void Delete()
EndEdit Method void EndEdit()
Equals Method bool Equals(System.Object obj)
GetChildRows Method System.Data.DataRow[] GetChildRows(string relationName), System.Data.DataR...
GetColumnError Method string GetColumnError(int columnIndex), string GetColumnError(string colum...
GetColumnsInError Method System.Data.DataColumn[] GetColumnsInError()
GetHashCode Method int GetHashCode()
GetParentRow Method System.Data.DataRow GetParentRow(string relationName), System.Data.DataRow...
GetParentRows Method System.Data.DataRow[] GetParentRows(string relationName), System.Data.Data...
GetType Method type GetType()
HasVersion Method bool HasVersion(System.Data.DataRowVersion version)
IsNull Method bool IsNull(int columnIndex), bool IsNull(string columnName), bool IsNull(...
RejectChanges Method void RejectChanges()
SetAdded Method void SetAdded()
SetColumnError Method void SetColumnError(int columnIndex, string error), void SetColumnError(st...
SetModified Method void SetModified()
SetParentRow Method void SetParentRow(System.Data.DataRow parentRow), void SetParentRow(System...
ToString Method string ToString()
Item ParameterizedProperty System.Object Item(int columnIndex) {get;set;}, System.Object Item(string ...
DatabaseObjectTypes Property string DatabaseObjectTypes {get;set;}
Name Property string Name {get;set;}
Schema Property string Schema {get;set;}
Urn Property string Urn {get;set;}