首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell找不到路径的一部分。

Powershell找不到路径的一部分。
EN

Stack Overflow用户
提问于 2018-09-13 17:24:49
回答 2查看 4.9K关注 0票数 0

做了几个小时了。我试图从windows机器获取软件列表,并使用$env:userprofile的位置和文件"Software Inventories\$Username.csv“的路径作为CSV导出该列表。

我得到以下错误

代码语言:javascript
复制
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

守则如下:

代码语言:javascript
复制
$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"

我是否没有正确地使用连接路径?

另外,我如何从$Username中获取用户名作为字符串,而忽略其余的呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-13 17:45:22

代码语言:javascript
复制
$Username = (Get-CimInstance -ComputerName $ComputerName -ClassName Win32_ComputerSystem | Select-Object -ExpandProperty UserName).Split('\')[1]
$Username = (Get-WmiObject -ComputerName $ComputerName -Class Win32_ComputerSystem | Select-Object -ExpandProperty UserName).Split('\')[1]
票数 2
EN

Stack Overflow用户

发布于 2018-09-13 17:44:26

变量$UserName是一个哈希表,具有一个名为UserName的属性和一个域\mylogin的值。若要仅选择属性值,请使用select中的ExpandProperty参数。

代码语言:javascript
复制
$Username = Get-CimInstance -ComputerName $ComputerName -ClassName Win32_ComputerSystem | Select-Object -ExpandProperty UserName
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52318830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档