ライブラリを取得する為に、nuget を使用します。 少し参照する dll が多いですが、VisualStudio で実行テストした後 PowerShell に移植しています
$code = @" using System; using System.Text; using System.IO; using System.Collections.Generic; using System.Collections.Specialized; using Microsoft.SqlServer.Management.Common; using Microsoft.SqlServer.Management.Smo; public class MyClass { public static void create_sql() { UTF8Encoding UTF8N_Enc = new UTF8Encoding(); // false は上書き StreamWriter WriteFile = new StreamWriter("sqlexpress.sql", false, UTF8N_Enc); // サーバー Server srv; // インスタンス srv = new Server(); // サーバーインスタンスの情報 srv.ConnectionContext.AutoDisconnectMode = AutoDisconnectMode.NoAutoDisconnect; srv.ConnectionContext.LoginSecure = false; srv.ConnectionContext.Login = "sa"; srv.ConnectionContext.Password = ""; // 接続 srv.ConnectionContext.Connect(); // バージョンの表示 Console.WriteLine(srv.Information.Version); // 参考 Scripter scripter = new Scripter(srv); Database myDb = srv.Databases["lightbox"]; foreach (Table myTable in myDb.Tables) { StringCollection tableScripts = myTable.Script(); foreach (string script in tableScripts) { WriteFile.WriteLine(script); } } WriteFile.Close(); WriteFile.Dispose(); srv.ConnectionContext.Disconnect(); } } "@ Add-Type -Path ("C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.ConnectionInfo.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Smo.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.Sdk.Sfc.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SmoExtended.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SqlEnum.dll") Add-Type -Language CSharp -TypeDefinition $code -ReferencedAssemblies ("C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.ConnectionInfo.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Smo.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.Sdk.Sfc.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SmoExtended.dll","C:\user\lightbox\nuget\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SqlEnum.dll") [MyClass]::create_sql()