我可以在PowerShell中将system.string转换为system.object吗?

时间:2018-07-04 08:17:12

标签: powershell azure

是否可以在PowerShell中将system.string转换为system.object?

我已经有一个csv文件,一些用户想要从Azure订阅中删除某些角色分配。 首先,我尝试了

Import-Csv C:\Users.csv | Foreach-Object {Remove-AzureRmRoleAssignment -SignInName $Users}

SignInName是csv文件中的一列,该用户具有我要以以下格式x@y.com删除的用户,但是在此期间它没有产生任何错误,因此无法正常工作。 因此,我尝试了另一种方法,即在变量中导入了SignIn Column。然后,我尝试将其删除:

$Users = Import-Csv 'C:\Users.csv' | select SignInName
Foreach-Object {Remove-AzureRmRoleAssignment -SignInName $Users}

结果我得到了这个错误: enter image description here

3 个答案:

答案 0 :(得分:0)

我相信Foreach-Object要么必须通过管道传递一个对象,要么被告知要使用imputobject参数使用哪个对象 试试这个:

$Users = Import-Csv 'C:\Users.csv' | select SignInName
$Users|Foreach-Object {Remove-AzureRmAccount}

或者在我看来,是稍微可重用的代码:

$Users = Import-Csv 'C:\Users.csv' | select SignInName
Foreach($user in $users {Remove-AzureRmAccount -Username $user}

答案 1 :(得分:0)

使用

$Users = Import-Csv 'C:\Users.csv' | select SignInName

从技术上讲,您仍在返回表对象,它只是一个具有一列的表。您想要的是一个字符串数组,因此使用foreach进行的每次迭代都会为您提供一个字符串:

$Users = Import-Csv 'C:\Users.csv' | select -ExpandProperty SignInName

然后,您可以在上面使用您的foreach行,或者恕我直言,甚至使用更漂亮的Powershell:

$users | % { Remove-AzureRmAccount -Username $_ }

答案 2 :(得分:0)

从字符串转换 并使用参数可以编辑名称

请注意,尽管有时它可能会错误地表示数据并将对象放置在错误的字段中