From b1ca188b8a16a49b79cd18ae39261fe9c666edf1 Mon Sep 17 00:00:00 2001 From: heqnx Date: Mon, 14 Jul 2025 11:54:51 +0300 Subject: working iis + mssql setup --- ansible/group_vars/all/main.yaml | 6 +- ansible/main.yaml | 26 ++--- ansible/roles/mssql01/tasks/cleanup.yaml | 3 - ansible/roles/mssql01/tasks/init.yaml | 9 -- ansible/roles/mssql01/tasks/install_software.yaml | 3 - ansible/roles/mssql01/tasks/join_domain.yaml | 13 --- ansible/roles/mssql01/tasks/main.yaml | 34 ------- ansible/roles/mssql01/tasks/reboot.yaml | 3 - ansible/roles/mssql01/tasks/set_hostname.yaml | 2 - ansible/roles/mssql01/tasks/setup_mssql.yaml | 7 -- ansible/roles/proxmox_vm/tasks/set_network.yaml | 16 +-- ansible/roles/websql01/tasks/cleanup.yaml | 3 + ansible/roles/websql01/tasks/init.yaml | 9 ++ ansible/roles/websql01/tasks/install_software.yaml | 3 + ansible/roles/websql01/tasks/join_domain.yaml | 13 +++ ansible/roles/websql01/tasks/main.yaml | 34 +++++++ ansible/roles/websql01/tasks/reboot.yaml | 3 + ansible/roles/websql01/tasks/set_hostname.yaml | 2 + ansible/roles/websql01/tasks/setup_websql.yaml | 7 ++ ansible/scripts/setup-websql.ps1 | 112 ++++++++++++--------- 20 files changed, 165 insertions(+), 143 deletions(-) delete mode 100644 ansible/roles/mssql01/tasks/cleanup.yaml delete mode 100644 ansible/roles/mssql01/tasks/init.yaml delete mode 100644 ansible/roles/mssql01/tasks/install_software.yaml delete mode 100644 ansible/roles/mssql01/tasks/join_domain.yaml delete mode 100644 ansible/roles/mssql01/tasks/main.yaml delete mode 100644 ansible/roles/mssql01/tasks/reboot.yaml delete mode 100644 ansible/roles/mssql01/tasks/set_hostname.yaml delete mode 100644 ansible/roles/mssql01/tasks/setup_mssql.yaml create mode 100644 ansible/roles/websql01/tasks/cleanup.yaml create mode 100644 ansible/roles/websql01/tasks/init.yaml create mode 100644 ansible/roles/websql01/tasks/install_software.yaml create mode 100644 ansible/roles/websql01/tasks/join_domain.yaml create mode 100644 ansible/roles/websql01/tasks/main.yaml create mode 100644 ansible/roles/websql01/tasks/reboot.yaml create mode 100644 ansible/roles/websql01/tasks/set_hostname.yaml create mode 100644 ansible/roles/websql01/tasks/setup_websql.yaml (limited to 'ansible') diff --git a/ansible/group_vars/all/main.yaml b/ansible/group_vars/all/main.yaml index 2a2246c..1969a09 100644 --- a/ansible/group_vars/all/main.yaml +++ b/ansible/group_vars/all/main.yaml @@ -34,8 +34,8 @@ tree_dc02_hostname : "{{ lookup('ansible.builtin.env', 'tree_dc02_h tree_dc02_vmid : "{{ lookup('ansible.builtin.env', 'tree_dc02_vmid') }}" child_dc03_hostname : "{{ lookup('ansible.builtin.env', 'child_dc03_hostname') }}" child_dc03_vmid : "{{ lookup('ansible.builtin.env', 'child_dc03_vmid') }}" -main_mssql01_hostname : "{{ lookup('ansible.builtin.env', 'main_mssql01_hostname') }}" -main_mssql01_vmid : "{{ lookup('ansible.builtin.env', 'main_mssql01_vmid') }}" +main_websql01_hostname : "{{ lookup('ansible.builtin.env', 'main_websql01_hostname') }}" +main_websql01_vmid : "{{ lookup('ansible.builtin.env', 'main_websql01_vmid') }}" main_mssql02_hostname : "{{ lookup('ansible.builtin.env', 'main_mssql02_hostname') }}" main_mssql02_vmid : "{{ lookup('ansible.builtin.env', 'main_mssql02_vmid') }}" main_web01_hostname : "{{ lookup('ansible.builtin.env', 'main_web01_hostname') }}" @@ -50,7 +50,7 @@ kali_attackbox_vmid : "{{ lookup('ansible.builtin.env', 'kali_attack main_dc01_ip_address : "{{ lookup('ansible.builtin.env', 'main_dc01_ip_address') }}" tree_dc02_ip_address : "{{ lookup('ansible.builtin.env', 'tree_dc02_ip_address') }}" child_dc03_ip_address : "{{ lookup('ansible.builtin.env', 'child_dc03_ip_address') }}" -main_mssql01_ip_address : "{{ lookup('ansible.builtin.env', 'main_mssql01_ip_address') }}" +main_websql01_ip_address : "{{ lookup('ansible.builtin.env', 'main_websql01_ip_address') }}" main_mssql02_ip_address : "{{ lookup('ansible.builtin.env', 'main_mssql02_ip_address') }}" main_web01_ip_address : "{{ lookup('ansible.builtin.env', 'main_web01_ip_address') }}" main_adcs01_ip_address : "{{ lookup('ansible.builtin.env', 'main_adcs01_ip_address') }}" diff --git a/ansible/main.yaml b/ansible/main.yaml index 4e84f2e..340c51a 100644 --- a/ansible/main.yaml +++ b/ansible/main.yaml @@ -88,27 +88,27 @@ ansible_winrm_server_cert_validation: ignore changed_when: false - - name: "deploy {{ main_mssql01_hostname }}.{{ main_domain_name }} vm on {{ proxmox_hostname }}" + - name: "deploy {{ main_websql01_hostname }}.{{ main_domain_name }} vm on {{ proxmox_hostname }}" include_role: name: proxmox_vm vars: os_type : "windows" template : "{{ windows_server_template_name }}" id : "{{ windows_server_template_id }}" - vm : "{{ main_mssql01_hostname }}.{{ main_domain_name }}" - newid : "{{ main_mssql01_vmid }}" - vmid : "{{ main_mssql01_vmid }}" - ip : "{{ main_mssql01_ip_address }}" + vm : "{{ main_websql01_hostname }}.{{ main_domain_name }}" + newid : "{{ main_websql01_vmid }}" + vmid : "{{ main_websql01_vmid }}" + ip : "{{ main_websql01_ip_address }}" gateway : "{{ network_gateway }}" dns : "{{ main_dc01_ip_address }}" - hostname : "{{ main_mssql01_hostname }}" + hostname : "{{ main_websql01_hostname }}" domain : "{{ main_domain_name }}" - fqdn : "{{ main_mssql01_hostname }}.{{ main_domain_name }}" + fqdn : "{{ main_websql01_hostname }}.{{ main_domain_name }}" - - name: "add {{ main_mssql01_hostname }}.{{ main_domain_name }} to in-memory inventory" + - name: "add {{ main_websql01_hostname }}.{{ main_domain_name }} to in-memory inventory" add_host: - name : "{{ main_mssql01_hostname }}.{{ main_domain_name }}" - ansible_host : "{{ main_mssql01_ip_address }}" + name : "{{ main_websql01_hostname }}.{{ main_domain_name }}" + ansible_host : "{{ main_websql01_ip_address }}" ansible_connection : "{{ win_connector }}" ansible_user : "{{ default_win_username }}" ansible_password : "{{ default_win_password }}" @@ -136,7 +136,7 @@ name: adcs01 when: inventory_hostname == main_adcs01_hostname + '.' + main_domain_name - - name: "configure {{ main_mssql01_hostname }}.{{ main_domain_name }}" + - name: "configure {{ main_websql01_hostname }}.{{ main_domain_name }}" include_role: - name: mssql01 - when: inventory_hostname == main_mssql01_hostname + '.' + main_domain_name + name: websql01 + when: inventory_hostname == main_websql01_hostname + '.' + main_domain_name diff --git a/ansible/roles/mssql01/tasks/cleanup.yaml b/ansible/roles/mssql01/tasks/cleanup.yaml deleted file mode 100644 index 0e59407..0000000 --- a/ansible/roles/mssql01/tasks/cleanup.yaml +++ /dev/null @@ -1,3 +0,0 @@ -- name: execute cleanup.ps1 - ansible.windows.win_powershell: - script: C:\scripts\cleanup.ps1 diff --git a/ansible/roles/mssql01/tasks/init.yaml b/ansible/roles/mssql01/tasks/init.yaml deleted file mode 100644 index a75d6cc..0000000 --- a/ansible/roles/mssql01/tasks/init.yaml +++ /dev/null @@ -1,9 +0,0 @@ -- name: execute init.ps1 - ansible.windows.win_powershell: - script: C:\scripts\init.ps1 - -- name: copy mssql installer - ansible.builtin.copy: - src: files/SQL2019-SSEI-Expr.exe - dest: C:\setup\SQL2019-SSEI-Expr.exe - diff --git a/ansible/roles/mssql01/tasks/install_software.yaml b/ansible/roles/mssql01/tasks/install_software.yaml deleted file mode 100644 index a5018a8..0000000 --- a/ansible/roles/mssql01/tasks/install_software.yaml +++ /dev/null @@ -1,3 +0,0 @@ -- name: execute install-software.ps1 - ansible.windows.win_powershell: - script: C:\scripts\install-software.ps1 diff --git a/ansible/roles/mssql01/tasks/join_domain.yaml b/ansible/roles/mssql01/tasks/join_domain.yaml deleted file mode 100644 index 6736ba2..0000000 --- a/ansible/roles/mssql01/tasks/join_domain.yaml +++ /dev/null @@ -1,13 +0,0 @@ -- name: join domain - ansible.windows.win_domain_membership: - dns_domain_name: "{{ main_domain_name }}" - domain_admin_user: "{{ main_domain_name }}\\Administrator" - domain_admin_password: "{{ default_win_password }}" - state: domain - register: domain_state - -- name: reboot - win_reboot: - reboot_timeout: 3600 - when: domain_state.reboot_required - diff --git a/ansible/roles/mssql01/tasks/main.yaml b/ansible/roles/mssql01/tasks/main.yaml deleted file mode 100644 index 3822369..0000000 --- a/ansible/roles/mssql01/tasks/main.yaml +++ /dev/null @@ -1,34 +0,0 @@ -- name: wait for winrm to be available - ansible.builtin.wait_for: - host: "{{ ansible_host }}" - port: "{{ ansible_port }}" - timeout: 300 - delegate_to: localhost - -- name: execute init.ps1 - import_tasks: init.yaml - -- name: set hostname - import_tasks: set_hostname.yaml - -- name: reboot after hostname change - import_tasks: reboot.yaml - -- name: join domain and reboot - import_tasks: join_domain.yaml - -- name: execute setup-mssql.ps1 - import_tasks: setup_mssql.yaml - -- name: reboot after mssql setup - import_tasks: reboot.yaml - -- name: pause 5 minutes for mssql setup to complete - pause: - minutes: 5 - -- name: execute install-software.ps1 - import_tasks: install_software.yaml - -- name: execute cleanup.ps1 - import_tasks: cleanup.yaml diff --git a/ansible/roles/mssql01/tasks/reboot.yaml b/ansible/roles/mssql01/tasks/reboot.yaml deleted file mode 100644 index a7266d0..0000000 --- a/ansible/roles/mssql01/tasks/reboot.yaml +++ /dev/null @@ -1,3 +0,0 @@ -- name: reboot - win_reboot: - reboot_timeout: 3600 diff --git a/ansible/roles/mssql01/tasks/set_hostname.yaml b/ansible/roles/mssql01/tasks/set_hostname.yaml deleted file mode 100644 index de974a4..0000000 --- a/ansible/roles/mssql01/tasks/set_hostname.yaml +++ /dev/null @@ -1,2 +0,0 @@ -- name: set hostname - win_shell: Rename-Computer -NewName "{{ main_mssql01_hostname }}" -Force diff --git a/ansible/roles/mssql01/tasks/setup_mssql.yaml b/ansible/roles/mssql01/tasks/setup_mssql.yaml deleted file mode 100644 index 4602242..0000000 --- a/ansible/roles/mssql01/tasks/setup_mssql.yaml +++ /dev/null @@ -1,7 +0,0 @@ -- name: setup mssql - ansible.windows.win_powershell: - script: C:\scripts\setup-mssql.ps1 - parameters: - DomainName: "{{ main_domain_name }}" - SvcUsername: svc_mssql01 - SvcPassword: "{{ default_win_svc_password }}" diff --git a/ansible/roles/proxmox_vm/tasks/set_network.yaml b/ansible/roles/proxmox_vm/tasks/set_network.yaml index c75aa0f..da809d5 100644 --- a/ansible/roles/proxmox_vm/tasks/set_network.yaml +++ b/ansible/roles/proxmox_vm/tasks/set_network.yaml @@ -1,4 +1,4 @@ -- name: "{{ fqdn }} : set up static ip address on windows" +- name: "{{ fqdn }} : (windows) set up static ip address on" win_shell: | Start-Transcript -Path C:\set_domain_network_log.txt -Append Get-NetIpAddress -InterfaceAlias 'Ethernet' | Remove-NetIPAddress -Confirm:$false @@ -18,36 +18,36 @@ ansible_winrm_transport: basic ansible_winrm_server_cert_validation: ignore -- name: "{{ fqdn }} : configure network for linux" +- name: "{{ fqdn }} : (linux) configure network" block: - - name: "{{ fqdn }} : get default interface" + - name: "{{ fqdn }} : (linux) get default interface" ansible.builtin.shell: ip route get 8.8.8.8 | sed -n 's/.*dev \([^\ ]*\).*/\1/p' register: interface_result - - name: "{{ fqdn }} : set default interface variable" + - name: "{{ fqdn }} : (linux) set default interface variable" ansible.builtin.set_fact: linux_interface_name: "{{ interface_result.stdout }}" netplan_ip_address: "{{ ip }}" - - name: "{{ fqdn }} : find netplan configs in /etc/netplan" + - name: "{{ fqdn }} : (linux) find netplan configs in /etc/netplan" ansible.builtin.find: paths: /etc/netplan recurse: yes register: yaml_configs - - name: "{{ fqdn }} : remove all netplan configs in /etc/netplan" + - name: "{{ fqdn }} : (linux) remove all netplan configs in /etc/netplan" ansible.builtin.file: path: "{{ item.path }}" state: absent loop: "{{ yaml_configs.files }}" - - name: "{{ fqdn }} : set netplan static ip address" + - name: "{{ fqdn }} : (linux) set netplan static ip address" ansible.builtin.template: src: static_ip_netplan.yaml.j2 dest: /etc/netplan/01-netcfg.yaml mode: '0644' - - name: "{{ fqdn }} : apply netplan configuration" + - name: "{{ fqdn }} : (linux) apply netplan configuration" ansible.builtin.command: netplan apply async: 15 poll: 0 diff --git a/ansible/roles/websql01/tasks/cleanup.yaml b/ansible/roles/websql01/tasks/cleanup.yaml new file mode 100644 index 0000000..0e59407 --- /dev/null +++ b/ansible/roles/websql01/tasks/cleanup.yaml @@ -0,0 +1,3 @@ +- name: execute cleanup.ps1 + ansible.windows.win_powershell: + script: C:\scripts\cleanup.ps1 diff --git a/ansible/roles/websql01/tasks/init.yaml b/ansible/roles/websql01/tasks/init.yaml new file mode 100644 index 0000000..a75d6cc --- /dev/null +++ b/ansible/roles/websql01/tasks/init.yaml @@ -0,0 +1,9 @@ +- name: execute init.ps1 + ansible.windows.win_powershell: + script: C:\scripts\init.ps1 + +- name: copy mssql installer + ansible.builtin.copy: + src: files/SQL2019-SSEI-Expr.exe + dest: C:\setup\SQL2019-SSEI-Expr.exe + diff --git a/ansible/roles/websql01/tasks/install_software.yaml b/ansible/roles/websql01/tasks/install_software.yaml new file mode 100644 index 0000000..a5018a8 --- /dev/null +++ b/ansible/roles/websql01/tasks/install_software.yaml @@ -0,0 +1,3 @@ +- name: execute install-software.ps1 + ansible.windows.win_powershell: + script: C:\scripts\install-software.ps1 diff --git a/ansible/roles/websql01/tasks/join_domain.yaml b/ansible/roles/websql01/tasks/join_domain.yaml new file mode 100644 index 0000000..6736ba2 --- /dev/null +++ b/ansible/roles/websql01/tasks/join_domain.yaml @@ -0,0 +1,13 @@ +- name: join domain + ansible.windows.win_domain_membership: + dns_domain_name: "{{ main_domain_name }}" + domain_admin_user: "{{ main_domain_name }}\\Administrator" + domain_admin_password: "{{ default_win_password }}" + state: domain + register: domain_state + +- name: reboot + win_reboot: + reboot_timeout: 3600 + when: domain_state.reboot_required + diff --git a/ansible/roles/websql01/tasks/main.yaml b/ansible/roles/websql01/tasks/main.yaml new file mode 100644 index 0000000..f176701 --- /dev/null +++ b/ansible/roles/websql01/tasks/main.yaml @@ -0,0 +1,34 @@ +- name: wait for winrm to be available + ansible.builtin.wait_for: + host: "{{ ansible_host }}" + port: "{{ ansible_port }}" + timeout: 300 + delegate_to: localhost + +- name: execute init.ps1 + import_tasks: init.yaml + +- name: set hostname + import_tasks: set_hostname.yaml + +- name: reboot after hostname change + import_tasks: reboot.yaml + +- name: join domain and reboot + import_tasks: join_domain.yaml + +- name: execute setup-websql.ps1 + import_tasks: setup_websql.yaml + +- name: reboot after mssql setup + import_tasks: reboot.yaml + +- name: pause 5 minutes for mssql setup to complete + pause: + minutes: 5 + +- name: execute install-software.ps1 + import_tasks: install_software.yaml + +- name: execute cleanup.ps1 + import_tasks: cleanup.yaml diff --git a/ansible/roles/websql01/tasks/reboot.yaml b/ansible/roles/websql01/tasks/reboot.yaml new file mode 100644 index 0000000..a7266d0 --- /dev/null +++ b/ansible/roles/websql01/tasks/reboot.yaml @@ -0,0 +1,3 @@ +- name: reboot + win_reboot: + reboot_timeout: 3600 diff --git a/ansible/roles/websql01/tasks/set_hostname.yaml b/ansible/roles/websql01/tasks/set_hostname.yaml new file mode 100644 index 0000000..7c53a16 --- /dev/null +++ b/ansible/roles/websql01/tasks/set_hostname.yaml @@ -0,0 +1,2 @@ +- name: set hostname + win_shell: Rename-Computer -NewName "{{ main_websql01_hostname }}" -Force diff --git a/ansible/roles/websql01/tasks/setup_websql.yaml b/ansible/roles/websql01/tasks/setup_websql.yaml new file mode 100644 index 0000000..ea527b6 --- /dev/null +++ b/ansible/roles/websql01/tasks/setup_websql.yaml @@ -0,0 +1,7 @@ +- name: setup websql + ansible.windows.win_powershell: + script: C:\scripts\setup-websql.ps1 + parameters: + DomainName: "{{ main_domain_name }}" + SvcUsername: svc_mssql02 + SvcPassword: "{{ default_win_svc_password }}" diff --git a/ansible/scripts/setup-websql.ps1 b/ansible/scripts/setup-websql.ps1 index 9f5db5c..7865091 100644 --- a/ansible/scripts/setup-websql.ps1 +++ b/ansible/scripts/setup-websql.ps1 @@ -1,6 +1,7 @@ param ( [string]$DomainName = "contoso.com", - [string]$SvcUsername = "svc_websql01", + #[string]$SvcUsername = "svc_websql01", + [string]$SvcUsername = "svc_mssql02", [string]$SvcPassword = "Svc1234!" ) @@ -13,7 +14,69 @@ $wwwroot3 = "C:\inetpub\wwwroot3" Start-Transcript -Path $logFile -Append -# --- IIS Setup --- +try { + New-Item -Path "C:\setup\media" -ItemType "Directory" -Force + @" +;SQL Server Configuration File +[OPTIONS] +IACCEPTSQLSERVERLICENSETERMS="True" +ACTION="Install" +ENU="True" +QUIET="True" +QUIETSIMPLE="False" +UpdateEnabled="False" +ERRORREPORTING="False" +USEMICROSOFTUPDATE="False" +FEATURES=SQLENGINE,FULLTEXT +UpdateSource="MU" +HELP="False" +INDICATEPROGRESS="False" +X86="False" +INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server" +INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" +INSTANCENAME="SQLEXPRESS" +SQMREPORTING="False" +INSTANCEID="SQLEXPRESS" +RSINSTALLMODE="DefaultNativeMode" +INSTANCEDIR="C:\Program Files\Microsoft SQL Server" +AGTSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" +AGTSVCSTARTUPTYPE="Automatic" +COMMFABRICPORT="0" +COMMFABRICNETWORKLEVEL="0" +COMMFABRICENCRYPTION="0" +MATRIXCMBRICKCOMMPORT="0" +SQLSVCSTARTUPTYPE="Automatic" +FILESTREAMLEVEL="0" +ENABLERANU="False" +SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS" +SQLSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" +SAPWD="$SvcPassword" +SQLSYSADMINACCOUNTS="BUILTIN\Administrators" +ADDCURRENTUSERASSQLADMIN="True" +TCPENABLED="1" +NPENABLED="0" +BROWSERSVCSTARTUPTYPE="Disabled" +RSSVCSTARTUPTYPE="manual" +FTSVCACCOUNT="NT Service\MSSQLFDLauncher" +"@ | Out-File "C:\setup\sql_conf.ini" + + Start-Process -FilePath "C:\setup\SQL2019-SSEI-Expr.exe" -ArgumentList "/configurationfile=C:\setup\sql_conf.ini /IACCEPTSQLSERVERLICENSETERMS /MEDIAPATH=C:\setup\media /QUIET /HIDEPROGRESSBAR" -Wait + Set-ItemProperty -Path "HKLM:\Software\Microsoft\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQLServer\SuperSocketNetLib\Tcp\IPAll" -Name "TcpPort" -Value "1433" -Force + Restart-Service -Name "MSSQL`$SQLEXPRESS" + New-NetFirewallRule -DisplayName "SQLServer default instance" -Direction Inbound -LocalPort 1433 -Protocol TCP -Action Allow + + $env:Path += ";C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn" + SqlCmd -E -Q "CREATE LOGIN [$NetBiosName\$SvcUsername] FROM WINDOWS" + SqlCmd -E -Q "SP_ADDSRVROLEMEMBER '$NetBiosName\$SvcUsername', 'SYSADMIN'" + + SqlCmd -E -Q "ALTER LOGIN sa ENABLE" + SqlCmd -E -Q "ALTER LOGIN sa WITH PASSWORD = '$SvcPassword', CHECK_POLICY=OFF" + Write-Host "[INFO] Added $NetBiosName\$SvcUsername as MSSQL login and sysadmin" + Write-Host "[INFO] Enabled SA login" +} catch { + Write-Host "[ERR] SQL Server setup failed" +} + try { Install-WindowsFeature -Name Web-Server -IncludeManagementTools Install-WindowsFeature -Name Web-Asp-Net45 @@ -22,7 +85,6 @@ try { Write-Host "[ERR] Failed to install IIS and ASP.NET" } -# Upload form content @" using System; using System.IO; @@ -83,7 +145,6 @@ public partial class UploadPage : Page "@ | Out-File "$wwwroot1\Web.config" -Force -# Default site - port 80 try { New-WebSite -Name "MyASPXSite" -Port 80 -PhysicalPath $wwwroot1 -ApplicationPool "DefaultAppPool" Set-ItemProperty "IIS:\AppPools\DefaultAppPool" -Name processModel -Value @{userName="$SvcUsername";password="$SvcPassword";identityType=3} @@ -94,7 +155,6 @@ try { Write-Host "[ERR] Failed to create site 1" } -# ACLs for wwwroot1 try { $svcRule = New-Object System.Security.AccessControl.FileSystemAccessRule("$DomainName\$SvcUsername", "Modify", "ContainerInherit,ObjectInherit", "None", "Allow") $acl = Get-Acl $wwwroot1 @@ -105,7 +165,6 @@ try { Write-Host "[ERR] Failed to set ACL for $wwwroot1" } -# Second site - port 8080 try { Copy-Item $wwwroot1 -Destination $wwwroot2 -Recurse -Force New-WebAppPool -Name "DefaultAppPool2" @@ -122,42 +181,6 @@ try { Write-Host "[ERR] Failed to create site 2" } -# SQL Server Express setup -try { - New-Item -Path "C:\setup\media" -ItemType "Directory" -Force - @" -;SQL Server Configuration File -[OPTIONS] -IACCEPTSQLSERVERLICENSETERMS="True" -ACTION="Install" -ENU="True" -QUIET="True" -FEATURES=SQLENGINE,FULLTEXT -INSTANCENAME="SQLEXPRESS" -SQLSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" -SQLSYSADMINACCOUNTS="BUILTIN\Administrators" -ADDCURRENTUSERASSQLADMIN="True" -TCPENABLED="1" -NPENABLED="0" -SAPWD="$SvcPassword" -"@ | Out-File "C:\setup\sql_conf.ini" - - Start-Process -FilePath "C:\setup\SQL2019-SSEI-Expr.exe" -ArgumentList "/configurationfile=C:\setup\sql_conf.ini /IACCEPTSQLSERVERLICENSETERMS /MEDIAPATH=C:\setup\media /QUIET" -Wait - Set-ItemProperty -Path "HKLM:\Software\Microsoft\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQLServer\SuperSocketNetLib\Tcp\IPAll" -Name "TcpPort" -Value "1433" - Restart-Service -Name "MSSQL`$SQLEXPRESS" - New-NetFirewallRule -DisplayName "SQLServer 1433" -Direction Inbound -LocalPort 1433 -Protocol TCP -Action Allow - - $env:Path += ";C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn" - SqlCmd -E -Q "CREATE LOGIN [$NetBiosName\$SvcUsername] FROM WINDOWS" - SqlCmd -E -Q "SP_ADDSRVROLEMEMBER '$NetBiosName\$SvcUsername', 'SYSADMIN'" - SqlCmd -E -Q "ALTER LOGIN sa ENABLE" - SqlCmd -E -Q "ALTER LOGIN sa WITH PASSWORD = '$SvcPassword', CHECK_POLICY=OFF" - Write-Host "[INFO] SQL Server installed/configured" -} catch { - Write-Host "[ERR] SQL Server setup failed" -} - -# Third site - port 9090 with upload + SQL query page try { Copy-Item $wwwroot1 -Destination $wwwroot3 -Recurse -Force New-WebAppPool -Name "SqlQueryAppPool" @@ -165,7 +188,6 @@ try { Set-ItemProperty "IIS:\AppPools\SqlQueryAppPool" -Name processModel -Value @{userName="$SvcUsername";password="$SvcPassword";identityType=3} New-NetFirewallRule -DisplayName "HTTP (9090)" -Direction Inbound -Protocol TCP -LocalPort 9090 -Action Allow - # SQL Query Page @" <%@ Page Language="C#" Debug="true" %> <%@ Import Namespace="System.Data" %> @@ -191,7 +213,7 @@ try { litResults.Text = ""; foreach (DataColumn col in dt.Columns) { - litResults.Text += $""; + litResults.Text += string.Format("", col.ColumnName); } litResults.Text += ""; @@ -200,7 +222,7 @@ try { litResults.Text += ""; foreach (var item in row.ItemArray) { - litResults.Text += $""; + litResults.Text += string.Format("", item); } litResults.Text += ""; } -- cgit v1.2.3
{col.ColumnName}{0}
{item}{0}