![](/img/trans.png)
[英]Choosing between Windows Process Activation Services (WAS) and IIS 7
[英]Backup IIS settings with Windows Process
我可以使用以下命令備份IIS的設置
//sites
C:\Windows\system32\inetsrv\appcmd.exe list site /config /xml > C:\Temp\iis_config_sites.xml
//apppools
C:\Windows\system32\inetsrv\appcmd.exe list apppool /config /xml > C:\Temp\iis_config_apppool.xml
當我從命令提示符運行這些命令時,它可以正常工作。 XML文件已創建。 但是我想通過使用System.Diagnostics.Process
從C#代碼執行此命令來自動化此過程。 為此,我使用以下代碼
using (Process process = new Process())
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = @"C:\Windows\system32\inetsrv\appcmd.exe";
startInfo.Arguments = @"list site /config /xml > C:\Temp\iis_config_sites.xml";
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
}
但是,當我運行此代碼時,什么也沒有發生。 未創建XML文件。 但是沒有錯誤,也沒有警告。 執行此命令的程序在Windows Server 2019和IIS 10的Administrator帳戶下運行。我也嘗試添加WorkingDirectory
,但這也沒有幫助。
我使用Process
通過WinRar生成一個壓縮文件夾,並且也可以正常工作。
因此,如果有人知道可能是什么大問題。
問題是您在參數中使用'>',這是一個CMD命令,指示它將命令的輸出(在這種情況下為appcmd.exe
)寫入指定的文件路徑( C:\\Temp\\iis_config_sites.xml
) 。 當然哪個不appcmd.exe
作為appcmd.exe
的參數。
您有兩種選擇:
以以下方式使用它,等效於在CMD中執行命令:
startInfo.FileName = @"C:\\Windows\\system32\\cmd.exe"; startInfo.Arguments = "/c \\"C:\\\\Windows\\\\system32\\\\inetsrv\\\\appcmd.exe\\" list site /config /xml > C:\\\\Temp\\\\iis_config_sites.xml";
請注意, /c
是cmd.exe的命令行選項,用於將其余參數作為“命令”執行,就像您將其輸入命令行窗口一樣。 其余部分與您通常在cmd中鍵入的命令相同。
使用appcmd.exe提供的另一個選項來備份IIS,而無需將輸出重定向到文件。 命令為appcmd.exe add backup %backupname%
。 此命令將添加IIS配置的備份,以后您可以通過restore backup $backupname%
來還原它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.