powershell使用/ IN <pathToFile执行appcmd

Jon*_*Jon 2 powershell appcmd

我正在构建一个ps1文件,通过appcmd创建我的所有IIS站点,虚拟目录和应用程序池.我已经使用appcmd list/xml从主机获取设置并将它们保存到配置文件中.我想让powershell执行appcmd命令

  appcmd add apppool /IN < pathtoFile.xml
Run Code Online (Sandbox Code Playgroud)

我的问题是在powershell内是我不能使用小于符号:

PS C:\temp\deployments> .\createIISSetup.ps1
The '<' operator is reserved for future use.
At C:\temp\deployments\createIISSetup.ps1:36 char:28
+     .$appcmd add apppool /IN < <<<<  $pathToAppPoolSettings;
    + CategoryInfo          : ParserError: (<:OperatorToken) [], ParseException
    + FullyQualifiedErrorId : RedirectionNotSupported
Run Code Online (Sandbox Code Playgroud)

如果我使用管道:

  appcmd add apppool /IN | pathtoFile.xml
Run Code Online (Sandbox Code Playgroud)

我明白了:

PS C:\temp\deployments> .\createIISSetup.ps1
Expressions are only allowed as the first element of a pipeline.
At C:\temp\deployments\createIISSetup.ps1:36 char:51
+     .$appcmd add apppool /IN | $pathToAppPoolSettings <<<< ;
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : ExpressionsMustBeFirstInPipeline
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 5

一位同事给了我答案.只是旋转它的头:

type $pathToapppoolSettings | .$appcmd add apppool/IN; 
Run Code Online (Sandbox Code Playgroud)

这很棒.


小智 5

Get-Content appppols.xml | .\appcmd.exe add apppool /in
Run Code Online (Sandbox Code Playgroud)