是否可以在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}
答案 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)
从字符串转换 并使用参数可以编辑名称
请注意,尽管有时它可能会错误地表示数据并将对象放置在错误的字段中