【发布时间】:2018-09-13 17:24:49
【问题描述】:
在这里待了几个小时。我正在尝试从 Windows 机器中获取软件列表,并将该列表导出为 CSV,使用 $env:userprofile 的位置和文件“Software Inventories\$Username.csv”的路径
我收到以下错误
Export-Csv : Could not find a part of the path 'C:\Users\mylogin\Software Inventories\@{UserName=domain\mylogin}.csv'.
At C:\Users\mylogin\Dropbox\Powershell\GetSoftwareList.ps1:24 char:191
+ ... e, Vendor, Version | Sort-Object DisplayName | Export-Csv -Path $Path
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Export-Csv], DirectoryNotFoundException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ExportCsvCommand
代码如下:
$ComputerName = Read-Host 'Enter IP or computer name'
$WindowsVersion = Get-WmiObject -ComputerName $ComputerName -Credential 'domain\myadmin' -Class Win32_OperatingSystem | ForEach-Object -MemberName Caption
If ($WindowsVersion -match 'Microsoft Windows 10 Enterprise'){
$Username = Get-CimInstance -ComputerName $ComputerName -ClassName Win32_ComputerSystem | Select-Object UserName
$Path = Join-Path $env:userprofile "Software Inventories\$Username.csv"
Get-CimInstance -ComputerName $ComputerName -Credential "domain\myadmin" -ClassName Win32_InstalledWin32Program | Select Name, Vendor, Version | Sort-Object Name | Export-Csv -Path $Path
Write-Host "Windows version is $WindowsVersion"
}Elseif ($WindowsVersion -match 'Microsoft Windows 7 Enterprise') {
$Username = Get-WmiObject -ComputerName $ComputerName -Class Win32_ComputerSystem | Select-Object UserName
$Path = Join-Path $env:userprofile "Software Inventories\$Username.csv"
Get-WmiObject -ComputerName $ComputerName -Credential 'domain\myadmin' -Class Win32Reg_AddRemovePrograms | Select DisplayName, Vendor, Version | Sort-Object DisplayName | Export-Csv -Path $Path
Write-Host "Windows version is $WindowsVersion"
我没有正确使用 Join-Path 吗?
顺便说一句,我怎样才能从 $Username 中只获取用户名作为字符串而忽略其余部分?
【问题讨论】:
-
要拆分用户名,请使用此行 $Username = (Get-CimInstance -ComputerName $ComputerName -ClassName Win32_ComputerSystem | Select-Object UserName).UserName.Split("\")[1]
标签: powershell path