diff --git a/tfexec/providers_schema.go b/tfexec/providers_schema.go
index 995dd15..858f8c1 100644
--- a/tfexec/providers_schema.go
+++ b/tfexec/providers_schema.go
@@ -10,9 +10,37 @@
 	tfjson "github.com/hashicorp/terraform-json"
 )
 
+type providersSchemaConfig struct {
+	reattachInfo ReattachInfo
+}
+
+var defaultProvidersSchemaOptions = providersSchemaConfig{}
+
+type ProvidersSchemaOption interface {
+	configureProvidersSchema(*providersSchemaConfig)
+}
+
+func (opt *ReattachOption) configureProvidersSchema(conf *providersSchemaConfig) {
+	conf.reattachInfo = opt.info
+}
+
 // ProvidersSchema represents the terraform providers schema -json subcommand.
-func (tf *Terraform) ProvidersSchema(ctx context.Context) (*tfjson.ProviderSchemas, error) {
-	schemaCmd := tf.providersSchemaCmd(ctx)
+func (tf *Terraform) ProvidersSchema(ctx context.Context, opts ...ProvidersSchemaOption) (*tfjson.ProviderSchemas, error) {
+	c := defaultProvidersSchemaOptions
+	for _, o := range opts {
+		o.configureProvidersSchema(&c)
+	}
+
+	mergeEnv := map[string]string{}
+	if c.reattachInfo != nil {
+		reattachStr, err := c.reattachInfo.marshalString()
+		if err != nil {
+			return nil, err
+		}
+		mergeEnv[reattachEnvVar] = reattachStr
+	}
+
+	schemaCmd := tf.providersSchemaCmd(ctx, mergeEnv)
 
 	var ret tfjson.ProviderSchemas
 	err := tf.runTerraformCmdJSON(ctx, schemaCmd, &ret)
@@ -28,9 +56,9 @@
 	return &ret, nil
 }
 
-func (tf *Terraform) providersSchemaCmd(ctx context.Context, args ...string) *exec.Cmd {
+func (tf *Terraform) providersSchemaCmd(ctx context.Context, mergeEnv map[string]string, args ...string) *exec.Cmd {
 	allArgs := []string{"providers", "schema", "-json", "-no-color"}
 	allArgs = append(allArgs, args...)
 
-	return tf.buildTerraformCmd(ctx, nil, allArgs...)
+	return tf.buildTerraformCmd(ctx, mergeEnv, allArgs...)
 }
