启动进程问题 运行 WsusUtil.exe
Start-Process Issues running WsusUtil.exe
我有一个非常简单的问题,我似乎无法弄清楚...
我有一个 powershell 脚本来更新 WSUS 数据,然后将其导出以便我可以将其刻录到 CD 以用于我们的安全环境,一切都很好,除了 运行ning wsusutil.exe 我得到一个尝试定义参数时出错。
这是原剧本
$nicedate = Get-Date -UFormat %m-%d-%Y
Write-Output("Starting wsusutil...")
Set-Location "C:\Program Files\Update Services\Tools"
Start-Process wsusutil.exe export "E:$nicedate-export.xml.gz" "E:$nicedate-export.log"
Write-Output("wsusutil completed")
但我得到的错误是...
"Start-Process : A positional parameter cannot be found that accepts argument 'E:\Metadata-14-2021-export.xml.gz'."
所以我修改了代码来做到:
Write-Output("Starting wsusutil...")
"C:\Program Files\Update Services\Tools\WsusUtil.exe" export "E:\Metadata$nicedate-export.xml.gz" "E:\Metadata$nicedate-export.log"
Write-Output("wsusutil completed")
但它仍然没有启动该服务。我只需要 运行 在 WsusUtil.exe 上导出并定义日志和 zip 的输出。关于我做错了什么的想法?
注意:经过测试后,我计划将这条线变成 try-catch 以备将来使用。
让我们花点时间回顾一下Start-Process
好吗?
帮助页面描述的 Start-Process
cmdlet 语法是:
SYNTAX
Start-Process [-FilePath] <String> [[-ArgumentList] <String[]>] [-Credential <PSCredential>] [-LoadUserProfile]
[-NoNewWindow] [-PassThru] [-RedirectStandardError <String>] [-RedirectStandardInput <String>]
[-RedirectStandardOutput <String>] [-UseNewEnvironment] [-Wait] [-WindowStyle {Normal | Hidden | Minimized |
Maximized}] [-WorkingDirectory <String>] [<CommonParameters>]
Start-Process [-FilePath] <String> [[-ArgumentList] <String[]>] [-PassThru] [-Verb <String>] [-Wait] [-WindowStyle
{Normal | Hidden | Minimized | Maximized}] [-WorkingDirectory <String>] [<CommonParameters>]
你是如何 运行你当前的代码正在寻找位置参数来匹配 wsutil.exe
之后的每个空格,即使你需要那些作为参数。要实际使用这些作为参数,请记住使用 -ArgumentList
参数。所以而不是
Start-Process wsusutil.exe export "E:$nicedate-export.xml.gz" "E:$nicedate-export.log"
变成
Start-Process wsusutil.exe -ArgumentList 'export "E:$nicedate-export.xml.gz" "E:$nicedate-export.log"'
或者为了更安全,
Start-Process wsusutil.exe -ArgumentList @('export', '"E:$nicedate-export.xml.gz"', '"E:$nicedate-export.log"')
你的第二次尝试,
Write-Output("Starting wsusutil...")
"C:\Program Files\Update Services\Tools\WsusUtil.exe" export "E:\Metadata$nicedate-export.xml.gz" "E:\Metadata$nicedate-export.log"
Write-Output("wsusutil completed")
试图将 "C:\Program Files\Update Services\Tools\WsusUtil.exe" export "E:\Metadata$nicedate-export.xml.gz" "E:\Metadata$nicedate-export.log"
作为字符串而不是命令来读取。如果我运行
"C:\Program Files\Update Services\Tools\WsusUtil.exe"
在 powershell 中,输出等同于 运行
Write-Output "C:\Program Files\Update Services\Tools\WsusUtil.exe"
如果您尝试从文件路径调用文件,请记住使用调用字符 &
& "C:\Program Files\Update Services\Tools\WsusUtil.exe" export "E:\Metadata$nicedate-export.xml.gz" "E:\Metadata$nicedate-export.log"
我有一个非常简单的问题,我似乎无法弄清楚...
我有一个 powershell 脚本来更新 WSUS 数据,然后将其导出以便我可以将其刻录到 CD 以用于我们的安全环境,一切都很好,除了 运行ning wsusutil.exe 我得到一个尝试定义参数时出错。
这是原剧本
$nicedate = Get-Date -UFormat %m-%d-%Y
Write-Output("Starting wsusutil...")
Set-Location "C:\Program Files\Update Services\Tools"
Start-Process wsusutil.exe export "E:$nicedate-export.xml.gz" "E:$nicedate-export.log"
Write-Output("wsusutil completed")
但我得到的错误是...
"Start-Process : A positional parameter cannot be found that accepts argument 'E:\Metadata-14-2021-export.xml.gz'."
所以我修改了代码来做到:
Write-Output("Starting wsusutil...")
"C:\Program Files\Update Services\Tools\WsusUtil.exe" export "E:\Metadata$nicedate-export.xml.gz" "E:\Metadata$nicedate-export.log"
Write-Output("wsusutil completed")
但它仍然没有启动该服务。我只需要 运行 在 WsusUtil.exe 上导出并定义日志和 zip 的输出。关于我做错了什么的想法?
注意:经过测试后,我计划将这条线变成 try-catch 以备将来使用。
让我们花点时间回顾一下Start-Process
好吗?
帮助页面描述的 Start-Process
cmdlet 语法是:
SYNTAX
Start-Process [-FilePath] <String> [[-ArgumentList] <String[]>] [-Credential <PSCredential>] [-LoadUserProfile]
[-NoNewWindow] [-PassThru] [-RedirectStandardError <String>] [-RedirectStandardInput <String>]
[-RedirectStandardOutput <String>] [-UseNewEnvironment] [-Wait] [-WindowStyle {Normal | Hidden | Minimized |
Maximized}] [-WorkingDirectory <String>] [<CommonParameters>]
Start-Process [-FilePath] <String> [[-ArgumentList] <String[]>] [-PassThru] [-Verb <String>] [-Wait] [-WindowStyle
{Normal | Hidden | Minimized | Maximized}] [-WorkingDirectory <String>] [<CommonParameters>]
你是如何 运行你当前的代码正在寻找位置参数来匹配 wsutil.exe
之后的每个空格,即使你需要那些作为参数。要实际使用这些作为参数,请记住使用 -ArgumentList
参数。所以而不是
Start-Process wsusutil.exe export "E:$nicedate-export.xml.gz" "E:$nicedate-export.log"
变成
Start-Process wsusutil.exe -ArgumentList 'export "E:$nicedate-export.xml.gz" "E:$nicedate-export.log"'
或者为了更安全,
Start-Process wsusutil.exe -ArgumentList @('export', '"E:$nicedate-export.xml.gz"', '"E:$nicedate-export.log"')
你的第二次尝试,
Write-Output("Starting wsusutil...")
"C:\Program Files\Update Services\Tools\WsusUtil.exe" export "E:\Metadata$nicedate-export.xml.gz" "E:\Metadata$nicedate-export.log"
Write-Output("wsusutil completed")
试图将 "C:\Program Files\Update Services\Tools\WsusUtil.exe" export "E:\Metadata$nicedate-export.xml.gz" "E:\Metadata$nicedate-export.log"
作为字符串而不是命令来读取。如果我运行
"C:\Program Files\Update Services\Tools\WsusUtil.exe"
在 powershell 中,输出等同于 运行
Write-Output "C:\Program Files\Update Services\Tools\WsusUtil.exe"
如果您尝试从文件路径调用文件,请记住使用调用字符 &
& "C:\Program Files\Update Services\Tools\WsusUtil.exe" export "E:\Metadata$nicedate-export.xml.gz" "E:\Metadata$nicedate-export.log"